update SDL3 from 3.2.20 to 3.4.2

This commit is contained in:
Sven Balzer
2026-04-01 18:25:03 +02:00
parent 1daf4d79f1
commit 05b19704f8
1626 changed files with 124218 additions and 191491 deletions
+113 -56
View File
@@ -4,6 +4,10 @@
cmake_minimum_required(VERSION 3.16)
if(NOT DEFINED CMAKE_C_STANDARD)
set(CMAKE_C_STANDARD 99)
endif()
set(SDL3_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/..")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../cmake")
@@ -32,21 +36,18 @@ if(NOT (MSVC AND SDL_CPU_ARM64))
find_package(OpenGL)
endif()
set(SDL_TEST_EXECUTABLES)
add_library(sdltests_utils OBJECT
testutils.c
)
target_link_libraries(sdltests_utils PRIVATE SDL3::Headers)
file(GLOB RESOURCE_FILES *.bmp *.wav *.hex moose.dat utf8.txt)
file(GLOB RESOURCE_FILES *.png *.wav *.csv *.hex moose.dat utf8.txt)
option(SDLTEST_TRACKMEM "Run tests with --trackmem" OFF)
if(WIN32)
option(SDLTEST_PROCDUMP "Run tests using sdlprocdump for minidump generation" OFF)
add_executable(sdlprocdump win32/sdlprocdump.c)
set_property(TARGET sdlprocdump PROPERTY C_STANDARD "90")
SDL_AddCommonCompilerFlags(sdlprocdump)
if(SDLTEST_PROCDUMP)
set(CMAKE_TEST_LAUNCHER "$<TARGET_FILE:sdlprocdump>;--")
@@ -87,9 +88,13 @@ foreach(resource_file IN LISTS RESOURCE_FILES)
get_filename_component(res_file_name ${resource_file} NAME)
list(APPEND RESOURCE_FILE_NAMES "${res_file_name}")
set(resource_file_bindir "${test_bin_dir}/${res_file_name}")
set(depends_resource_file "${resource_file}")
if(PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR)
set(depends_resource_file "${CMAKE_CURRENT_LIST_FILE}")
endif()
add_custom_command(OUTPUT "${resource_file_bindir}"
COMMAND "${CMAKE_COMMAND}" -E copy "${resource_file}" "${resource_file_bindir}"
DEPENDS "${resource_file}"
DEPENDS "${depends_resource_file}"
)
list(APPEND RESOURCE_FILES_BINDIR "${resource_file_bindir}")
endforeach()
@@ -101,8 +106,23 @@ define_property(TARGET PROPERTY SDL_NONINTERACTIVE BRIEF_DOCS "If true, target i
define_property(TARGET PROPERTY SDL_NONINTERACTIVE_ARGUMENTS BRIEF_DOCS "Argument(s) to run executable in non-interactive mode." FULL_DOCS "Argument(s) to run executable in non-interactive mode.")
define_property(TARGET PROPERTY SDL_NONINTERACTIVE_TIMEOUT BRIEF_DOCS "Timeout for noninteractive executable." FULL_DOCS "Timeout for noninteractive executable.")
macro(add_sdl_test_executable TARGET)
cmake_parse_arguments(AST "BUILD_DEPENDENT;NONINTERACTIVE;NEEDS_RESOURCES;TESTUTILS;THREADS;NO_C90;MAIN_CALLBACKS;NOTRACKMEM" "" "DEPENDS;DISABLE_THREADS_ARGS;NONINTERACTIVE_TIMEOUT;NONINTERACTIVE_ARGS;INSTALLED_ARGS;SOURCES" ${ARGN})
if(HAVE_X11)
find_package(X11 QUIET)
if(NOT TARGET X11::X11)
set(HAVE_X11 OFF)
endif()
endif()
if(HAVE_WAYLAND)
find_package(PkgConfig QUIET)
pkg_check_modules(PkgWaylandClient QUIET IMPORTED_TARGET wayland-client)
if(NOT TARGET PkgConfig::PkgWaylandClient)
set(HAVE_WAYLAND OFF)
endif()
endif()
function(add_sdl_test_executable TARGET)
cmake_parse_arguments(AST "BUILD_DEPENDENT;NONINTERACTIVE;NEEDS_RESOURCES;TESTUTILS;THREADS;MAIN_CALLBACKS;NOTRACKMEM" "" "DEPENDS;DISABLE_THREADS_ARGS;NONINTERACTIVE_TIMEOUT;NONINTERACTIVE_ARGS;INSTALLED_ARGS;SOURCES" ${ARGN})
if(AST_UNPARSED_ARGUMENTS)
message(FATAL_ERROR "Unknown argument(s): ${AST_UNPARSED_ARGUMENTS}")
endif()
@@ -125,15 +145,12 @@ macro(add_sdl_test_executable TARGET)
SDL_AddCommonCompilerFlags(${TARGET})
target_include_directories(${TARGET} PRIVATE "${SDL3_SOURCE_DIR}/src/video/khronos")
target_link_libraries(${TARGET} PRIVATE SDL3::SDL3_test SDL3::${sdl_name_component})
if(NOT AST_NO_C90 AND NOT SDL_CMAKE_PLATFORM MATCHES "^(n3ds|ps2|psp)$")
set_property(TARGET ${TARGET} PROPERTY C_STANDARD 90)
set_property(TARGET ${TARGET} PROPERTY C_EXTENSIONS FALSE)
endif()
if(AST_DEPENDS)
add_dependencies(${TARGET} ${AST_DEPENDS})
endif()
list(APPEND SDL_TEST_EXECUTABLES ${TARGET})
set_propertY(TARGET ${TARGET} PROPERTY SDL_INSTALL "1")
set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" APPEND PROPERTY SDL_TEST_EXECUTABLES "${TARGET}")
set_property(TARGET ${TARGET} PROPERTY SDL_NOTRACKMEM ${AST_NOTRACKMEM})
if(AST_NONINTERACTIVE)
set_property(TARGET ${TARGET} PROPERTY SDL_NONINTERACTIVE 1)
@@ -192,6 +209,18 @@ macro(add_sdl_test_executable TARGET)
target_link_options(${TARGET} PRIVATE "SHELL:--pre-js ${CMAKE_CURRENT_SOURCE_DIR}/emscripten/pre.js")
target_link_options(${TARGET} PRIVATE "-sEXIT_RUNTIME=1")
set_property(TARGET ${TARGET} APPEND PROPERTY LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/emscripten/pre.js")
set_property(TARGET ${TARGET} APPEND PROPERTY EXTRA_INSTALL
"$<TARGET_FILE_DIR:${TARGET}>/$<TARGET_FILE_BASE_NAME:${TARGET}>.js"
"$<TARGET_FILE_DIR:${TARGET}>/$<TARGET_FILE_BASE_NAME:${TARGET}>.wasm"
"$<TARGET_FILE_DIR:${TARGET}>/$<TARGET_FILE_BASE_NAME:${TARGET}>.wasm.map")
elseif(NGAGE)
string(MD5 TARGET_MD5 "${TARGET}")
string(SUBSTRING "${TARGET_MD5}" 0 8 TARGET_MD5_8)
target_link_options(${TARGET} PRIVATE "SHELL:-s UID3=0x${TARGET_MD5_8}")
if(NOT AST_MAIN_CALLBACKS)
set_property(TARGET ${TARGET} PROPERTY "EXCLUDE_FROM_ALL" "1")
set_propertY(TARGET ${TARGET} PROPERTY SDL_INSTALL "0")
endif()
endif()
if(OPENGL_FOUND)
@@ -200,10 +229,10 @@ macro(add_sdl_test_executable TARGET)
# FIXME: only add "${SDL3_BINARY_DIR}/include-config-$<LOWER_CASE:$<CONFIG>>" + include paths of external dependencies
target_include_directories(${TARGET} PRIVATE "$<TARGET_PROPERTY:SDL3::${sdl_name_component},INCLUDE_DIRECTORIES>")
endmacro()
endfunction()
check_include_file(signal.h HAVE_SIGNAL_H)
if(HAVE_SIGNAL_H)
check_include_file(signal.h LIBC_HAS_SIGNAL_H)
if(LIBC_HAS_SIGNAL_H)
add_definitions(-DHAVE_SIGNAL_H)
endif()
@@ -228,7 +257,7 @@ function(files2headers OUTPUT)
add_custom_command(OUTPUT "${intermediate}"
COMMAND Python3::Interpreter "${xxd}" -i "${CMAKE_CURRENT_SOURCE_DIR}/${input}" "-o" "${intermediate}"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${intermediate}" "${output}"
DEPENDS "${xxd}" "${bmp}"
DEPENDS "${xxd}" "${png}"
)
endif()
endforeach()
@@ -237,24 +266,25 @@ function(files2headers OUTPUT)
endfunction()
files2headers(gamepad_image_headers
gamepad_axis_arrow.bmp
gamepad_axis.bmp
gamepad_back.bmp
gamepad_battery.bmp
gamepad_battery_wired.bmp
gamepad_button_background.bmp
gamepad_button.bmp
gamepad_button_small.bmp
gamepad_face_abxy.bmp
gamepad_face_bayx.bmp
gamepad_face_sony.bmp
gamepad_front.bmp
gamepad_touchpad.bmp
gamepad_wired.bmp
gamepad_wireless.bmp
gamepad_axis_arrow.png
gamepad_axis.png
gamepad_back.png
gamepad_battery.png
gamepad_battery_wired.png
gamepad_button_background.png
gamepad_button.png
gamepad_button_small.png
gamepad_face_abxy.png
gamepad_face_axby.png
gamepad_face_bayx.png
gamepad_face_sony.png
gamepad_front.png
gamepad_touchpad.png
gamepad_wired.png
gamepad_wireless.png
)
files2headers(icon_bmp_header icon.bmp)
files2headers(glass_bmp_header glass.bmp)
files2headers(icon_png_header icon.png)
files2headers(glass_png_header glass.png)
set(FFmpeg_FIND_COMPONENTS AVCODEC AVFORMAT AVUTIL SWSCALE)
include("${CMAKE_CURRENT_LIST_DIR}/../cmake/FindFFmpeg.cmake")
@@ -267,7 +297,7 @@ if(FFmpeg_FOUND)
cmake_pop_check_state()
endif()
if(FFmpeg_FOUND AND LIBAVUTIL_AVFRAME_HAS_CH_LAYOUT)
add_sdl_test_executable(testffmpeg NO_C90 SOURCES testffmpeg.c testffmpeg_vulkan.c ${icon_bmp_header} DEPENDS generate-icon_bmp_header)
add_sdl_test_executable(testffmpeg SOURCES testffmpeg.c testffmpeg_vulkan.c ${icon_png_header} DEPENDS generate-icon_png_header)
if(LIBAVUTIL_AVFULKANFRAMESCONTEXT_HAS_FORMAT)
target_compile_definitions(testffmpeg PRIVATE FFMPEG_VULKAN_SUPPORT)
endif()
@@ -293,7 +323,7 @@ add_sdl_test_executable(testaudioinfo SOURCES testaudioinfo.c)
add_sdl_test_executable(testaudiostreamdynamicresample NEEDS_RESOURCES TESTUTILS SOURCES testaudiostreamdynamicresample.c)
file(GLOB TESTAUTOMATION_SOURCE_FILES testautomation*.c)
add_sdl_test_executable(testautomation NONINTERACTIVE NONINTERACTIVE_TIMEOUT 120 NEEDS_RESOURCES BUILD_DEPENDENT NO_C90 SOURCES ${TESTAUTOMATION_SOURCE_FILES})
add_sdl_test_executable(testautomation NONINTERACTIVE NONINTERACTIVE_TIMEOUT 120 NEEDS_RESOURCES BUILD_DEPENDENT SOURCES ${TESTAUTOMATION_SOURCE_FILES})
if(EMSCRIPTEN)
target_link_options(testautomation PRIVATE -sALLOW_MEMORY_GROWTH=1 -sMAXIMUM_MEMORY=1gb)
endif()
@@ -308,10 +338,11 @@ add_sdl_test_executable(testdraw SOURCES testdraw.c)
add_sdl_test_executable(testdrawchessboard SOURCES testdrawchessboard.c)
add_sdl_test_executable(testdropfile MAIN_CALLBACKS SOURCES testdropfile.c)
add_sdl_test_executable(testerror NONINTERACTIVE DISABLE_THREADS_ARGS "--no-threads" SOURCES testerror.c)
add_sdl_test_executable(testsymbols NONINTERACTIVE NOTRACKMEM NONINTERACTIVE_ARGS 0 10 20 40 80 160 320 640 SOURCES testsymbols.c)
set(build_options_dependent_tests )
add_sdl_test_executable(testevdev BUILD_DEPENDENT NONINTERACTIVE NO_C90 SOURCES testevdev.c)
add_sdl_test_executable(testevdev BUILD_DEPENDENT NONINTERACTIVE SOURCES testevdev.c)
if(MACOS)
add_sdl_test_executable(testnative BUILD_DEPENDENT NEEDS_RESOURCES TESTUTILS
@@ -323,18 +354,18 @@ if(MACOS)
elseif(WINDOWS)
add_sdl_test_executable(testnative BUILD_DEPENDENT NEEDS_RESOURCES TESTUTILS SOURCES testnative.c testnativew32.c)
elseif(HAVE_X11 OR HAVE_WAYLAND)
add_sdl_test_executable(testnative BUILD_DEPENDENT NO_C90 NEEDS_RESOURCES TESTUTILS SOURCES testnative.c)
add_sdl_test_executable(testnative BUILD_DEPENDENT NEEDS_RESOURCES TESTUTILS SOURCES testnative.c)
if(HAVE_X11)
target_sources(testnative PRIVATE testnativex11.c)
target_link_libraries(testnative PRIVATE X11)
target_link_libraries(testnative PRIVATE X11::X11)
endif()
if(HAVE_WAYLAND)
set_property(SOURCE ${SDL3_BINARY_DIR}/wayland-generated-protocols/xdg-shell-protocol.c PROPERTY GENERATED 1)
target_sources(testnative PRIVATE testnativewayland.c ${SDL3_BINARY_DIR}/wayland-generated-protocols/xdg-shell-protocol.c)
target_sources(testnative PRIVATE testnativewayland.c "${SDL3_BINARY_DIR}/wayland-generated-protocols/xdg-shell-protocol.c")
# Needed to silence the documentation warning in the generated header file
target_compile_options(testnative PRIVATE -Wno-documentation-unknown-command)
target_link_libraries(testnative PRIVATE wayland-client)
target_link_libraries(testnative PRIVATE PkgConfig::PkgWaylandClient)
endif ()
endif()
@@ -343,11 +374,14 @@ add_sdl_test_executable(testaudio MAIN_CALLBACKS NEEDS_RESOURCES TESTUTILS SOURC
add_sdl_test_executable(testcolorspace SOURCES testcolorspace.c)
add_sdl_test_executable(testfile NONINTERACTIVE SOURCES testfile.c)
add_sdl_test_executable(testcontroller TESTUTILS SOURCES testcontroller.c gamepadutils.c ${gamepad_image_headers} DEPENDS generate-gamepad_image_headers)
add_sdl_test_executable(testdlopennote TESTUTILS SOURCES testdlopennote.c)
add_sdl_test_executable(testgeometry TESTUTILS SOURCES testgeometry.c)
add_sdl_test_executable(testgl SOURCES testgl.c)
add_sdl_test_executable(testgles SOURCES testgles.c)
add_sdl_test_executable(testgpu_simple_clear SOURCES testgpu_simple_clear.c)
add_sdl_test_executable(testgpu_spinning_cube SOURCES testgpu_spinning_cube.c)
add_sdl_test_executable(testgpu_spinning_cube SOURCES testgpu_spinning_cube.c ${icon_png_header} DEPENDS generate-icon_png_header)
add_sdl_test_executable(testgpurender_effects MAIN_CALLBACKS NEEDS_RESOURCES TESTUTILS SOURCES testgpurender_effects.c)
add_sdl_test_executable(testgpurender_msdf MAIN_CALLBACKS NEEDS_RESOURCES TESTUTILS SOURCES testgpurender_msdf.c)
if(ANDROID)
target_link_libraries(testgles PRIVATE GLESv1_CM)
elseif(IOS OR TVOS)
@@ -365,8 +399,8 @@ add_sdl_test_executable(testime NEEDS_RESOURCES TESTUTILS SOURCES testime.c)
add_sdl_test_executable(testkeys SOURCES testkeys.c)
add_sdl_test_executable(testloadso SOURCES testloadso.c)
add_sdl_test_executable(testlocale NONINTERACTIVE SOURCES testlocale.c)
add_sdl_test_executable(testlock NO_C90 SOURCES testlock.c)
add_sdl_test_executable(testrwlock SOURCES testrwlock.c)
add_sdl_test_executable(testlock SOURCES testlock.c)
add_sdl_test_executable(testrwlock SOURCES testrwlock.c NONINTERACTIVE NONINTERACTIVE_TIMEOUT 20)
add_sdl_test_executable(testmouse SOURCES testmouse.c)
add_sdl_test_executable(testoverlay NEEDS_RESOURCES TESTUTILS SOURCES testoverlay.c)
@@ -377,6 +411,7 @@ if(WIN32 AND CMAKE_SIZEOF_VOID_P EQUAL 4)
add_sdl_test_executable(pretest SOURCES pretest.c NONINTERACTIVE NONINTERACTIVE_TIMEOUT 60)
endif()
add_sdl_test_executable(testrendertarget NEEDS_RESOURCES TESTUTILS SOURCES testrendertarget.c)
add_sdl_test_executable(testrotate SOURCES testrotate.c)
add_sdl_test_executable(testscale NEEDS_RESOURCES TESTUTILS SOURCES testscale.c)
add_sdl_test_executable(testsem NONINTERACTIVE DISABLE_THREADS_ARGS "--no-threads" NONINTERACTIVE_ARGS 10 NONINTERACTIVE_TIMEOUT 30 SOURCES testsem.c)
add_sdl_test_executable(testsensor SOURCES testsensor.c)
@@ -384,16 +419,18 @@ add_sdl_test_executable(testshader NEEDS_RESOURCES TESTUTILS SOURCES testshader.
if(EMSCRIPTEN)
target_link_options(testshader PRIVATE "-sLEGACY_GL_EMULATION")
endif()
add_sdl_test_executable(testshape NEEDS_RESOURCES SOURCES testshape.c ${glass_bmp_header} DEPENDS generate-glass_bmp_header)
add_sdl_test_executable(testshape NEEDS_RESOURCES SOURCES testshape.c ${glass_png_header} DEPENDS generate-glass_png_header)
add_sdl_test_executable(testsoftwaretransparent SOURCES testsoftwaretransparent.c)
add_sdl_test_executable(testsprite MAIN_CALLBACKS NEEDS_RESOURCES TESTUTILS SOURCES testsprite.c)
add_sdl_test_executable(testspriteminimal SOURCES testspriteminimal.c ${icon_bmp_header} DEPENDS generate-icon_bmp_header)
add_sdl_test_executable(testspritesurface SOURCES testspritesurface.c ${icon_bmp_header} DEPENDS generate-icon_bmp_header)
add_sdl_test_executable(teststreaming NEEDS_RESOURCES TESTUTILS SOURCES teststreaming.c)
add_sdl_test_executable(testspriteminimal SOURCES testspriteminimal.c ${icon_png_header} DEPENDS generate-icon_png_header)
add_sdl_test_executable(testspritesurface SOURCES testspritesurface.c ${icon_png_header} DEPENDS generate-icon_png_header)
add_sdl_test_executable(testpalette SOURCES testpalette.c)
add_sdl_test_executable(testtimer NONINTERACTIVE NONINTERACTIVE_ARGS --no-interactive NONINTERACTIVE_TIMEOUT 60 SOURCES testtimer.c)
add_sdl_test_executable(testurl SOURCES testurl.c)
add_sdl_test_executable(testver NONINTERACTIVE NOTRACKMEM SOURCES testver.c)
set_property(TARGET testver PROPERTY C_STANDARD 90)
add_sdl_test_executable(testcamera MAIN_CALLBACKS SOURCES testcamera.c)
add_sdl_test_executable(testclipboard MAIN_CALLBACKS SOURCES testclipboard.c ${icon_bmp_header} DEPENDS generate-icon_bmp_header)
add_sdl_test_executable(testclipboard MAIN_CALLBACKS SOURCES testclipboard.c ${icon_png_header} DEPENDS generate-icon_png_header)
add_sdl_test_executable(testviewport NEEDS_RESOURCES TESTUTILS SOURCES testviewport.c)
add_sdl_test_executable(testwm SOURCES testwm.c)
add_sdl_test_executable(testyuv NONINTERACTIVE NONINTERACTIVE_ARGS "--automated" NEEDS_RESOURCES TESTUTILS SOURCES testyuv.c testyuv_cvt.c)
@@ -402,9 +439,12 @@ add_sdl_test_executable(testrendercopyex NEEDS_RESOURCES TESTUTILS SOURCES testr
add_sdl_test_executable(testmessage SOURCES testmessage.c)
add_sdl_test_executable(testdisplayinfo SOURCES testdisplayinfo.c)
add_sdl_test_executable(testqsort NONINTERACTIVE SOURCES testqsort.c)
if(EMSCRIPTEN)
target_link_options(testqsort PRIVATE -sALLOW_MEMORY_GROWTH)
endif()
add_sdl_test_executable(testbounds NONINTERACTIVE SOURCES testbounds.c)
add_sdl_test_executable(testcustomcursor SOURCES testcustomcursor.c)
add_sdl_test_executable(testvulkan NO_C90 SOURCES testvulkan.c)
add_sdl_test_executable(testvulkan SOURCES testvulkan.c)
add_sdl_test_executable(testoffscreen SOURCES testoffscreen.c)
add_sdl_test_executable(testpopup SOURCES testpopup.c)
add_sdl_test_executable(testdialog SOURCES testdialog.c)
@@ -423,13 +463,15 @@ add_sdl_test_executable(testprocess
add_sdl_test_executable(childprocess SOURCES childprocess.c)
add_dependencies(testprocess childprocess)
get_property(SDL_TEST_EXECUTABLES DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" PROPERTY SDL_TEST_EXECUTABLES)
if (HAVE_WAYLAND)
# Set the GENERATED property on the protocol file, since it is first created at build time
set_property(SOURCE ${SDL3_BINARY_DIR}/wayland-generated-protocols/xdg-shell-protocol.c PROPERTY GENERATED 1)
add_sdl_test_executable(testwaylandcustom NO_C90 NEEDS_RESOURCES SOURCES testwaylandcustom.c ${SDL3_BINARY_DIR}/wayland-generated-protocols/xdg-shell-protocol.c)
add_sdl_test_executable(testwaylandcustom NEEDS_RESOURCES SOURCES testwaylandcustom.c ${SDL3_BINARY_DIR}/wayland-generated-protocols/xdg-shell-protocol.c)
# Needed to silence the documentation warning in the generated header file
target_compile_options(testwaylandcustom PRIVATE -Wno-documentation-unknown-command)
target_link_libraries(testwaylandcustom PRIVATE wayland-client)
target_link_libraries(testwaylandcustom PRIVATE PkgConfig::PkgWaylandClient)
endif()
check_c_compiler_flag(-Wformat-overflow HAVE_WFORMAT_OVERFLOW)
@@ -581,7 +623,9 @@ function(add_sdl_test TEST TARGET)
set(command ${TARGET})
endif()
get_property(noninteractive_arguments TARGET ${TARGET} PROPERTY SDL_NONINTERACTIVE_ARGUMENTS)
get_property(installed_arguments TARGET ${TARGET} PROPERTY SDL_INSTALLED_ARGUMENTS)
get_property(installed_arguments_list TARGET ${TARGET} PROPERTY SDL_INSTALLED_ARGUMENTS)
# This assumes that none of the arguments need quoting
list(JOIN installed_arguments_list " " installed_arguments)
get_property(disable_threads_args TARGET ${TARGET} PROPERTY SDL_DISABLE_THREADS_ARGS)
get_property(uses_threads TARGET ${TARGET} PROPERTY SDL_THREADS)
if(noninteractive_arguments)
@@ -652,10 +696,23 @@ if(SDL_INSTALL_TESTS)
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/installed-tests/SDL3
)
else()
install(
TARGETS ${SDL_TEST_EXECUTABLES}
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/installed-tests/SDL3
)
foreach(test IN LISTS SDL_TEST_EXECUTABLES)
get_property(install_target TARGET ${test} PROPERTY "SDL_INSTALL")
if(install_target)
install(
TARGETS ${test}
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/installed-tests/SDL3
)
get_property(extra_install TARGET ${test} PROPERTY "EXTRA_INSTALL")
if(extra_install)
install(
FILES ${extra_install}
DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/installed-tests/SDL3
OPTIONAL
)
endif()
endif()
endforeach()
endif()
if(MSVC)
foreach(test IN LISTS SDL_TEST_EXECUTABLES)
+1 -1
View File
@@ -3,7 +3,7 @@ following license, which is different (more permissive) than SDL's usual
license.
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -44,6 +44,7 @@
android:label="@string/label"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:enableOnBackInvokedCallback="false"
android:hardwareAccelerated="true">
<activity
android:name="@ANDROID_MANIFEST_PACKAGE@.SDLTestActivity"
@@ -8,7 +8,6 @@ import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import org.libsdl.app.SDL;
import org.libsdl.app.SDLActivity;
import android.widget.Button;
Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/env bash
set -e
make-header() {
xxd -i "$1" | sed \
-e 's/^unsigned /const unsigned /g' \
-e 's,^const,static const,' \
> "$1.h"
}
# Requires shadercross CLI installed from SDL_shadercross
for filename in *.hlsl; do
if [ -f "$filename" ]; then
shadercross "$filename" -o "${filename/.hlsl/.spv}"
make-header "${filename/.hlsl/.spv}"
shadercross "$filename" -o "${filename/.hlsl/.msl}"
make-header "${filename/.hlsl/.msl}"
shadercross "$filename" -o "${filename/.hlsl/.dxil}"
make-header "${filename/.hlsl/.dxil}"
fi
done
rm -f *.spv *.msl *.dxil
+4 -1
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -447,6 +447,9 @@ int main(int argc, char *argv[])
{
int i;
/* This is not necessary for text input handling, we just
* want to verify that input works with raw keyboard enabled.
*/
SDL_SetHint(SDL_HINT_WINDOWS_RAW_KEYBOARD, "1");
/* Initialize test framework */
+10
View File
@@ -2,6 +2,11 @@
#include <SDL3/SDL_main.h>
#include <SDL3/SDL_test.h>
#ifdef SDL_PLATFORM_WINDOWS
#include <io.h>
#include <fcntl.h>
#endif
#include <stdio.h>
#include <errno.h>
@@ -102,6 +107,11 @@ int main(int argc, char *argv[]) {
if (print_arguments) {
int print_i;
#ifdef SDL_PLATFORM_WINDOWS
/* reopen stdout as binary to prevent newline conversion */
_setmode(_fileno(stdout), _O_BINARY);
#endif
for (print_i = 0; i + print_i < argc; print_i++) {
fprintf(stdout, "|%d=%s|\r\n", print_i, argv[i + print_i]);
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

+34 -846
View File
@@ -1,847 +1,35 @@
unsigned char gamepad_axis_bmp[] = {
0x42, 0x4d, 0x8a, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00,
0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x32, 0x00,
0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, 0x27,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff,
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x6e,
0x69, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff,
0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff,
0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff,
0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0x01, 0xff, 0xff, 0xff, 0x04, 0xff, 0xff, 0xff, 0x04, 0xff, 0xff,
0xff, 0x04, 0xff, 0xff, 0xff, 0x04, 0xff, 0xff, 0xff, 0x04, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0x04, 0xff, 0xff, 0xff, 0x04, 0xff, 0xff, 0xff, 0x04, 0xff, 0xff,
0xff, 0x04, 0xff, 0xff, 0xff, 0x04, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x20, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff,
0xff, 0xf8, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xf9, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff,
0xff, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe5, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0x20, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff,
0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfd, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x20, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0x4c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfd, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x4c, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0x84, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xf9, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf9, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x05, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0x91, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x91, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0x24, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x24, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0x26, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x26, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0x30, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x30, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff,
0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xd5, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0xd0, 0xff, 0xff, 0xff, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
unsigned char gamepad_axis_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x32,
0x08, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x3f, 0x88, 0xb1, 0x00, 0x00, 0x01,
0x3c, 0x49, 0x44, 0x41, 0x54, 0x68, 0xde, 0xed, 0x97, 0xbd, 0x6a, 0xc3,
0x30, 0x14, 0x85, 0xcf, 0x49, 0xd3, 0xa1, 0xaf, 0xd0, 0x1f, 0x48, 0x21,
0x64, 0xce, 0x83, 0xe4, 0xb1, 0x02, 0x99, 0xf3, 0x66, 0x59, 0x3c, 0xb7,
0xd0, 0x9f, 0x39, 0x5b, 0x09, 0xa9, 0x7d, 0xba, 0xc8, 0xad, 0x08, 0x36,
0xb5, 0xe5, 0x34, 0x95, 0xe1, 0x7c, 0x70, 0xd1, 0x20, 0x74, 0xad, 0x4f,
0xf7, 0x4a, 0x60, 0xe0, 0x8f, 0x91, 0xb4, 0x93, 0xb4, 0xc3, 0x18, 0x91,
0x34, 0x09, 0x63, 0xa1, 0x1f, 0x8a, 0x78, 0x6e, 0x4c, 0x32, 0x9b, 0x20,
0x50, 0x86, 0x90, 0xa4, 0xcd, 0xd8, 0x2a, 0xb1, 0x8c, 0x2a, 0x51, 0x85,
0xa8, 0x59, 0x66, 0x5d, 0x19, 0x49, 0x0c, 0xe3, 0xe2, 0x44, 0xe0, 0x34,
0x24, 0x69, 0x11, 0xaf, 0xc9, 0x51, 0x66, 0xde, 0x50, 0x89, 0x26, 0x11,
0x49, 0x9a, 0xe7, 0xdc, 0x5a, 0xc5, 0x2f, 0x12, 0xb1, 0x4c, 0x91, 0xdb,
0xe6, 0xaf, 0xc3, 0xb8, 0xed, 0x28, 0x11, 0xcb, 0x6c, 0xe3, 0x1c, 0x39,
0xc8, 0xac, 0xc3, 0xc6, 0x0e, 0x3d, 0x44, 0x0e, 0x61, 0xcd, 0x3a, 0x97,
0xcb, 0xbd, 0x8a, 0x9e, 0xd9, 0xaa, 0x67, 0xd4, 0xcf, 0xf2, 0xea, 0x5f,
0x2e, 0x7f, 0x24, 0x31, 0x93, 0xb4, 0x4f, 0x94, 0x88, 0x65, 0xf6, 0x92,
0x66, 0x43, 0x64, 0x38, 0x50, 0xe8, 0x0d, 0xc0, 0x2d, 0x00, 0x0d, 0x3c,
0x1b, 0x02, 0x78, 0x27, 0x79, 0x37, 0x24, 0x41, 0xaa, 0xc4, 0x0b, 0x80,
0x7b, 0x00, 0x1f, 0x00, 0x26, 0x51, 0xbe, 0xae, 0x17, 0xf7, 0x18, 0x1d,
0x40, 0x05, 0xe0, 0x06, 0xc0, 0x2b, 0xc9, 0x87, 0x8b, 0x89, 0x84, 0x36,
0x78, 0x6a, 0x99, 0x2e, 0x23, 0xb1, 0x36, 0x2a, 0x00, 0x57, 0x2d, 0x73,
0x8f, 0x24, 0x9f, 0x2f, 0x25, 0xc2, 0xa6, 0x8d, 0x90, 0xfc, 0x94, 0xa4,
0x0e, 0xad, 0x46, 0x92, 0x94, 0x34, 0x6d, 0x3a, 0x08, 0x92, 0xbd, 0x5b,
0x75, 0x9a, 0x54, 0x46, 0x52, 0x92, 0xca, 0x33, 0xbc, 0x1b, 0x65, 0x53,
0xee, 0x94, 0x44, 0xd3, 0xe4, 0xcb, 0x95, 0xf8, 0xc1, 0x73, 0xe7, 0xa8,
0x19, 0xd7, 0xbf, 0x81, 0x45, 0x2c, 0x62, 0x11, 0x8b, 0x58, 0xc4, 0x22,
0x16, 0xb1, 0x88, 0x45, 0x8c, 0x31, 0xc6, 0x18, 0x63, 0x8c, 0x31, 0xc6,
0x18, 0x63, 0xbe, 0xf9, 0x02, 0xf4, 0x44, 0x2a, 0xe4, 0x3d, 0x63, 0x4f,
0x03, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60,
0x82
};
unsigned int gamepad_axis_bmp_len = 10122;
unsigned int gamepad_axis_png_len = 373;
Binary file not shown.

After

Width:  |  Height:  |  Size: 373 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 B

+14 -37
View File
@@ -1,38 +1,15 @@
unsigned char gamepad_axis_arrow_bmp[] = {
0x42, 0x4d, 0x9a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00,
0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0c, 0x00,
0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff,
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x6e,
0x69, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc7, 0xc7, 0xc7, 0x7f, 0xc7, 0xc7, 0xc7, 0x02, 0xc7, 0xc7,
0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0x02, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7,
0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0x7f, 0xc7, 0xc7,
0xc7, 0x02, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7,
0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0x7f, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7,
0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0x7f, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7,
0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0x7f, 0xc7, 0xc7,
0xc7, 0x02, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0x7f, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0x80, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0x80, 0xc7, 0xc7,
0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0x80, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7,
0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0x80, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7,
0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0x80, 0xc7, 0xc7,
0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7,
0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0x80, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7,
0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7, 0xc7, 0x01, 0xc7, 0xc7,
0xc7, 0x02
unsigned char gamepad_axis_arrow_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0c,
0x08, 0x06, 0x00, 0x00, 0x00, 0x41, 0x57, 0xcc, 0x2e, 0x00, 0x00, 0x00,
0x4d, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x6d, 0x8f, 0x51, 0x0a, 0x40,
0x21, 0x08, 0x04, 0x47, 0xe9, 0xde, 0xf9, 0xea, 0x70, 0x1d, 0xab, 0xf7,
0x53, 0x61, 0xda, 0x82, 0xb0, 0xec, 0xe0, 0x8a, 0x32, 0xc6, 0x30, 0xe0,
0xe3, 0x96, 0x28, 0x50, 0xd7, 0x78, 0x4d, 0x5d, 0x26, 0x41, 0x75, 0xfe,
0x82, 0x1a, 0x2a, 0x0e, 0x2c, 0x64, 0xd5, 0xd7, 0x46, 0x3a, 0xee, 0x65,
0x40, 0x2f, 0x8f, 0xb0, 0xc5, 0xaa, 0x13, 0x7a, 0x60, 0x40, 0x8f, 0x7f,
0xec, 0x70, 0x02, 0xb2, 0xc1, 0x0f, 0x75, 0x68, 0x0f, 0xf5, 0xfa, 0x22,
0xae, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82
};
unsigned int gamepad_axis_arrow_bmp_len = 410;
unsigned int gamepad_axis_arrow_png_len = 134;
Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

+1005 -1498
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

+19 -179
View File
@@ -1,180 +1,20 @@
unsigned char gamepad_battery_bmp[] = {
0x42, 0x4d, 0x4a, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00,
0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10, 0x00,
0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x07,
0x00, 0x00, 0x13, 0x0b, 0x00, 0x00, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff,
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x42, 0x47,
0x52, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x26, 0x26, 0xbc, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x1a, 0x1a, 0x1a, 0xfb, 0x30, 0x30,
0x30, 0x59, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0x99, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0x15, 0xff,
0x0a, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x99, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xcc, 0x15, 0xff, 0x0a, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0x99, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0x15, 0xff, 0x0a, 0x00, 0xff, 0xff,
0xff, 0x00, 0x56, 0x56, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03,
0x03, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xc2, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0x15, 0xff,
0x0a, 0x00, 0xff, 0xff, 0xff, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01,
0x01, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x06, 0x06, 0x06, 0x00, 0x4a, 0x4a, 0x4a, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xcc, 0x15, 0xff, 0x0a, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x23,
0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0xff, 0x00, 0x17, 0x17,
0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0x15, 0xff, 0x0a, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x01, 0x01, 0x01, 0x00, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0x15, 0xff,
0x0a, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x1f, 0x00, 0x23, 0x23,
0x23, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xcc, 0x15, 0xff, 0x0a, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x44, 0x44,
0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x2e, 0x2e,
0x2e, 0x00, 0x0b, 0x0b, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0x15, 0xff, 0x0a, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x02, 0x02, 0x02, 0x00, 0x0b, 0x0b,
0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x01, 0x01, 0x01, 0x00, 0x32, 0x32, 0x32, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x92, 0x92, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0x15, 0xff,
0x0a, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x02, 0x02, 0x02, 0x00, 0x1a, 0x1a,
0x1a, 0x00, 0x45, 0x45, 0x45, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xcc, 0x15, 0xff, 0x0a, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0x99, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0x15, 0xff, 0x0a, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0x99, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xd6, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x99, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x0d, 0x0d, 0x0d, 0xaf, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xf5, 0x0a, 0x0a,
0x0a, 0x52, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00
unsigned char gamepad_battery_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10,
0x08, 0x06, 0x00, 0x00, 0x00, 0xee, 0xf8, 0xa4, 0xec, 0x00, 0x00, 0x00,
0x8f, 0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0x63, 0xe0, 0xe5, 0xe5, 0x5d,
0xcf, 0xc0, 0xc0, 0xf0, 0x9f, 0x4e, 0xf8, 0x2b, 0x17, 0x17, 0x57, 0x10,
0x03, 0x14, 0x30, 0x42, 0x05, 0xbf, 0x31, 0x30, 0x30, 0x5c, 0x67, 0xa0,
0x2d, 0xe0, 0x62, 0x60, 0x60, 0xd0, 0x64, 0x60, 0x60, 0x98, 0xc5, 0xc0,
0xc0, 0x90, 0xce, 0xc0, 0xc0, 0xc0, 0xc0, 0x02, 0x95, 0xb8, 0xce, 0xc0,
0xc0, 0x60, 0x42, 0x63, 0xcb, 0x8d, 0x19, 0x18, 0x18, 0xce, 0x20, 0x0b,
0x30, 0x31, 0x0c, 0x20, 0x60, 0x19, 0x00, 0x3b, 0x83, 0xa0, 0xa1, 0xf0,
0x6d, 0x20, 0x2c, 0x17, 0x81, 0xe2, 0x81, 0x0d, 0xf6, 0x51, 0xcb, 0x47,
0x9e, 0xe5, 0x03, 0x91, 0xda, 0xdf, 0x30, 0x30, 0x30, 0x3c, 0x1c, 0xa8,
0xac, 0xb6, 0x0e, 0x56, 0xbc, 0x0e, 0x8a, 0x60, 0xd7, 0x44, 0x2f, 0x77,
0x69, 0x54, 0xb1, 0xa0, 0x02, 0x35, 0x35, 0xb5, 0x3d, 0xf4, 0xaa, 0x52,
0xa5, 0xa4, 0xa4, 0x7e, 0x1b, 0x18, 0x18, 0x44, 0xc2, 0xec, 0x06, 0x00,
0x42, 0x20, 0x46, 0x13, 0x33, 0x17, 0x16, 0x03, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int gamepad_battery_bmp_len = 2122;
unsigned int gamepad_battery_png_len = 200;
Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

+36 -178
View File
@@ -1,179 +1,37 @@
unsigned char gamepad_battery_wired_bmp[] = {
0x42, 0x4d, 0x3a, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00,
0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10, 0x00,
0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff,
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x20, 0x6e,
0x69, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x26, 0x26, 0x26, 0xbc, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x1a, 0x1a, 0x1a, 0xfb, 0x30, 0x30, 0x30, 0x59, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xf5, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0x99, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0x99, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x99, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xcc, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x56, 0x56,
0x56, 0x3d, 0x00, 0x00, 0x00, 0x14, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x01, 0x01,
0x01, 0x1f, 0x00, 0x00, 0x00, 0x8f, 0x03, 0x03, 0x03, 0x0a, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xeb, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x02, 0x02, 0x02, 0x0a, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00,
0x00, 0xb8, 0x01, 0x01, 0x01, 0x66, 0x01, 0x01, 0x01, 0x14, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x01, 0x01, 0x01, 0x7b, 0x00, 0x00, 0x00, 0xff, 0x06, 0x06,
0x06, 0xcd, 0x4a, 0x4a, 0x4a, 0x28, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0x52, 0x23, 0x23, 0x23, 0xf4, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x66, 0x01, 0x01,
0x01, 0x14, 0xff, 0xff, 0xff, 0x00, 0x17, 0x17, 0x17, 0xba, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xf5, 0x02, 0x02,
0x02, 0x5c, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xcc, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x01, 0x01,
0x01, 0x1f, 0x03, 0x03, 0x03, 0xc2, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xa3, 0x01, 0x01,
0x01, 0x0a, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x85, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xe0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x1f, 0x1f, 0x1f, 0xda, 0x23, 0x23, 0x23, 0x33, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x44, 0x44, 0x44, 0x43, 0x00, 0x00,
0x00, 0xe0, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xe0, 0xff, 0xff, 0xff, 0x00, 0x2e, 0x2e, 0x2e, 0x2f, 0x0b, 0x0b,
0x0b, 0x7b, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xf5, 0x00, 0x00, 0x00, 0x70, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xcc, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x02, 0x02, 0x02, 0x14, 0x0b, 0x0b, 0x0b, 0xb8, 0x00, 0x00,
0x00, 0xff, 0x11, 0x11, 0x11, 0x99, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x01, 0x01,
0x01, 0x1f, 0x32, 0x32, 0x32, 0x77, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00,
0x00, 0xad, 0x92, 0x92, 0x92, 0x12, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x03, 0x03, 0x03, 0x70, 0x00, 0x00, 0x00, 0x3d, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x02, 0x02, 0x02, 0x14, 0x1a, 0x1a, 0x1a, 0x48, 0x45, 0x45,
0x45, 0x0a, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xeb, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xc2, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xcc, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x99, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xcc, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0x99, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0x99, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0x00, 0x0d, 0x0d, 0x0d, 0xaf, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xf5, 0x0a, 0x0a, 0x0a, 0x52, 0xff, 0xff,
0xff, 0x00, 0xff, 0xff, 0xff, 0x00
unsigned char gamepad_battery_wired_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x10,
0x08, 0x06, 0x00, 0x00, 0x00, 0xee, 0xf8, 0xa4, 0xec, 0x00, 0x00, 0x01,
0x5a, 0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xcd, 0x95, 0x3f, 0x48, 0x02,
0x51, 0x1c, 0xc7, 0x3f, 0xbf, 0xf7, 0xc2, 0xe1, 0x1d, 0x0e, 0x17, 0x07,
0xc2, 0x2d, 0x37, 0x1c, 0x48, 0x2e, 0x26, 0xda, 0xea, 0x94, 0x42, 0x38,
0x3a, 0x08, 0x41, 0x73, 0xad, 0x6e, 0x0d, 0xce, 0xcd, 0xc2, 0x6d, 0xb6,
0x36, 0x47, 0x63, 0x12, 0x4d, 0xce, 0x36, 0x0b, 0x4d, 0xee, 0xad, 0xd9,
0xd2, 0xf0, 0x5c, 0xce, 0x38, 0x2e, 0xbc, 0x4e, 0x49, 0xeb, 0x07, 0xb7,
0xbc, 0x1f, 0xef, 0xf7, 0xf9, 0xbd, 0xdf, 0x9f, 0xef, 0x51, 0x2c, 0x16,
0x1f, 0x00, 0xbb, 0xa7, 0x6f, 0x61, 0x8c, 0xe9, 0x12, 0x9b, 0xc4, 0x87,
0x1f, 0xc0, 0x8c, 0xdd, 0x9a, 0x01, 0x2a, 0xc0, 0x2d, 0x70, 0x05, 0x70,
0x10, 0x3b, 0x66, 0xc0, 0xc9, 0x8e, 0xe1, 0x0d, 0x60, 0x9a, 0x3c, 0x50,
0xfc, 0xa1, 0x6d, 0x05, 0xd7, 0x5a, 0xf7, 0x81, 0x66, 0x66, 0x60, 0xa5,
0x3c, 0xdf, 0xf7, 0xcf, 0xda, 0xed, 0xb6, 0x49, 0xb9, 0xba, 0x71, 0x05,
0x26, 0xc4, 0x3d, 0x9f, 0xe6, 0xca, 0x54, 0x29, 0xcf, 0x71, 0x9c, 0x31,
0x60, 0x5d, 0xd7, 0x1d, 0xa5, 0xfd, 0x22, 0x12, 0xd4, 0xeb, 0xf5, 0x6b,
0xe0, 0x11, 0xb8, 0x8f, 0xa2, 0xe8, 0x30, 0x55, 0xf6, 0xf4, 0x00, 0xe6,
0x83, 0xb7, 0x5a, 0xad, 0x53, 0x60, 0x9e, 0xb8, 0x38, 0x07, 0xa8, 0x56,
0xab, 0xc7, 0x8e, 0xe3, 0x0c, 0xe2, 0x18, 0x16, 0x58, 0x00, 0xfd, 0x35,
0x3d, 0xdf, 0x0a, 0x7e, 0xb3, 0x66, 0x75, 0x92, 0xc9, 0xd8, 0x20, 0x08,
0x5e, 0xc3, 0x30, 0x6c, 0x64, 0x0c, 0x5c, 0x7e, 0xb8, 0x88, 0x04, 0x5a,
0xeb, 0x49, 0xea, 0xc2, 0x78, 0x4d, 0x22, 0x77, 0x22, 0x62, 0x7e, 0x98,
0xf6, 0xdc, 0xf0, 0x6e, 0x18, 0x86, 0xef, 0x09, 0xe0, 0xa5, 0x88, 0x78,
0x00, 0xa5, 0x52, 0xe9, 0x29, 0x29, 0x1c, 0x4a, 0xa9, 0x8b, 0x9c, 0xab,
0x96, 0x0d, 0x57, 0x4a, 0x19, 0x60, 0x08, 0x8c, 0x45, 0xe4, 0x0b, 0x98,
0xaa, 0xc8, 0x00, 0xb0, 0x85, 0x42, 0xe1, 0xa5, 0xd3, 0xe9, 0x1c, 0x6d,
0xb0, 0xe7, 0xd9, 0xf0, 0x5e, 0xaf, 0xd7, 0x04, 0xbc, 0xac, 0x28, 0x22,
0x12, 0x00, 0x43, 0xad, 0xb5, 0xd9, 0x50, 0x64, 0x2c, 0xf0, 0xb6, 0xd5,
0xaa, 0xfd, 0x82, 0xc2, 0x59, 0x60, 0xf4, 0x2f, 0x14, 0x6e, 0xa5, 0xed,
0x95, 0x3d, 0xbc, 0xfe, 0x7b, 0x8b, 0xca, 0xe5, 0xf2, 0xf3, 0xbe, 0x7e,
0xa9, 0xbe, 0xef, 0x7f, 0xd6, 0x6a, 0xb5, 0xf3, 0x15, 0x7b, 0x09, 0xc4,
0x22, 0xa6, 0xf6, 0x7e, 0x89, 0x28, 0x57, 0x00, 0x00, 0x00, 0x00, 0x49,
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int gamepad_battery_wired_bmp_len = 2106;
unsigned int gamepad_battery_wired_png_len = 403;
Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

+52 -707
View File
@@ -1,708 +1,53 @@
unsigned char gamepad_button_background_bmp[] = {
0x42, 0x4d, 0x0a, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00,
0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x20,
0x00, 0x00, 0xd7, 0x0d, 0x00, 0x00, 0xd7, 0x0d, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff,
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x42, 0x47,
0x52, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x13, 0x13, 0x0a, 0x38, 0x38,
0x38, 0x53, 0x52, 0x52, 0x52, 0xc8, 0x69, 0x69, 0x69, 0xe7, 0x6d, 0x6d,
0x6d, 0xe9, 0x6d, 0x6d, 0x6d, 0xe9, 0x6d, 0x6d, 0x6d, 0xe9, 0x6c, 0x6c,
0x6c, 0xe9, 0x6c, 0x6c, 0x6c, 0xe9, 0x6c, 0x6c, 0x6c, 0xe9, 0x6c, 0x6c,
0x6c, 0xe9, 0x6c, 0x6c, 0x6c, 0xe9, 0x6b, 0x6b, 0x6b, 0xe9, 0x6b, 0x6b,
0x6b, 0xe9, 0x6a, 0x6a, 0x6a, 0xe9, 0x6a, 0x6a, 0x6a, 0xe9, 0x6a, 0x6a,
0x6a, 0xe9, 0x69, 0x69, 0x69, 0xe9, 0x69, 0x69, 0x69, 0xe9, 0x69, 0x69,
0x69, 0xe9, 0x68, 0x68, 0x68, 0xe9, 0x68, 0x68, 0x68, 0xe9, 0x68, 0x68,
0x68, 0xe9, 0x67, 0x67, 0x67, 0xe9, 0x67, 0x67, 0x67, 0xe9, 0x67, 0x67,
0x67, 0xe9, 0x66, 0x66, 0x66, 0xe9, 0x66, 0x66, 0x66, 0xe9, 0x66, 0x66,
0x66, 0xe9, 0x66, 0x66, 0x66, 0xe9, 0x65, 0x65, 0x65, 0xe9, 0x65, 0x65,
0x65, 0xe9, 0x65, 0x65, 0x65, 0xe9, 0x64, 0x64, 0x64, 0xe9, 0x64, 0x64,
0x64, 0xe9, 0x64, 0x64, 0x64, 0xe9, 0x64, 0x64, 0x64, 0xe9, 0x63, 0x63,
0x63, 0xe9, 0x63, 0x63, 0x63, 0xe9, 0x62, 0x62, 0x62, 0xe9, 0x62, 0x62,
0x62, 0xe9, 0x62, 0x62, 0x62, 0xe9, 0x62, 0x62, 0x62, 0xe9, 0x61, 0x61,
0x61, 0xe9, 0x61, 0x61, 0x61, 0xe9, 0x61, 0x61, 0x61, 0xe9, 0x60, 0x60,
0x60, 0xe9, 0x60, 0x60, 0x60, 0xe9, 0x60, 0x60, 0x60, 0xe9, 0x5f, 0x5f,
0x5f, 0xe9, 0x5f, 0x5f, 0x5f, 0xe9, 0x5f, 0x5f, 0x5f, 0xe9, 0x5f, 0x5f,
0x5f, 0xe9, 0x5e, 0x5e, 0x5e, 0xe9, 0x5e, 0x5e, 0x5e, 0xe9, 0x5e, 0x5e,
0x5e, 0xe9, 0x5d, 0x5d, 0x5d, 0xe9, 0x5d, 0x5d, 0x5d, 0xe9, 0x5d, 0x5d,
0x5d, 0xe9, 0x5c, 0x5c, 0x5c, 0xe9, 0x5c, 0x5c, 0x5c, 0xe9, 0x5a, 0x5a,
0x5a, 0xe8, 0x4c, 0x4c, 0x4c, 0xd8, 0x33, 0x33, 0x33, 0x7e, 0x1d, 0x1d,
0x1d, 0x15, 0x34, 0x34, 0x34, 0x39, 0x64, 0x64, 0x64, 0xee, 0xad, 0xad,
0xad, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc5, 0xc5,
0xc5, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc3, 0xc3,
0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc2, 0xc2, 0xc2, 0xff, 0xc2, 0xc2,
0xc2, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xc0, 0xc0, 0xc0, 0xff, 0xc0, 0xc0,
0xc0, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xbe, 0xbe,
0xbe, 0xff, 0xbe, 0xbe, 0xbe, 0xff, 0xbd, 0xbd, 0xbd, 0xff, 0xbd, 0xbd,
0xbd, 0xff, 0xbc, 0xbc, 0xbc, 0xff, 0xbc, 0xbc, 0xbc, 0xff, 0xbb, 0xbb,
0xbb, 0xff, 0xbb, 0xbb, 0xbb, 0xff, 0xba, 0xba, 0xba, 0xff, 0xb9, 0xb9,
0xb9, 0xff, 0xb9, 0xb9, 0xb9, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8,
0xb8, 0xff, 0xb7, 0xb7, 0xb7, 0xff, 0xb7, 0xb7, 0xb7, 0xff, 0xb6, 0xb6,
0xb6, 0xff, 0xb5, 0xb5, 0xb5, 0xff, 0xb5, 0xb5, 0xb5, 0xff, 0xb4, 0xb4,
0xb4, 0xff, 0xb4, 0xb4, 0xb4, 0xff, 0xb3, 0xb3, 0xb3, 0xff, 0xb2, 0xb2,
0xb2, 0xff, 0xb2, 0xb2, 0xb2, 0xff, 0xb2, 0xb2, 0xb2, 0xff, 0xb1, 0xb1,
0xb1, 0xff, 0xb0, 0xb0, 0xb0, 0xff, 0xb0, 0xb0, 0xb0, 0xff, 0xaf, 0xaf,
0xaf, 0xff, 0xaf, 0xaf, 0xaf, 0xff, 0xae, 0xae, 0xae, 0xff, 0xad, 0xad,
0xad, 0xff, 0xad, 0xad, 0xad, 0xff, 0xac, 0xac, 0xac, 0xff, 0xac, 0xac,
0xac, 0xff, 0xab, 0xab, 0xab, 0xff, 0xab, 0xab, 0xab, 0xff, 0xab, 0xab,
0xab, 0xff, 0xaa, 0xaa, 0xaa, 0xff, 0xa9, 0xa9, 0xa9, 0xff, 0xa9, 0xa9,
0xa9, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xa8, 0xa8, 0xa8, 0xff, 0xa7, 0xa7,
0xa7, 0xff, 0xa7, 0xa7, 0xa7, 0xff, 0xa5, 0xa5, 0xa5, 0xff, 0x9a, 0x9a,
0x9a, 0xff, 0x68, 0x68, 0x68, 0xfd, 0x31, 0x31, 0x31, 0x72, 0x3e, 0x3e,
0x3e, 0x82, 0x98, 0x98, 0x98, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd8, 0xd8,
0xd8, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xca, 0xca,
0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc8, 0xc8,
0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc6, 0xc6,
0xc6, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc4, 0xc4,
0xc4, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3,
0xc3, 0xff, 0xc2, 0xc2, 0xc2, 0xff, 0xc2, 0xc2, 0xc2, 0xff, 0xc1, 0xc1,
0xc1, 0xff, 0xc0, 0xc0, 0xc0, 0xff, 0xc0, 0xc0, 0xc0, 0xff, 0xbf, 0xbf,
0xbf, 0xff, 0xbe, 0xbe, 0xbe, 0xff, 0xbe, 0xbe, 0xbe, 0xff, 0xbd, 0xbd,
0xbd, 0xff, 0xbd, 0xbd, 0xbd, 0xff, 0xbc, 0xbc, 0xbc, 0xff, 0xbc, 0xbc,
0xbc, 0xff, 0xbb, 0xbb, 0xbb, 0xff, 0xbb, 0xbb, 0xbb, 0xff, 0xba, 0xba,
0xba, 0xff, 0xb9, 0xb9, 0xb9, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8,
0xb8, 0xff, 0xb7, 0xb7, 0xb7, 0xff, 0xb7, 0xb7, 0xb7, 0xff, 0xb6, 0xb6,
0xb6, 0xff, 0xb5, 0xb5, 0xb5, 0xff, 0xb2, 0xb2, 0xb2, 0xff, 0x95, 0x95,
0x95, 0xff, 0x44, 0x44, 0x44, 0xc3, 0x49, 0x49, 0x49, 0x92, 0xa7, 0xa7,
0xa7, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2,
0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce,
0xce, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xcb, 0xcb,
0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc9, 0xc9,
0xc9, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc5, 0xc5,
0xc5, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc3, 0xc3,
0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc2, 0xc2, 0xc2, 0xff, 0xc2, 0xc2,
0xc2, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xc0, 0xc0,
0xc0, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xbe, 0xbe, 0xbe, 0xff, 0xbe, 0xbe,
0xbe, 0xff, 0xbd, 0xbd, 0xbd, 0xff, 0xbd, 0xbd, 0xbd, 0xff, 0xbc, 0xbc,
0xbc, 0xff, 0xbc, 0xbc, 0xbc, 0xff, 0xbb, 0xbb, 0xbb, 0xff, 0xbb, 0xbb,
0xbb, 0xff, 0xba, 0xba, 0xba, 0xff, 0xb9, 0xb9, 0xb9, 0xff, 0xb9, 0xb9,
0xb9, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0xb7, 0xb7,
0xb7, 0xff, 0xb5, 0xb5, 0xb5, 0xff, 0xa0, 0xa0, 0xa0, 0xff, 0x4f, 0x4f,
0x4f, 0xcf, 0x4a, 0x4a, 0x4a, 0x92, 0xa9, 0xa9, 0xa9, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda,
0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8,
0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb,
0xcb, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xca, 0xca,
0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc8, 0xc8,
0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc6, 0xc6,
0xc6, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc4, 0xc4,
0xc4, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3,
0xc3, 0xff, 0xc2, 0xc2, 0xc2, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xc1, 0xc1,
0xc1, 0xff, 0xc0, 0xc0, 0xc0, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xbf, 0xbf,
0xbf, 0xff, 0xbe, 0xbe, 0xbe, 0xff, 0xbd, 0xbd, 0xbd, 0xff, 0xbd, 0xbd,
0xbd, 0xff, 0xbc, 0xbc, 0xbc, 0xff, 0xbc, 0xbc, 0xbc, 0xff, 0xbb, 0xbb,
0xbb, 0xff, 0xbb, 0xbb, 0xbb, 0xff, 0xba, 0xba, 0xba, 0xff, 0xb9, 0xb9,
0xb9, 0xff, 0xb9, 0xb9, 0xb9, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0xb7, 0xb7,
0xb7, 0xff, 0xa1, 0xa1, 0xa1, 0xff, 0x51, 0x51, 0x51, 0xd0, 0x4a, 0x4a,
0x4a, 0x92, 0xaa, 0xaa, 0xaa, 0xff, 0xda, 0xda, 0xda, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce,
0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca,
0xca, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc8, 0xc8,
0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc6, 0xc6,
0xc6, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc5, 0xc5,
0xc5, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3,
0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc2, 0xc2, 0xc2, 0xff, 0xc1, 0xc1,
0xc1, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xc0, 0xc0, 0xc0, 0xff, 0xbf, 0xbf,
0xbf, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xbe, 0xbe, 0xbe, 0xff, 0xbd, 0xbd,
0xbd, 0xff, 0xbd, 0xbd, 0xbd, 0xff, 0xbc, 0xbc, 0xbc, 0xff, 0xbc, 0xbc,
0xbc, 0xff, 0xbb, 0xbb, 0xbb, 0xff, 0xbb, 0xbb, 0xbb, 0xff, 0xba, 0xba,
0xba, 0xff, 0xb9, 0xb9, 0xb9, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0xa2, 0xa2,
0xa2, 0xff, 0x51, 0x51, 0x51, 0xd0, 0x4a, 0x4a, 0x4a, 0x92, 0xab, 0xab,
0xab, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda,
0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2,
0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xcb, 0xcb,
0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc9, 0xc9,
0xc9, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc5, 0xc5,
0xc5, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc3, 0xc3,
0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc2, 0xc2,
0xc2, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xc0, 0xc0,
0xc0, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xbe, 0xbe,
0xbe, 0xff, 0xbd, 0xbd, 0xbd, 0xff, 0xbd, 0xbd, 0xbd, 0xff, 0xbc, 0xbc,
0xbc, 0xff, 0xbc, 0xbc, 0xbc, 0xff, 0xbb, 0xbb, 0xbb, 0xff, 0xbb, 0xbb,
0xbb, 0xff, 0xba, 0xba, 0xba, 0xff, 0xa4, 0xa4, 0xa4, 0xff, 0x53, 0x53,
0x53, 0xd0, 0x4b, 0x4b, 0x4b, 0x92, 0xac, 0xac, 0xac, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda,
0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8,
0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xca, 0xca,
0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc8, 0xc8,
0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc6, 0xc6,
0xc6, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc4, 0xc4,
0xc4, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3,
0xc3, 0xff, 0xc2, 0xc2, 0xc2, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xc1, 0xc1,
0xc1, 0xff, 0xc0, 0xc0, 0xc0, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xbf, 0xbf,
0xbf, 0xff, 0xbe, 0xbe, 0xbe, 0xff, 0xbd, 0xbd, 0xbd, 0xff, 0xbd, 0xbd,
0xbd, 0xff, 0xbc, 0xbc, 0xbc, 0xff, 0xbc, 0xbc, 0xbc, 0xff, 0xbb, 0xbb,
0xbb, 0xff, 0xa4, 0xa4, 0xa4, 0xff, 0x53, 0x53, 0x53, 0xd0, 0x4c, 0x4c,
0x4c, 0x92, 0xad, 0xad, 0xad, 0xff, 0xde, 0xde, 0xde, 0xff, 0xe0, 0xe0,
0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde,
0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce,
0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca,
0xca, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc9, 0xc9,
0xc9, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc5, 0xc5,
0xc5, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc3, 0xc3,
0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc2, 0xc2, 0xc2, 0xff, 0xc1, 0xc1,
0xc1, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xc0, 0xc0, 0xc0, 0xff, 0xbf, 0xbf,
0xbf, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xbe, 0xbe, 0xbe, 0xff, 0xbd, 0xbd,
0xbd, 0xff, 0xbd, 0xbd, 0xbd, 0xff, 0xbc, 0xbc, 0xbc, 0xff, 0xa5, 0xa5,
0xa5, 0xff, 0x53, 0x53, 0x53, 0xd0, 0x4c, 0x4c, 0x4c, 0x92, 0xae, 0xae,
0xae, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe1, 0xe1,
0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xdf, 0xdf,
0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda,
0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2,
0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb,
0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc9, 0xc9,
0xc9, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc6, 0xc6,
0xc6, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc4, 0xc4,
0xc4, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc2, 0xc2,
0xc2, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xc0, 0xc0,
0xc0, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xbe, 0xbe,
0xbe, 0xff, 0xbd, 0xbd, 0xbd, 0xff, 0xa6, 0xa6, 0xa6, 0xff, 0x54, 0x54,
0x54, 0xd0, 0x4c, 0x4c, 0x4c, 0x92, 0xaf, 0xaf, 0xaf, 0xff, 0xe0, 0xe0,
0xe0, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe2, 0xe2,
0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf,
0xdf, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda,
0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8,
0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xca, 0xca,
0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc8, 0xc8,
0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc6, 0xc6,
0xc6, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc4, 0xc4,
0xc4, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3,
0xc3, 0xff, 0xc2, 0xc2, 0xc2, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xc1, 0xc1,
0xc1, 0xff, 0xc0, 0xc0, 0xc0, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xbe, 0xbe,
0xbe, 0xff, 0xa7, 0xa7, 0xa7, 0xff, 0x54, 0x54, 0x54, 0xd0, 0x4d, 0x4d,
0x4d, 0x92, 0xb0, 0xb0, 0xb0, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2,
0xe2, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0,
0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde,
0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce,
0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca,
0xca, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc9, 0xc9,
0xc9, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc5, 0xc5,
0xc5, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc3, 0xc3,
0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc2, 0xc2, 0xc2, 0xff, 0xc1, 0xc1,
0xc1, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xbf, 0xbf, 0xbf, 0xff, 0xa8, 0xa8,
0xa8, 0xff, 0x55, 0x55, 0x55, 0xd0, 0x4e, 0x4e, 0x4e, 0x92, 0xb1, 0xb1,
0xb1, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe5, 0xe5,
0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe3, 0xe3,
0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1,
0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xdf, 0xdf,
0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda,
0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd8, 0xd8,
0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2,
0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb,
0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc9, 0xc9,
0xc9, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc6, 0xc6,
0xc6, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc4, 0xc4,
0xc4, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc2, 0xc2,
0xc2, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xaa, 0xaa, 0xaa, 0xff, 0x55, 0x55,
0x55, 0xd0, 0x4e, 0x4e, 0x4e, 0x92, 0xb2, 0xb2, 0xb2, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe5, 0xe5,
0xe5, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3,
0xe3, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe2, 0xe2,
0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf,
0xdf, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda,
0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8,
0xd8, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xca, 0xca,
0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc8, 0xc8,
0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc6, 0xc6,
0xc6, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc5, 0xc5, 0xc5, 0xff, 0xc4, 0xc4,
0xc4, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xc2, 0xc2,
0xc2, 0xff, 0xab, 0xab, 0xab, 0xff, 0x56, 0x56, 0x56, 0xd0, 0x4e, 0x4e,
0x4e, 0x92, 0xb3, 0xb3, 0xb3, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe8, 0xe8,
0xe8, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe6, 0xe6,
0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2,
0xe2, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0,
0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde,
0xde, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd2, 0xd2,
0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce,
0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca,
0xca, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc9, 0xc9,
0xc9, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc5, 0xc5,
0xc5, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xc3, 0xc3, 0xc3, 0xff, 0xac, 0xac,
0xac, 0xff, 0x56, 0x56, 0x56, 0xd0, 0x4f, 0x4f, 0x4f, 0x92, 0xb4, 0xb4,
0xb4, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe8, 0xe8,
0xe8, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe7, 0xe7,
0xe7, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe5, 0xe5,
0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe3, 0xe3,
0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1,
0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xdf, 0xdf,
0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda,
0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd8, 0xd8,
0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2,
0xd2, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb,
0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc9, 0xc9,
0xc9, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc6, 0xc6,
0xc6, 0xff, 0xc4, 0xc4, 0xc4, 0xff, 0xad, 0xad, 0xad, 0xff, 0x57, 0x57,
0x57, 0xd0, 0x4f, 0x4f, 0x4f, 0x92, 0xb5, 0xb5, 0xb5, 0xff, 0xe8, 0xe8,
0xe8, 0xff, 0xea, 0xea, 0xea, 0xff, 0xea, 0xea, 0xea, 0xff, 0xe9, 0xe9,
0xe9, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe7, 0xe7,
0xe7, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe5, 0xe5,
0xe5, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe2, 0xe2,
0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xe0, 0xe0,
0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xde, 0xde,
0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda,
0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xca, 0xca,
0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc8, 0xc8,
0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc6, 0xc6,
0xc6, 0xff, 0xae, 0xae, 0xae, 0xff, 0x58, 0x58, 0x58, 0xd0, 0x4f, 0x4f,
0x4f, 0x92, 0xb6, 0xb6, 0xb6, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xeb, 0xeb,
0xeb, 0xff, 0xeb, 0xeb, 0xeb, 0xff, 0xea, 0xea, 0xea, 0xff, 0xea, 0xea,
0xea, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe8, 0xe8,
0xe8, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe6, 0xe6,
0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2,
0xe2, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0,
0xe0, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde,
0xde, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2,
0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce,
0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca,
0xca, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc9, 0xc9,
0xc9, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xaf, 0xaf,
0xaf, 0xff, 0x58, 0x58, 0x58, 0xd0, 0x50, 0x50, 0x50, 0x92, 0xb7, 0xb7,
0xb7, 0xff, 0xea, 0xea, 0xea, 0xff, 0xed, 0xed, 0xed, 0xff, 0xec, 0xec,
0xec, 0xff, 0xeb, 0xeb, 0xeb, 0xff, 0xeb, 0xeb, 0xeb, 0xff, 0xea, 0xea,
0xea, 0xff, 0xea, 0xea, 0xea, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe8, 0xe8,
0xe8, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe7, 0xe7,
0xe7, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe5, 0xe5,
0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3,
0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1,
0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf,
0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda,
0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8,
0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb,
0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc9, 0xc9,
0xc9, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xb0, 0xb0, 0xb0, 0xff, 0x58, 0x58,
0x58, 0xd0, 0x51, 0x51, 0x51, 0x92, 0xb8, 0xb8, 0xb8, 0xff, 0xeb, 0xeb,
0xeb, 0xff, 0xed, 0xed, 0xed, 0xff, 0xed, 0xed, 0xed, 0xff, 0xed, 0xed,
0xed, 0xff, 0xec, 0xec, 0xec, 0xff, 0xeb, 0xeb, 0xeb, 0xff, 0xeb, 0xeb,
0xeb, 0xff, 0xea, 0xea, 0xea, 0xff, 0xea, 0xea, 0xea, 0xff, 0xe9, 0xe9,
0xe9, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe7, 0xe7,
0xe7, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe5, 0xe5,
0xe5, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe2, 0xe2,
0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xe0, 0xe0,
0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xde, 0xde,
0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda,
0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc9, 0xc9,
0xc9, 0xff, 0xb2, 0xb2, 0xb2, 0xff, 0x59, 0x59, 0x59, 0xd0, 0x52, 0x52,
0x52, 0x92, 0xb9, 0xb9, 0xb9, 0xff, 0xec, 0xec, 0xec, 0xff, 0xef, 0xef,
0xef, 0xff, 0xee, 0xee, 0xee, 0xff, 0xed, 0xed, 0xed, 0xff, 0xed, 0xed,
0xed, 0xff, 0xed, 0xed, 0xed, 0xff, 0xec, 0xec, 0xec, 0xff, 0xeb, 0xeb,
0xeb, 0xff, 0xeb, 0xeb, 0xeb, 0xff, 0xea, 0xea, 0xea, 0xff, 0xea, 0xea,
0xea, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe8, 0xe8,
0xe8, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe6, 0xe6,
0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2,
0xe2, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe1, 0xe1,
0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde,
0xde, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2,
0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce,
0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcc, 0xcc,
0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xb3, 0xb3,
0xb3, 0xff, 0x5a, 0x5a, 0x5a, 0xd0, 0x52, 0x52, 0x52, 0x92, 0xba, 0xba,
0xba, 0xff, 0xed, 0xed, 0xed, 0xff, 0xf0, 0xf0, 0xf0, 0xff, 0xef, 0xef,
0xef, 0xff, 0xef, 0xef, 0xef, 0xff, 0xee, 0xee, 0xee, 0xff, 0xee, 0xee,
0xee, 0xff, 0xed, 0xed, 0xed, 0xff, 0xed, 0xed, 0xed, 0xff, 0xec, 0xec,
0xec, 0xff, 0xec, 0xec, 0xec, 0xff, 0xeb, 0xeb, 0xeb, 0xff, 0xea, 0xea,
0xea, 0xff, 0xea, 0xea, 0xea, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe9, 0xe9,
0xe9, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe7, 0xe7,
0xe7, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe5, 0xe5,
0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3,
0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1,
0xe1, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf,
0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda,
0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8,
0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xb4, 0xb4, 0xb4, 0xff, 0x5a, 0x5a,
0x5a, 0xd0, 0x52, 0x52, 0x52, 0x92, 0xbb, 0xbb, 0xbb, 0xff, 0xef, 0xef,
0xef, 0xff, 0xf1, 0xf1, 0xf1, 0xff, 0xf1, 0xf1, 0xf1, 0xff, 0xf0, 0xf0,
0xf0, 0xff, 0xef, 0xef, 0xef, 0xff, 0xef, 0xef, 0xef, 0xff, 0xee, 0xee,
0xee, 0xff, 0xee, 0xee, 0xee, 0xff, 0xed, 0xed, 0xed, 0xff, 0xed, 0xed,
0xed, 0xff, 0xec, 0xec, 0xec, 0xff, 0xec, 0xec, 0xec, 0xff, 0xeb, 0xeb,
0xeb, 0xff, 0xea, 0xea, 0xea, 0xff, 0xea, 0xea, 0xea, 0xff, 0xe9, 0xe9,
0xe9, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe7, 0xe7,
0xe7, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe6, 0xe6,
0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe2, 0xe2,
0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0,
0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xde, 0xde,
0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xb5, 0xb5, 0xb5, 0xff, 0x5b, 0x5b, 0x5b, 0xd0, 0x52, 0x52,
0x52, 0x92, 0xbc, 0xbc, 0xbc, 0xff, 0xf0, 0xf0, 0xf0, 0xff, 0xf3, 0xf3,
0xf3, 0xff, 0xf2, 0xf2, 0xf2, 0xff, 0xf1, 0xf1, 0xf1, 0xff, 0xf1, 0xf1,
0xf1, 0xff, 0xf0, 0xf0, 0xf0, 0xff, 0xef, 0xef, 0xef, 0xff, 0xef, 0xef,
0xef, 0xff, 0xee, 0xee, 0xee, 0xff, 0xee, 0xee, 0xee, 0xff, 0xed, 0xed,
0xed, 0xff, 0xed, 0xed, 0xed, 0xff, 0xec, 0xec, 0xec, 0xff, 0xec, 0xec,
0xec, 0xff, 0xeb, 0xeb, 0xeb, 0xff, 0xea, 0xea, 0xea, 0xff, 0xea, 0xea,
0xea, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe8, 0xe8,
0xe8, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe6, 0xe6,
0xe6, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe3, 0xe3,
0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe1, 0xe1,
0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde,
0xde, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2,
0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd0, 0xd0,
0xd0, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xb6, 0xb6,
0xb6, 0xff, 0x5c, 0x5c, 0x5c, 0xd0, 0x53, 0x53, 0x53, 0x92, 0xbd, 0xbd,
0xbd, 0xff, 0xf1, 0xf1, 0xf1, 0xff, 0xf4, 0xf4, 0xf4, 0xff, 0xf4, 0xf4,
0xf4, 0xff, 0xf3, 0xf3, 0xf3, 0xff, 0xf2, 0xf2, 0xf2, 0xff, 0xf1, 0xf1,
0xf1, 0xff, 0xf1, 0xf1, 0xf1, 0xff, 0xf0, 0xf0, 0xf0, 0xff, 0xef, 0xef,
0xef, 0xff, 0xef, 0xef, 0xef, 0xff, 0xee, 0xee, 0xee, 0xff, 0xee, 0xee,
0xee, 0xff, 0xed, 0xed, 0xed, 0xff, 0xed, 0xed, 0xed, 0xff, 0xec, 0xec,
0xec, 0xff, 0xec, 0xec, 0xec, 0xff, 0xeb, 0xeb, 0xeb, 0xff, 0xea, 0xea,
0xea, 0xff, 0xea, 0xea, 0xea, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe9, 0xe9,
0xe9, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe7, 0xe7,
0xe7, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe5, 0xe5,
0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3,
0xe3, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1,
0xe1, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf,
0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda,
0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8,
0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xb7, 0xb7, 0xb7, 0xff, 0x5c, 0x5c,
0x5c, 0xd0, 0x53, 0x53, 0x53, 0x92, 0xbe, 0xbe, 0xbe, 0xff, 0xf2, 0xf2,
0xf2, 0xff, 0xf5, 0xf5, 0xf5, 0xff, 0xf5, 0xf5, 0xf5, 0xff, 0xf4, 0xf4,
0xf4, 0xff, 0xf4, 0xf4, 0xf4, 0xff, 0xf3, 0xf3, 0xf3, 0xff, 0xf2, 0xf2,
0xf2, 0xff, 0xf1, 0xf1, 0xf1, 0xff, 0xf1, 0xf1, 0xf1, 0xff, 0xf0, 0xf0,
0xf0, 0xff, 0xef, 0xef, 0xef, 0xff, 0xef, 0xef, 0xef, 0xff, 0xee, 0xee,
0xee, 0xff, 0xee, 0xee, 0xee, 0xff, 0xed, 0xed, 0xed, 0xff, 0xed, 0xed,
0xed, 0xff, 0xec, 0xec, 0xec, 0xff, 0xec, 0xec, 0xec, 0xff, 0xeb, 0xeb,
0xeb, 0xff, 0xea, 0xea, 0xea, 0xff, 0xea, 0xea, 0xea, 0xff, 0xe9, 0xe9,
0xe9, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe7, 0xe7,
0xe7, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe6, 0xe6,
0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2,
0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0,
0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xde, 0xde,
0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xb8, 0xb8, 0xb8, 0xff, 0x5d, 0x5d, 0x5d, 0xd0, 0x54, 0x54,
0x54, 0x92, 0xbf, 0xbf, 0xbf, 0xff, 0xf4, 0xf4, 0xf4, 0xff, 0xf6, 0xf6,
0xf6, 0xff, 0xf6, 0xf6, 0xf6, 0xff, 0xf5, 0xf5, 0xf5, 0xff, 0xf5, 0xf5,
0xf5, 0xff, 0xf4, 0xf4, 0xf4, 0xff, 0xf4, 0xf4, 0xf4, 0xff, 0xf3, 0xf3,
0xf3, 0xff, 0xf2, 0xf2, 0xf2, 0xff, 0xf1, 0xf1, 0xf1, 0xff, 0xf1, 0xf1,
0xf1, 0xff, 0xf0, 0xf0, 0xf0, 0xff, 0xef, 0xef, 0xef, 0xff, 0xef, 0xef,
0xef, 0xff, 0xee, 0xee, 0xee, 0xff, 0xee, 0xee, 0xee, 0xff, 0xed, 0xed,
0xed, 0xff, 0xed, 0xed, 0xed, 0xff, 0xec, 0xec, 0xec, 0xff, 0xec, 0xec,
0xec, 0xff, 0xeb, 0xeb, 0xeb, 0xff, 0xea, 0xea, 0xea, 0xff, 0xea, 0xea,
0xea, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe8, 0xe8,
0xe8, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe6, 0xe6,
0xe6, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe3, 0xe3,
0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe1, 0xe1,
0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde,
0xde, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda,
0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xb9, 0xb9,
0xb9, 0xff, 0x5e, 0x5e, 0x5e, 0xd0, 0x54, 0x54, 0x54, 0x92, 0xbf, 0xbf,
0xbf, 0xff, 0xf5, 0xf5, 0xf5, 0xff, 0xf8, 0xf8, 0xf8, 0xff, 0xf7, 0xf7,
0xf7, 0xff, 0xf6, 0xf6, 0xf6, 0xff, 0xf6, 0xf6, 0xf6, 0xff, 0xf5, 0xf5,
0xf5, 0xff, 0xf5, 0xf5, 0xf5, 0xff, 0xf4, 0xf4, 0xf4, 0xff, 0xf4, 0xf4,
0xf4, 0xff, 0xf3, 0xf3, 0xf3, 0xff, 0xf2, 0xf2, 0xf2, 0xff, 0xf2, 0xf2,
0xf2, 0xff, 0xf1, 0xf1, 0xf1, 0xff, 0xf0, 0xf0, 0xf0, 0xff, 0xef, 0xef,
0xef, 0xff, 0xef, 0xef, 0xef, 0xff, 0xee, 0xee, 0xee, 0xff, 0xee, 0xee,
0xee, 0xff, 0xed, 0xed, 0xed, 0xff, 0xed, 0xed, 0xed, 0xff, 0xec, 0xec,
0xec, 0xff, 0xec, 0xec, 0xec, 0xff, 0xeb, 0xeb, 0xeb, 0xff, 0xea, 0xea,
0xea, 0xff, 0xea, 0xea, 0xea, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe9, 0xe9,
0xe9, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe7, 0xe7,
0xe7, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe5, 0xe5,
0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3,
0xe3, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1,
0xe1, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf,
0xdf, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda,
0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8,
0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xba, 0xba, 0xba, 0xff, 0x5e, 0x5e,
0x5e, 0xd0, 0x53, 0x53, 0x53, 0x92, 0xbf, 0xbf, 0xbf, 0xff, 0xf6, 0xf6,
0xf6, 0xff, 0xf9, 0xf9, 0xf9, 0xff, 0xf8, 0xf8, 0xf8, 0xff, 0xf8, 0xf8,
0xf8, 0xff, 0xf7, 0xf7, 0xf7, 0xff, 0xf6, 0xf6, 0xf6, 0xff, 0xf6, 0xf6,
0xf6, 0xff, 0xf5, 0xf5, 0xf5, 0xff, 0xf5, 0xf5, 0xf5, 0xff, 0xf4, 0xf4,
0xf4, 0xff, 0xf4, 0xf4, 0xf4, 0xff, 0xf3, 0xf3, 0xf3, 0xff, 0xf2, 0xf2,
0xf2, 0xff, 0xf2, 0xf2, 0xf2, 0xff, 0xf1, 0xf1, 0xf1, 0xff, 0xf0, 0xf0,
0xf0, 0xff, 0xef, 0xef, 0xef, 0xff, 0xef, 0xef, 0xef, 0xff, 0xee, 0xee,
0xee, 0xff, 0xee, 0xee, 0xee, 0xff, 0xed, 0xed, 0xed, 0xff, 0xed, 0xed,
0xed, 0xff, 0xec, 0xec, 0xec, 0xff, 0xec, 0xec, 0xec, 0xff, 0xeb, 0xeb,
0xeb, 0xff, 0xeb, 0xeb, 0xeb, 0xff, 0xea, 0xea, 0xea, 0xff, 0xe9, 0xe9,
0xe9, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe8, 0xe8, 0xe8, 0xff, 0xe8, 0xe8,
0xe8, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe6, 0xe6,
0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2,
0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0,
0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde,
0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xba, 0xba, 0xba, 0xff, 0x5d, 0x5d, 0x5d, 0xcf, 0x49, 0x49,
0x49, 0x82, 0xb0, 0xb0, 0xb0, 0xff, 0xf2, 0xf2, 0xf2, 0xff, 0xfa, 0xfa,
0xfa, 0xff, 0xf9, 0xf9, 0xf9, 0xff, 0xf9, 0xf9, 0xf9, 0xff, 0xf8, 0xf8,
0xf8, 0xff, 0xf7, 0xf7, 0xf7, 0xff, 0xf7, 0xf7, 0xf7, 0xff, 0xf6, 0xf6,
0xf6, 0xff, 0xf5, 0xf5, 0xf5, 0xff, 0xf5, 0xf5, 0xf5, 0xff, 0xf5, 0xf5,
0xf5, 0xff, 0xf4, 0xf4, 0xf4, 0xff, 0xf3, 0xf3, 0xf3, 0xff, 0xf3, 0xf3,
0xf3, 0xff, 0xf2, 0xf2, 0xf2, 0xff, 0xf1, 0xf1, 0xf1, 0xff, 0xf1, 0xf1,
0xf1, 0xff, 0xf0, 0xf0, 0xf0, 0xff, 0xef, 0xef, 0xef, 0xff, 0xef, 0xef,
0xef, 0xff, 0xee, 0xee, 0xee, 0xff, 0xee, 0xee, 0xee, 0xff, 0xed, 0xed,
0xed, 0xff, 0xed, 0xed, 0xed, 0xff, 0xec, 0xec, 0xec, 0xff, 0xec, 0xec,
0xec, 0xff, 0xeb, 0xeb, 0xeb, 0xff, 0xea, 0xea, 0xea, 0xff, 0xea, 0xea,
0xea, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe8, 0xe8,
0xe8, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe7, 0xe7, 0xe7, 0xff, 0xe6, 0xe6,
0xe6, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe4, 0xe4,
0xe4, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xe2, 0xe2,
0xe2, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe1, 0xe1,
0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde,
0xde, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd,
0xdd, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xb0, 0xb0,
0xb0, 0xff, 0x51, 0x51, 0x51, 0xc3, 0x3e, 0x3e, 0x3e, 0x3a, 0x75, 0x75,
0x75, 0xee, 0xc9, 0xc9, 0xc9, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe6, 0xe6,
0xe6, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe5, 0xe5,
0xe5, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe4, 0xe4, 0xe4, 0xff, 0xe3, 0xe3,
0xe3, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xe1, 0xe1,
0xe1, 0xff, 0xe1, 0xe1, 0xe1, 0xff, 0xe0, 0xe0, 0xe0, 0xff, 0xe0, 0xe0,
0xe0, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xde, 0xde,
0xde, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdd, 0xdd, 0xdd, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xda, 0xda, 0xda, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd9, 0xd9,
0xd9, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd6, 0xd6, 0xd6, 0xff, 0xd6, 0xd6,
0xd6, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd3, 0xd3, 0xd3, 0xff, 0xd2, 0xd2,
0xd2, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcf, 0xcf, 0xcf, 0xff, 0xcf, 0xcf,
0xcf, 0xff, 0xce, 0xce, 0xce, 0xff, 0xce, 0xce, 0xce, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xcb, 0xcb,
0xcb, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xca, 0xca, 0xca, 0xff, 0xca, 0xca,
0xca, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc9, 0xc9, 0xc9, 0xff, 0xc8, 0xc8,
0xc8, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc7, 0xc7, 0xc7, 0xff, 0xc5, 0xc5,
0xc5, 0xff, 0xb7, 0xb7, 0xb7, 0xff, 0x7c, 0x7c, 0x7c, 0xfd, 0x3b, 0x3b,
0x3b, 0x72, 0x1b, 0x1b, 0x1b, 0x0a, 0x44, 0x44, 0x44, 0x55, 0x61, 0x61,
0x61, 0xc9, 0x7b, 0x7b, 0x7b, 0xe7, 0x81, 0x81, 0x81, 0xe9, 0x81, 0x81,
0x81, 0xe9, 0x80, 0x80, 0x80, 0xe9, 0x80, 0x80, 0x80, 0xe9, 0x80, 0x80,
0x80, 0xe9, 0x7f, 0x7f, 0x7f, 0xe9, 0x7f, 0x7f, 0x7f, 0xe9, 0x7f, 0x7f,
0x7f, 0xe9, 0x7e, 0x7e, 0x7e, 0xe9, 0x7e, 0x7e, 0x7e, 0xe9, 0x7e, 0x7e,
0x7e, 0xe9, 0x7d, 0x7d, 0x7d, 0xe9, 0x7d, 0x7d, 0x7d, 0xe9, 0x7d, 0x7d,
0x7d, 0xe9, 0x7c, 0x7c, 0x7c, 0xe9, 0x7c, 0x7c, 0x7c, 0xe9, 0x7c, 0x7c,
0x7c, 0xe9, 0x7b, 0x7b, 0x7b, 0xe9, 0x7b, 0x7b, 0x7b, 0xe9, 0x7a, 0x7a,
0x7a, 0xe9, 0x7a, 0x7a, 0x7a, 0xe9, 0x7a, 0x7a, 0x7a, 0xe9, 0x7a, 0x7a,
0x7a, 0xe9, 0x79, 0x79, 0x79, 0xe9, 0x79, 0x79, 0x79, 0xe9, 0x79, 0x79,
0x79, 0xe9, 0x79, 0x79, 0x79, 0xe9, 0x78, 0x78, 0x78, 0xe9, 0x78, 0x78,
0x78, 0xe9, 0x77, 0x77, 0x77, 0xe9, 0x77, 0x77, 0x77, 0xe9, 0x77, 0x77,
0x77, 0xe9, 0x77, 0x77, 0x77, 0xe9, 0x76, 0x76, 0x76, 0xe9, 0x76, 0x76,
0x76, 0xe9, 0x76, 0x76, 0x76, 0xe9, 0x76, 0x76, 0x76, 0xe9, 0x75, 0x75,
0x75, 0xe9, 0x75, 0x75, 0x75, 0xe9, 0x74, 0x74, 0x74, 0xe9, 0x74, 0x74,
0x74, 0xe9, 0x74, 0x74, 0x74, 0xe9, 0x73, 0x73, 0x73, 0xe9, 0x73, 0x73,
0x73, 0xe9, 0x73, 0x73, 0x73, 0xe9, 0x72, 0x72, 0x72, 0xe9, 0x72, 0x72,
0x72, 0xe9, 0x72, 0x72, 0x72, 0xe9, 0x71, 0x71, 0x71, 0xe9, 0x71, 0x71,
0x71, 0xe9, 0x71, 0x71, 0x71, 0xe9, 0x71, 0x71, 0x71, 0xe9, 0x70, 0x70,
0x70, 0xe9, 0x70, 0x70, 0x70, 0xe9, 0x70, 0x70, 0x70, 0xe9, 0x6f, 0x6f,
0x6f, 0xe9, 0x6f, 0x6f, 0x6f, 0xe9, 0x6d, 0x6d, 0x6d, 0xe8, 0x5c, 0x5c,
0x5c, 0xd9, 0x3e, 0x3e, 0x3e, 0x7e, 0x26, 0x26, 0x26, 0x15
unsigned char gamepad_button_background_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x20,
0x08, 0x02, 0x00, 0x00, 0x00, 0xc2, 0x3d, 0x82, 0xed, 0x00, 0x00, 0x02,
0x1a, 0x49, 0x44, 0x41, 0x54, 0x58, 0xc3, 0xd5, 0x98, 0x3b, 0xaf, 0x82,
0x30, 0x14, 0xc7, 0xa9, 0x39, 0x31, 0x06, 0x8d, 0x4e, 0x6a, 0x22, 0x71,
0x72, 0x62, 0x34, 0x71, 0xf3, 0x6b, 0xf8, 0x7d, 0x9d, 0xdc, 0xdc, 0x8c,
0xb3, 0x89, 0x8b, 0x0e, 0x3e, 0x22, 0x49, 0x1d, 0x4c, 0x3c, 0xdc, 0xa1,
0x37, 0xbd, 0xa5, 0xf4, 0xc2, 0x69, 0x01, 0x05, 0x06, 0xd3, 0x87, 0x94,
0x5f, 0xe9, 0xff, 0x3c, 0x38, 0x2c, 0x08, 0x82, 0x30, 0x0c, 0xa7, 0xd3,
0xe9, 0x64, 0x32, 0x69, 0xb7, 0xdb, 0x9e, 0xe7, 0xc5, 0x71, 0xec, 0x79,
0x9e, 0x55, 0x43, 0x76, 0x8d, 0x6d, 0xe2, 0x6c, 0x46, 0x23, 0x3d, 0x88,
0x88, 0xf7, 0xfb, 0xfd, 0x78, 0x3c, 0x9e, 0xcf, 0x67, 0x98, 0xcd, 0x66,
0xf3, 0xf9, 0x7c, 0xb5, 0x5a, 0x05, 0x41, 0xd0, 0x6a, 0xb5, 0xb4, 0xa5,
0xe3, 0x38, 0xd6, 0xba, 0x15, 0x4d, 0xd1, 0x6f, 0x17, 0xbf, 0x88, 0x18,
0x45, 0xd1, 0x66, 0xb3, 0x59, 0xaf, 0xd7, 0xd0, 0xed, 0x76, 0x97, 0xcb,
0x65, 0x18, 0x86, 0x9d, 0x4e, 0x27, 0xbd, 0x84, 0xba, 0xfb, 0xff, 0x66,
0x1d, 0x98, 0x32, 0xc6, 0x29, 0x6b, 0x8a, 0xab, 0xdf, 0xef, 0x2f, 0x16,
0x8b, 0xfd, 0x7e, 0x0f, 0xbe, 0xef, 0x0f, 0x06, 0x03, 0x00, 0xc8, 0x85,
0x23, 0x3e, 0xc9, 0x16, 0xda, 0xea, 0xbd, 0xa8, 0x6d, 0xc6, 0x98, 0xef,
0xfb, 0xbd, 0x5e, 0x0f, 0x18, 0x63, 0xea, 0x3f, 0x8a, 0xd0, 0xe7, 0xde,
0x5b, 0x16, 0xbd, 0xda, 0x60, 0x8c, 0x81, 0x94, 0x0a, 0x22, 0x12, 0x6f,
0x76, 0x56, 0x8e, 0xdb, 0x79, 0xe6, 0x0a, 0xef, 0x57, 0x42, 0x88, 0x28,
0x0f, 0xe4, 0xeb, 0xf4, 0xc4, 0x23, 0x92, 0x17, 0x18, 0x89, 0xeb, 0x4f,
0xaf, 0xae, 0x06, 0x71, 0xea, 0x6a, 0x04, 0xbd, 0xda, 0xfd, 0x3b, 0x07,
0x69, 0x0f, 0x5f, 0xf4, 0x98, 0x56, 0xf4, 0xba, 0x96, 0x84, 0x3d, 0x94,
0xe8, 0x2b, 0x1d, 0xfc, 0x3d, 0xfd, 0xd1, 0xba, 0x96, 0xd2, 0xdb, 0x4a,
0x07, 0xb5, 0x1a, 0xd2, 0x27, 0xb4, 0x24, 0xe7, 0x84, 0x96, 0x0a, 0x2a,
0xde, 0xcd, 0xe5, 0xbb, 0xd1, 0x1b, 0x6c, 0xba, 0x41, 0xf4, 0xaa, 0x0d,
0x27, 0xf6, 0xa0, 0xc5, 0xb8, 0x3a, 0xd3, 0xeb, 0x31, 0x8e, 0x12, 0x0e,
0xab, 0xa3, 0x77, 0x36, 0x36, 0x83, 0x6f, 0x35, 0xfa, 0x25, 0xe7, 0x37,
0x64, 0x1b, 0xa7, 0xdc, 0x82, 0x8f, 0x10, 0x92, 0x21, 0xc6, 0x35, 0x82,
0xde, 0x1c, 0x1f, 0x28, 0xf6, 0x60, 0x15, 0xc2, 0x2b, 0xa5, 0x77, 0xb1,
0x87, 0x52, 0xe8, 0x4b, 0x4c, 0x5b, 0xf4, 0x9c, 0xcf, 0xa8, 0x25, 0x5b,
0xfa, 0x12, 0xad, 0x99, 0xde, 0x45, 0x44, 0xa1, 0x9d, 0x44, 0xee, 0xdd,
0x14, 0xfa, 0x7c, 0x7b, 0xa8, 0x3f, 0x7d, 0x96, 0x3d, 0x7c, 0x9d, 0xde,
0x36, 0xb1, 0x4d, 0xd8, 0x83, 0xd4, 0x52, 0x11, 0xbe, 0x12, 0xa3, 0x18,
0x31, 0x8c, 0x9a, 0x73, 0x3e, 0xdb, 0x8f, 0xda, 0x12, 0x3d, 0xa9, 0x5b,
0x1d, 0xc8, 0xec, 0x5b, 0x3f, 0x40, 0x6f, 0x1c, 0x77, 0xf8, 0x98, 0x16,
0xae, 0x09, 0x72, 0x8b, 0x1f, 0x05, 0x45, 0x52, 0x05, 0xbd, 0xa1, 0xae,
0x21, 0x13, 0x8f, 0x8a, 0x24, 0x6e, 0x55, 0xc6, 0xa4, 0x27, 0xb6, 0x02,
0x1b, 0x11, 0x81, 0x73, 0xfe, 0x78, 0x3c, 0x5e, 0xaf, 0x97, 0x2c, 0x18,
0x7f, 0x20, 0x4d, 0xa0, 0x1f, 0x60, 0x46, 0x9e, 0xf6, 0x7e, 0xbf, 0x39,
0xe7, 0x9c, 0x73, 0x78, 0x3e, 0x9f, 0xdb, 0xed, 0x76, 0x38, 0x1c, 0x8e,
0x46, 0x23, 0x63, 0xcd, 0x98, 0x58, 0xc4, 0xb5, 0x3d, 0x37, 0xe2, 0x26,
0xff, 0x1b, 0x47, 0x44, 0xce, 0xf9, 0x6e, 0xb7, 0xbb, 0x5e, 0xaf, 0x70,
0x38, 0x1c, 0x00, 0xe0, 0x76, 0xbb, 0x8d, 0xc7, 0x63, 0x00, 0x48, 0x17,
0xcd, 0xad, 0x8a, 0xec, 0x19, 0xd5, 0xf6, 0xdc, 0x6a, 0x3e, 0x71, 0x11,
0xb9, 0x87, 0x28, 0x8a, 0x4e, 0xa7, 0xd3, 0xe5, 0x72, 0xf9, 0x01, 0xc4,
0xc7, 0x93, 0xca, 0x48, 0xca, 0xb8, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x49,
0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int gamepad_button_background_bmp_len = 8458;
unsigned int gamepad_button_background_png_len = 595;
Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 714 B

+20 -62
View File
@@ -1,63 +1,21 @@
unsigned char gamepad_button_small_bmp[] = {
0x42, 0x4d, 0xca, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00,
0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00,
0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02,
0x00, 0x00, 0xd7, 0x0d, 0x00, 0x00, 0xd7, 0x0d, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff,
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x42, 0x47,
0x52, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x5d, 0x5d, 0x34, 0x5e, 0x5e,
0x5e, 0x7d, 0x5d, 0x5d, 0x5d, 0x7d, 0x5b, 0x5b, 0x5b, 0x7d, 0x57, 0x57,
0x57, 0x7d, 0x56, 0x56, 0x56, 0x7d, 0x55, 0x55, 0x55, 0x7d, 0x53, 0x53,
0x53, 0x7d, 0x52, 0x52, 0x52, 0x7d, 0x51, 0x51, 0x51, 0x7d, 0x4f, 0x4f,
0x4f, 0x7d, 0x4e, 0x4e, 0x4e, 0x34, 0x97, 0x97, 0x97, 0xc3, 0xc6, 0xc6,
0xc6, 0xf3, 0xc3, 0xc3, 0xc3, 0xf3, 0xc0, 0xc0, 0xc0, 0xf3, 0xbc, 0xbc,
0xbc, 0xf3, 0xba, 0xba, 0xba, 0xf3, 0xb7, 0xb7, 0xb7, 0xf3, 0xb3, 0xb3,
0xb3, 0xf3, 0xaf, 0xaf, 0xaf, 0xf3, 0xad, 0xad, 0xad, 0xf3, 0xaa, 0xaa,
0xaa, 0xf3, 0x7f, 0x7f, 0x7f, 0xc2, 0xa9, 0xa9, 0xa9, 0xdd, 0xd8, 0xd8,
0xd8, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd2, 0xd2, 0xd2, 0xff, 0xce, 0xce,
0xce, 0xff, 0xcb, 0xcb, 0xcb, 0xff, 0xc8, 0xc8, 0xc8, 0xff, 0xc4, 0xc4,
0xc4, 0xff, 0xc1, 0xc1, 0xc1, 0xff, 0xbd, 0xbd, 0xbd, 0xff, 0xbb, 0xbb,
0xbb, 0xff, 0x8e, 0x8e, 0x8e, 0xdd, 0xad, 0xad, 0xad, 0xde, 0xde, 0xde,
0xde, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd7, 0xd7, 0xd7, 0xff, 0xd3, 0xd3,
0xd3, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcc, 0xcc, 0xcc, 0xff, 0xc9, 0xc9,
0xc9, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc2, 0xc2, 0xc2, 0xff, 0xbf, 0xbf,
0xbf, 0xff, 0x92, 0x92, 0x92, 0xde, 0xb0, 0xb0, 0xb0, 0xde, 0xe1, 0xe1,
0xe1, 0xff, 0xde, 0xde, 0xde, 0xff, 0xda, 0xda, 0xda, 0xff, 0xd7, 0xd7,
0xd7, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd0, 0xd0, 0xd0, 0xff, 0xcd, 0xcd,
0xcd, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc6, 0xc6, 0xc6, 0xff, 0xc3, 0xc3,
0xc3, 0xff, 0x94, 0x94, 0x94, 0xde, 0xb2, 0xb2, 0xb2, 0xde, 0xe5, 0xe5,
0xe5, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xde, 0xde, 0xde, 0xff, 0xdb, 0xdb,
0xdb, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd4, 0xd4, 0xd4, 0xff, 0xd1, 0xd1,
0xd1, 0xff, 0xcd, 0xcd, 0xcd, 0xff, 0xca, 0xca, 0xca, 0xff, 0xc7, 0xc7,
0xc7, 0xff, 0x97, 0x97, 0x97, 0xde, 0xb5, 0xb5, 0xb5, 0xde, 0xe9, 0xe9,
0xe9, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xdf, 0xdf,
0xdf, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd5, 0xd5,
0xd5, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xce, 0xce, 0xce, 0xff, 0xca, 0xca,
0xca, 0xff, 0x9a, 0x9a, 0x9a, 0xde, 0xb8, 0xb8, 0xb8, 0xde, 0xed, 0xed,
0xed, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe6, 0xe6, 0xe6, 0xff, 0xe3, 0xe3,
0xe3, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xdc, 0xdc, 0xdc, 0xff, 0xd8, 0xd8,
0xd8, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd1, 0xd1, 0xd1, 0xff, 0xce, 0xce,
0xce, 0xff, 0x9d, 0x9d, 0x9d, 0xde, 0xbb, 0xbb, 0xbb, 0xde, 0xf1, 0xf1,
0xf1, 0xff, 0xed, 0xed, 0xed, 0xff, 0xe9, 0xe9, 0xe9, 0xff, 0xe6, 0xe6,
0xe6, 0xff, 0xe3, 0xe3, 0xe3, 0xff, 0xdf, 0xdf, 0xdf, 0xff, 0xdc, 0xdc,
0xdc, 0xff, 0xd9, 0xd9, 0xd9, 0xff, 0xd5, 0xd5, 0xd5, 0xff, 0xd2, 0xd2,
0xd2, 0xff, 0xa0, 0xa0, 0xa0, 0xde, 0xbc, 0xbc, 0xbc, 0xdd, 0xf3, 0xf3,
0xf3, 0xff, 0xf0, 0xf0, 0xf0, 0xff, 0xec, 0xec, 0xec, 0xff, 0xe9, 0xe9,
0xe9, 0xff, 0xe5, 0xe5, 0xe5, 0xff, 0xe2, 0xe2, 0xe2, 0xff, 0xde, 0xde,
0xde, 0xff, 0xdb, 0xdb, 0xdb, 0xff, 0xd8, 0xd8, 0xd8, 0xff, 0xd4, 0xd4,
0xd4, 0xff, 0xa1, 0xa1, 0xa1, 0xdd, 0xae, 0xae, 0xae, 0xc3, 0xe4, 0xe4,
0xe4, 0xf3, 0xe2, 0xe2, 0xe2, 0xf3, 0xde, 0xde, 0xde, 0xf3, 0xdb, 0xdb,
0xdb, 0xf3, 0xd8, 0xd8, 0xd8, 0xf3, 0xd6, 0xd6, 0xd6, 0xf3, 0xd2, 0xd2,
0xd2, 0xf3, 0xce, 0xce, 0xce, 0xf3, 0xcc, 0xcc, 0xcc, 0xf3, 0xc9, 0xc9,
0xc9, 0xf3, 0x95, 0x95, 0x95, 0xc2, 0x6b, 0x6b, 0x6b, 0x34, 0x6e, 0x6e,
0x6e, 0x7d, 0x6d, 0x6d, 0x6d, 0x7d, 0x6a, 0x6a, 0x6a, 0x7d, 0x68, 0x68,
0x68, 0x7d, 0x67, 0x67, 0x67, 0x7d, 0x66, 0x66, 0x66, 0x7d, 0x64, 0x64,
0x64, 0x7d, 0x62, 0x62, 0x62, 0x7d, 0x61, 0x61, 0x61, 0x7d, 0x60, 0x60,
0x60, 0x7d, 0x5c, 0x5c, 0x5c, 0x34
unsigned char gamepad_button_small_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x0c,
0x08, 0x02, 0x00, 0x00, 0x00, 0xd9, 0x17, 0xcb, 0xb0, 0x00, 0x00, 0x00,
0x96, 0x49, 0x44, 0x41, 0x54, 0x18, 0xd3, 0x7d, 0x51, 0xc1, 0x09, 0xc4,
0x30, 0x0c, 0x23, 0x57, 0x3f, 0x43, 0xbb, 0x4d, 0x16, 0xc8, 0x1c, 0x9d,
0x20, 0xab, 0x76, 0x96, 0x40, 0xbf, 0x45, 0x92, 0xef, 0xe1, 0xbb, 0x10,
0x7a, 0x47, 0xf3, 0x30, 0x02, 0x2b, 0x92, 0x2d, 0xa7, 0xd6, 0xda, 0xb2,
0x2c, 0xee, 0x4e, 0x52, 0x92, 0xbb, 0xbb, 0xbb, 0xa4, 0x81, 0x01, 0x58,
0xad, 0xb5, 0x94, 0x22, 0x09, 0x00, 0xc9, 0xa0, 0x02, 0x00, 0x20, 0x89,
0xe4, 0x71, 0x1c, 0xb6, 0xae, 0xeb, 0xb6, 0x6d, 0x24, 0x83, 0x34, 0xd7,
0x00, 0x39, 0xe7, 0x57, 0x88, 0xf3, 0xfb, 0x02, 0x87, 0xdd, 0x18, 0xc0,
0x82, 0x3e, 0x7f, 0xfd, 0xd5, 0xb3, 0x07, 0xa3, 0x51, 0xed, 0xb9, 0xfd,
0x51, 0x1a, 0x7b, 0xdd, 0x48, 0x77, 0xbb, 0x67, 0x47, 0x49, 0x06, 0xe0,
0xba, 0xae, 0xbf, 0x1a, 0x11, 0x15, 0x00, 0xeb, 0xbd, 0xf7, 0xde, 0x47,
0x2f, 0x36, 0x9f, 0xc3, 0x3c, 0xcf, 0x33, 0xed, 0xfb, 0x9e, 0x52, 0x8a,
0xb4, 0x00, 0x8c, 0xb3, 0xcc, 0xe0, 0x0d, 0x2c, 0x79, 0x93, 0xbb, 0x6d,
0x9c, 0x9f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
0x42, 0x60, 0x82
};
unsigned int gamepad_button_small_bmp_len = 714;
unsigned int gamepad_button_small_png_len = 207;
Binary file not shown.

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

+173
View File
@@ -0,0 +1,173 @@
unsigned char gamepad_face_axby_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x50,
0x08, 0x06, 0x00, 0x00, 0x00, 0x04, 0x3e, 0x6b, 0xec, 0x00, 0x00, 0x07,
0xb8, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0x9d, 0x7b, 0x8c, 0x5c,
0x55, 0x1d, 0xc7, 0x3f, 0xbf, 0x7b, 0x6f, 0xa7, 0xdd, 0xed, 0x83, 0x5a,
0xc0, 0x5a, 0x2d, 0x8f, 0x34, 0x9d, 0x5d, 0x4a, 0x55, 0x6c, 0xb6, 0x76,
0x67, 0xdb, 0x15, 0xe5, 0xa1, 0x15, 0x45, 0x52, 0x9f, 0x09, 0xb1, 0x46,
0x7c, 0x25, 0x46, 0x05, 0x15, 0xa2, 0x06, 0x83, 0x25, 0x22, 0x2a, 0x90,
0x10, 0xdb, 0x14, 0xf1, 0x2f, 0x51, 0x08, 0xa6, 0x3e, 0x22, 0x6a, 0x54,
0x54, 0x04, 0xc4, 0x6d, 0x77, 0x67, 0xb6, 0x55, 0x2b, 0xd1, 0x56, 0x3b,
0xb3, 0x65, 0x5b, 0x62, 0x11, 0x4a, 0xb3, 0x2d, 0x85, 0x76, 0x1f, 0x33,
0xf7, 0x7c, 0xfd, 0xe3, 0x9e, 0x85, 0x65, 0xed, 0xb6, 0x35, 0x61, 0x4b,
0x6f, 0x3d, 0x9f, 0x64, 0x92, 0x99, 0x7b, 0x4f, 0xe6, 0xce, 0x39, 0xdf,
0xf9, 0xfd, 0xce, 0xef, 0x9c, 0xf9, 0xfd, 0xee, 0x40, 0x20, 0x30, 0x19,
0xf4, 0xf4, 0xf4, 0xd8, 0xb6, 0x6d, 0xdb, 0xec, 0x54, 0xed, 0x5f, 0x92,
0xc7, 0x0f, 0xdd, 0xdd, 0xdd, 0x1d, 0x39, 0xe7, 0x12, 0xe7, 0x1c, 0x83,
0x83, 0x83, 0x29, 0x90, 0x4e, 0xd0, 0x2e, 0x76, 0xce, 0xc5, 0x00, 0x66,
0xa6, 0xce, 0xce, 0xce, 0x7a, 0x9e, 0xfa, 0x99, 0xbb, 0x6f, 0x5d, 0x57,
0x57, 0xd7, 0x94, 0x24, 0x49, 0xde, 0x0d, 0xbc, 0x1a, 0x50, 0x14, 0x45,
0x8f, 0x9b, 0xd9, 0xfd, 0xed, 0xed, 0xed, 0xc3, 0x63, 0xdb, 0xf5, 0xf6,
0xf6, 0x16, 0xd2, 0x34, 0x5d, 0x09, 0x2c, 0xf0, 0xfd, 0xdc, 0xd3, 0xd4,
0xd4, 0xf4, 0xcb, 0x25, 0x4b, 0x96, 0x0c, 0xe5, 0xa5, 0xaf, 0x51, 0xde,
0xc4, 0x29, 0x14, 0x0a, 0x49, 0x14, 0x45, 0xf3, 0xcd, 0xec, 0xeb, 0x66,
0xb6, 0x56, 0xd2, 0x3a, 0x49, 0x6f, 0xae, 0x54, 0x2a, 0x53, 0x46, 0xdb,
0x54, 0x2a, 0x95, 0xc4, 0x39, 0xf7, 0x46, 0x33, 0xfb, 0x96, 0x99, 0xad,
0x35, 0xb3, 0x9b, 0xcd, 0x6c, 0xde, 0xe0, 0xe0, 0xa0, 0x6d, 0xde, 0xbc,
0x39, 0x37, 0x5f, 0xc8, 0xdc, 0xb9, 0xb5, 0x24, 0x49, 0x86, 0xd2, 0x34,
0xbd, 0x47, 0xd2, 0x22, 0x60, 0x35, 0x30, 0x4f, 0xd2, 0x0d, 0x40, 0xb5,
0xa7, 0xa7, 0x67, 0xf7, 0xd0, 0xd0, 0x10, 0x8d, 0x46, 0x63, 0x4e, 0x14,
0x45, 0xd7, 0x9b, 0xd9, 0xd9, 0xc0, 0x10, 0x70, 0xaf, 0xa4, 0x1f, 0x38,
0xe7, 0x86, 0x96, 0x2d, 0x5b, 0xa6, 0x60, 0x39, 0x93, 0xc4, 0xd2, 0xa5,
0x4b, 0xe5, 0x9c, 0x1b, 0x00, 0x6e, 0x05, 0x1e, 0xf5, 0x87, 0xdb, 0x80,
0xcf, 0x99, 0xd9, 0xcc, 0xe6, 0xe6, 0xe6, 0xe6, 0x24, 0x49, 0x3e, 0x62,
0x66, 0x6f, 0xf2, 0xee, 0xec, 0x2f, 0x92, 0x6e, 0x93, 0xb4, 0xbf, 0xb3,
0xb3, 0x53, 0x79, 0xea, 0x6b, 0x6e, 0x23, 0x9d, 0x72, 0xb9, 0x3c, 0xc5,
0xcc, 0xde, 0x22, 0xe9, 0x2e, 0x3f, 0xff, 0xec, 0x07, 0xae, 0x36, 0xb3,
0xa7, 0x24, 0xdd, 0xed, 0x8f, 0x3d, 0x61, 0x66, 0x1f, 0x06, 0x36, 0x96,
0x4a, 0xa5, 0x7a, 0xde, 0xfa, 0x98, 0xeb, 0x30, 0xb4, 0x5c, 0x2e, 0x37,
0x03, 0x9f, 0x01, 0xae, 0x07, 0x66, 0x4a, 0x7a, 0xdc, 0xcc, 0x9e, 0x06,
0xde, 0x00, 0x1c, 0x92, 0x74, 0x33, 0xf0, 0x9d, 0xe5, 0xcb, 0x97, 0x0f,
0xe6, 0xb1, 0x7f, 0xb9, 0x5f, 0x23, 0x54, 0x2a, 0x95, 0xd3, 0x25, 0xad,
0x03, 0xde, 0x0f, 0x14, 0xfc, 0xe1, 0x11, 0x60, 0x43, 0x9a, 0xa6, 0xd7,
0x76, 0x76, 0x76, 0x0e, 0xe4, 0xb5, 0x6f, 0x11, 0xf9, 0x67, 0xbf, 0x99,
0xdd, 0xe2, 0xe7, 0x9f, 0x14, 0x68, 0x00, 0x5b, 0x81, 0xdb, 0x92, 0x24,
0x39, 0x90, 0xe7, 0x8e, 0xe5, 0x5e, 0x9c, 0x52, 0xa9, 0xe4, 0x9c, 0x73,
0xbb, 0x24, 0x95, 0xbd, 0xc5, 0xd4, 0x25, 0xf5, 0x48, 0xda, 0x5d, 0x2a,
0x95, 0x5c, 0xd8, 0x21, 0x38, 0x39, 0x18, 0x02, 0x34, 0xe6, 0x79, 0xee,
0x89, 0x08, 0x04, 0x71, 0x02, 0xff, 0xdf, 0x6e, 0x2d, 0x02, 0xa6, 0x78,
0xd7, 0x16, 0x05, 0x71, 0x4e, 0x96, 0xf5, 0x80, 0xd9, 0x30, 0xf0, 0x2b,
0x33, 0xdb, 0xe3, 0x0f, 0xfd, 0xd9, 0x07, 0x07, 0xf9, 0xee, 0xd7, 0xa9,
0x62, 0x36, 0x5b, 0xb6, 0x6c, 0x49, 0x80, 0x58, 0x12, 0x92, 0xd2, 0xf6,
0xf6, 0xf6, 0x46, 0x70, 0x8c, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02,
0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08,
0x1c, 0x2f, 0x16, 0x86, 0x60, 0x72, 0xa8, 0x56, 0xab, 0xe7, 0x02, 0xef,
0x24, 0x4b, 0xd7, 0x1a, 0x31, 0xb3, 0xdf, 0x9b, 0x59, 0xdf, 0xc2, 0x85,
0x0b, 0x1d, 0x40, 0xad, 0x56, 0x8b, 0x81, 0xa2, 0xa4, 0x4b, 0xc6, 0xb4,
0xf9, 0x5d, 0xb1, 0x58, 0xec, 0x1b, 0x7d, 0x8f, 0x24, 0x0c, 0xe3, 0xa4,
0x91, 0x00, 0xab, 0x80, 0x4b, 0x01, 0x27, 0xe9, 0x67, 0x66, 0x76, 0x4d,
0x7f, 0x7f, 0xff, 0xbf, 0xd3, 0x34, 0x45, 0xd2, 0x3c, 0x49, 0xdf, 0x04,
0xae, 0x20, 0xfb, 0xe5, 0xf6, 0x21, 0xe0, 0x81, 0xb1, 0x6f, 0x10, 0x72,
0x08, 0x26, 0x8f, 0x7e, 0xe0, 0x2b, 0xc0, 0x3f, 0xfd, 0xeb, 0xb7, 0x3b,
0xe7, 0x3e, 0xdb, 0x68, 0x34, 0x9a, 0x81, 0xe9, 0x92, 0xae, 0x05, 0xde,
0xe6, 0xcf, 0xed, 0x30, 0xb3, 0x1b, 0x80, 0xc7, 0x26, 0x74, 0x6b, 0xd5,
0x6a, 0xb5, 0x1d, 0x98, 0x0b, 0x34, 0x8d, 0xbb, 0x90, 0xc8, 0x12, 0xf6,
0x86, 0x24, 0x3d, 0x09, 0xf4, 0xb5, 0xb6, 0xb6, 0x3e, 0x13, 0xc6, 0xff,
0xe8, 0xec, 0xd8, 0xb1, 0x63, 0x2a, 0xf0, 0x1e, 0x33, 0x5b, 0x0f, 0xcc,
0x01, 0x9e, 0x96, 0xb4, 0x06, 0x48, 0xcc, 0xec, 0x46, 0xe0, 0x0c, 0x60,
0xc0, 0xcc, 0xae, 0x06, 0xee, 0x2b, 0x16, 0x8b, 0xc3, 0x47, 0x13, 0xa7,
0x17, 0x58, 0x76, 0x94, 0xeb, 0x1d, 0x02, 0xfa, 0x80, 0x2e, 0x7f, 0xc1,
0x9d, 0xc5, 0x62, 0xd1, 0x05, 0x19, 0x8e, 0x3a, 0xf7, 0xcc, 0x02, 0xbe,
0x0c, 0x7c, 0x0a, 0x98, 0x4e, 0x96, 0x70, 0x1f, 0x03, 0xb3, 0xfc, 0x78,
0xde, 0x01, 0xdc, 0xd2, 0xd2, 0xd2, 0x72, 0xf0, 0x48, 0x7e, 0x71, 0x2c,
0x0d, 0xff, 0x10, 0xf0, 0x57, 0xe0, 0x69, 0xff, 0xdc, 0x80, 0x19, 0xc0,
0x12, 0xe0, 0x02, 0xe0, 0x3c, 0x49, 0x67, 0x00, 0x9f, 0x04, 0x0e, 0x06,
0x09, 0x26, 0xa6, 0x5e, 0xaf, 0x3f, 0x1b, 0xc7, 0xf1, 0x5a, 0x33, 0x3b,
0xdf, 0xcc, 0x56, 0x02, 0xa7, 0xfb, 0x53, 0x23, 0xc0, 0xc3, 0x69, 0x9a,
0xae, 0xab, 0xd7, 0xeb, 0xcf, 0x4e, 0x34, 0x69, 0x1d, 0x89, 0x41, 0x49,
0xeb, 0xcd, 0xec, 0x0f, 0xc0, 0x68, 0xe9, 0x44, 0x62, 0x66, 0x8b, 0x25,
0xdd, 0xeb, 0xcd, 0xf1, 0x62, 0xe0, 0x1c, 0xe0, 0x6f, 0x41, 0x82, 0x89,
0x59, 0xbc, 0x78, 0xb1, 0xaa, 0xd5, 0xea, 0x3e, 0xb2, 0x7a, 0xa2, 0x12,
0x70, 0xa6, 0x3f, 0x75, 0x00, 0xb8, 0x35, 0x8e, 0xe3, 0x7d, 0x8b, 0x16,
0x2d, 0xd2, 0xff, 0x22, 0x8e, 0x03, 0x0e, 0x48, 0x7a, 0xaa, 0xb5, 0xb5,
0xb5, 0xee, 0xcd, 0x33, 0x31, 0xb3, 0x69, 0x92, 0xf6, 0x7b, 0xf5, 0x9d,
0x24, 0x85, 0xe1, 0x3f, 0x36, 0x92, 0x12, 0x33, 0x2b, 0x91, 0xe5, 0xd5,
0x8d, 0x52, 0xf0, 0x53, 0xc8, 0x56, 0x26, 0x28, 0x38, 0x9e, 0x48, 0x9c,
0xc4, 0xcc, 0x5e, 0x0b, 0x1c, 0xae, 0x56, 0xab, 0x0d, 0x49, 0x09, 0x70,
0xa6, 0x73, 0xee, 0x0a, 0xe0, 0x2c, 0x60, 0x2f, 0xf0, 0x43, 0x33, 0xdb,
0x15, 0x86, 0xfe, 0xe8, 0xd4, 0x6a, 0xb5, 0x02, 0xf0, 0x56, 0x49, 0xd7,
0x00, 0xa7, 0x8d, 0x39, 0x75, 0x1a, 0xf0, 0x79, 0x33, 0xab, 0xd5, 0x6a,
0xb5, 0x07, 0x8b, 0xc5, 0xe2, 0xc8, 0xf1, 0x8a, 0x33, 0x03, 0xf8, 0xc6,
0xf3, 0x51, 0x83, 0xbd, 0x28, 0x6e, 0x18, 0x01, 0x7a, 0x81, 0x6f, 0x3b,
0xe7, 0x0e, 0x85, 0xe1, 0x9f, 0x98, 0x9d, 0x3b, 0x77, 0x46, 0x92, 0x8a,
0xce, 0xb9, 0xaf, 0x01, 0xaf, 0x01, 0x86, 0x81, 0xdf, 0x7a, 0x0b, 0xba,
0x04, 0x98, 0xef, 0x0b, 0xbc, 0xfa, 0xab, 0xd5, 0xea, 0x8e, 0x96, 0x96,
0x16, 0x77, 0x3c, 0xeb, 0x9c, 0x06, 0x59, 0xbd, 0xcb, 0x43, 0xfe, 0xf1,
0x88, 0x17, 0xe4, 0x49, 0x1f, 0x69, 0xb4, 0x01, 0x37, 0xc6, 0x71, 0xdc,
0x1a, 0x24, 0x98, 0x30, 0x8c, 0xb6, 0x34, 0x4d, 0x5f, 0xe5, 0x85, 0x39,
0xcf, 0x07, 0x56, 0x5b, 0x81, 0x2f, 0x46, 0x51, 0xf4, 0x05, 0xe0, 0xef,
0xbe, 0xe9, 0xf9, 0x92, 0x6e, 0x02, 0xe6, 0x56, 0xab, 0x55, 0x3b, 0x1e,
0xcb, 0x39, 0x0c, 0xac, 0x97, 0xd4, 0x65, 0x66, 0x75, 0x33, 0x8b, 0x7c,
0xdb, 0xb9, 0x92, 0xae, 0x03, 0x2e, 0x03, 0xde, 0x27, 0xe9, 0xb0, 0x8f,
0xd8, 0x02, 0xe3, 0xf7, 0xc5, 0xcc, 0x66, 0x01, 0x9f, 0x06, 0x56, 0x7a,
0x4b, 0xe9, 0x37, 0xb3, 0x35, 0xc0, 0xae, 0x34, 0x4d, 0x01, 0xd6, 0x98,
0xd9, 0x9d, 0xc0, 0x39, 0x66, 0xf6, 0x0e, 0x60, 0xbb, 0xa4, 0xdb, 0xc7,
0x46, 0xbf, 0x13, 0x06, 0x04, 0x92, 0xf6, 0x02, 0xbb, 0x5a, 0x5a, 0x5a,
0xea, 0x63, 0xfc, 0xe7, 0x6e, 0x49, 0xf7, 0x99, 0xd9, 0x45, 0xde, 0xf5,
0x2d, 0x0f, 0x32, 0x4c, 0xc8, 0x07, 0xbc, 0x38, 0xcd, 0x3e, 0x32, 0xbb,
0x5d, 0xd2, 0xc6, 0xd1, 0xf1, 0xac, 0xd5, 0x6a, 0x0f, 0xfb, 0x72, 0xc9,
0x9b, 0x80, 0x99, 0x64, 0xc5, 0xc6, 0xbb, 0x81, 0xbb, 0x8e, 0x25, 0x4e,
0x04, 0xcc, 0x8e, 0xa2, 0x68, 0x6e, 0xad, 0x56, 0xab, 0x3b, 0xe7, 0x0c,
0x30, 0xbf, 0xb6, 0x59, 0x09, 0x4c, 0xf5, 0xae, 0xaf, 0x1a, 0x34, 0x98,
0x90, 0xfd, 0x7e, 0xe0, 0x0d, 0xd8, 0xeb, 0x9c, 0xfb, 0x79, 0xa3, 0xd1,
0x78, 0x7e, 0xd2, 0x8f, 0xe3, 0x78, 0xc4, 0x39, 0xf7, 0x3d, 0xe7, 0xdc,
0x7e, 0xbf, 0x34, 0x11, 0xf0, 0xcc, 0xd1, 0x76, 0x08, 0xba, 0xc7, 0xec,
0x10, 0x3c, 0x3a, 0x76, 0x11, 0x2a, 0x69, 0x9a, 0x99, 0x2d, 0xf0, 0xd1,
0x9a, 0x01, 0xbb, 0x24, 0x7d, 0xa9, 0xb5, 0xb5, 0xf5, 0xc7, 0x41, 0x87,
0xc9, 0x21, 0x39, 0xc2, 0xeb, 0xd1, 0x63, 0x6d, 0xe3, 0x7c, 0x28, 0x7e,
0x41, 0xba, 0x17, 0xd8, 0x6e, 0x66, 0xf7, 0x14, 0x0a, 0x85, 0x5f, 0x84,
0x21, 0x3c, 0x71, 0xe2, 0x5c, 0x47, 0x76, 0x73, 0x85, 0xf1, 0xbf, 0xf3,
0x8c, 0x6e, 0x7c, 0x36, 0x80, 0xe7, 0xcc, 0x6c, 0x4f, 0x53, 0x53, 0x53,
0xdf, 0xfc, 0xf9, 0xf3, 0x43, 0x99, 0xc5, 0x64, 0x06, 0x15, 0xd5, 0x6a,
0xd5, 0x24, 0x15, 0x2c, 0x63, 0x74, 0xc5, 0x9f, 0x16, 0x8b, 0xc5, 0x23,
0x0e, 0x7c, 0x5f, 0x5f, 0x5f, 0x22, 0x29, 0x1e, 0x15, 0x4c, 0x92, 0x6b,
0x69, 0x69, 0x09, 0x3b, 0x05, 0x93, 0xcd, 0xf8, 0x38, 0x3b, 0x10, 0x08,
0x04, 0x02, 0x81, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20,
0x10, 0x08, 0x04, 0x02, 0x81, 0x97, 0x94, 0xdc, 0xef, 0x42, 0xf7, 0xf6,
0xf6, 0x16, 0x80, 0xc8, 0xcc, 0x14, 0xc7, 0x71, 0xda, 0xd6, 0xd6, 0xd6,
0x08, 0xe2, 0x9c, 0x04, 0xf4, 0xf4, 0xf4, 0xcc, 0x34, 0xb3, 0x2b, 0xcd,
0x6c, 0x36, 0x59, 0x96, 0x6a, 0x0d, 0xf8, 0x4d, 0xa9, 0x54, 0x1a, 0x09,
0xe2, 0xbc, 0x8c, 0x74, 0x77, 0x77, 0x4f, 0x31, 0xb3, 0x4b, 0xcd, 0x6c,
0x03, 0x2f, 0x64, 0x52, 0xee, 0x90, 0x74, 0xb9, 0xa4, 0xc7, 0x56, 0xac,
0x58, 0x91, 0xfb, 0xea, 0x87, 0xdc, 0x16, 0x4f, 0xc5, 0x71, 0xdc, 0x14,
0x45, 0xd1, 0x55, 0xbc, 0xb8, 0x96, 0x68, 0xbe, 0x99, 0xad, 0x8a, 0xa2,
0x68, 0xea, 0xa9, 0x60, 0x39, 0xb9, 0x14, 0xa7, 0x52, 0xa9, 0x24, 0xc0,
0xeb, 0x24, 0x5d, 0x48, 0x76, 0xeb, 0xc8, 0x3d, 0x64, 0xc9, 0x27, 0xd3,
0x80, 0x0f, 0x49, 0x9a, 0xd3, 0xd5, 0xd5, 0x65, 0x41, 0x9c, 0x97, 0x01,
0x49, 0xcd, 0x92, 0x3e, 0x08, 0xcc, 0x06, 0x0e, 0x47, 0x51, 0x74, 0xa7,
0x2f, 0x57, 0x49, 0x81, 0x73, 0xa3, 0x28, 0x7a, 0x57, 0xa1, 0x50, 0x98,
0x1a, 0xc4, 0x39, 0xf1, 0x56, 0x13, 0x01, 0x67, 0x03, 0x97, 0x93, 0xa5,
0xb9, 0xee, 0x91, 0xf4, 0x13, 0x49, 0xdf, 0x25, 0x4b, 0x23, 0x6e, 0x96,
0xb4, 0x5a, 0xd2, 0x2b, 0x2a, 0x95, 0x8a, 0x05, 0x71, 0x4e, 0x2c, 0x4d,
0x66, 0x76, 0x25, 0x59, 0x8d, 0xd0, 0x30, 0xf0, 0x53, 0xe0, 0x09, 0xe7,
0xdc, 0x23, 0xc0, 0x3f, 0x7c, 0x9b, 0xd7, 0x03, 0x17, 0x49, 0x2a, 0x04,
0x71, 0x4e, 0xac, 0xd5, 0xcc, 0x93, 0xf4, 0x5e, 0xb2, 0x94, 0xe0, 0x7d,
0xc0, 0x86, 0x8e, 0x8e, 0x8e, 0x43, 0x51, 0x14, 0x0d, 0x00, 0x77, 0x03,
0x83, 0x7e, 0xee, 0xf9, 0x98, 0x73, 0x6e, 0x46, 0x08, 0xa5, 0x4f, 0x10,
0xe5, 0x72, 0xb9, 0x89, 0xac, 0xf0, 0xf5, 0xab, 0x64, 0xc5, 0xaf, 0x87,
0xc9, 0xd2, 0x86, 0xeb, 0xbe, 0x2f, 0xb3, 0x81, 0x45, 0x64, 0xc9, 0x92,
0x03, 0x66, 0xf6, 0x71, 0xe0, 0xd7, 0x79, 0x5d, 0xf7, 0xe4, 0xe6, 0x26,
0x11, 0x9b, 0x36, 0x6d, 0x32, 0x49, 0xb3, 0xcd, 0x6c, 0xb5, 0xb7, 0x0c,
0xe7, 0x3f, 0x7f, 0xdb, 0xb8, 0xa6, 0x8e, 0x2c, 0xe1, 0x71, 0x86, 0x73,
0xee, 0x2a, 0xe0, 0x8f, 0xc0, 0x40, 0x10, 0x67, 0x32, 0x3f, 0x68, 0x92,
0x4c, 0x05, 0x2e, 0x93, 0xb4, 0xc0, 0x47, 0x6c, 0xdb, 0xcd, 0xec, 0x7e,
0x3f, 0xef, 0xbc, 0xe0, 0x0a, 0xcc, 0x9a, 0x25, 0xad, 0x06, 0x5e, 0x69,
0x66, 0x9d, 0xc0, 0x92, 0x72, 0xb9, 0xdc, 0xd5, 0xd1, 0xd1, 0x51, 0x0f,
0xe2, 0x4c, 0x02, 0x1b, 0x37, 0x6e, 0x34, 0xe7, 0xdc, 0x2c, 0x6f, 0x35,
0xcd, 0xc0, 0xa0, 0x99, 0xdd, 0x01, 0x7c, 0xbf, 0xa3, 0xa3, 0x63, 0x78,
0x9c, 0xeb, 0x9b, 0xee, 0xa3, 0xb8, 0x4f, 0x78, 0xd7, 0xf7, 0x51, 0x49,
0x7f, 0x62, 0x5c, 0x79, 0x45, 0x08, 0x08, 0x5e, 0xba, 0xdd, 0x00, 0xcc,
0xec, 0x42, 0xb2, 0xf2, 0x94, 0x04, 0xf8, 0x97, 0xa4, 0x07, 0x9c, 0x73,
0xff, 0x35, 0x97, 0x44, 0x51, 0x34, 0x6c, 0x66, 0x3f, 0x02, 0x9e, 0xf3,
0x41, 0xc3, 0x4a, 0x33, 0xbb, 0xa0, 0x5c, 0x2e, 0x4f, 0x09, 0x01, 0xc1,
0xe4, 0x05, 0x03, 0x67, 0x91, 0xdd, 0x85, 0x29, 0x02, 0x76, 0x01, 0x0f,
0x76, 0x74, 0x74, 0x1c, 0x71, 0xa2, 0xdf, 0xbc, 0x79, 0x73, 0x53, 0x9a,
0xa6, 0xab, 0xc8, 0x6e, 0x69, 0xd2, 0x00, 0x2a, 0x66, 0xd6, 0x5f, 0x2a,
0x95, 0x0e, 0x06, 0x71, 0x26, 0x81, 0xee, 0xee, 0xee, 0xd1, 0xff, 0xc6,
0x31, 0x20, 0x3d, 0xd6, 0xc6, 0x66, 0xa5, 0x52, 0x89, 0xd2, 0x34, 0x8d,
0x7d, 0xf5, 0x84, 0x8d, 0x77, 0x7f, 0x79, 0xe0, 0x3f, 0xad, 0x97, 0x1b,
0xc1, 0x0a, 0xea, 0xec, 0x90, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int gamepad_face_axby_png_len = 2033;
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

+51 -313
View File
@@ -1,314 +1,52 @@
unsigned char gamepad_touchpad_bmp[] = {
0x42, 0x4d, 0x8c, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x04,
0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x9f, 0x00,
0x00, 0x00, 0x01, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x0a,
0x00, 0x00, 0x13, 0x0b, 0x00, 0x00, 0x13, 0x0b, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff,
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x47,
0x52, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
0x01, 0x00, 0x02, 0x02, 0x02, 0x00, 0x03, 0x03, 0x03, 0x00, 0x04, 0x04,
0x04, 0x00, 0x05, 0x05, 0x05, 0x00, 0x06, 0x06, 0x06, 0x00, 0x07, 0x07,
0x07, 0x00, 0x08, 0x08, 0x08, 0x00, 0x09, 0x09, 0x09, 0x00, 0x0a, 0x0a,
0x0a, 0x00, 0x0b, 0x0b, 0x0b, 0x00, 0x0c, 0x0c, 0x0c, 0x00, 0x0d, 0x0d,
0x0d, 0x00, 0x0e, 0x0e, 0x0e, 0x00, 0x0f, 0x0f, 0x0f, 0x00, 0x10, 0x10,
0x10, 0x00, 0x11, 0x11, 0x11, 0x00, 0x12, 0x12, 0x12, 0x00, 0x13, 0x13,
0x13, 0x00, 0x14, 0x14, 0x14, 0x00, 0x15, 0x15, 0x15, 0x00, 0x16, 0x16,
0x16, 0x00, 0x17, 0x17, 0x17, 0x00, 0x18, 0x18, 0x18, 0x00, 0x19, 0x19,
0x19, 0x00, 0x1a, 0x1a, 0x1a, 0x00, 0x1b, 0x1b, 0x1b, 0x00, 0x1c, 0x1c,
0x1c, 0x00, 0x1d, 0x1d, 0x1d, 0x00, 0x1e, 0x1e, 0x1e, 0x00, 0x1f, 0x1f,
0x1f, 0x00, 0x20, 0x20, 0x20, 0x00, 0x21, 0x21, 0x21, 0x00, 0x22, 0x22,
0x22, 0x00, 0x23, 0x23, 0x23, 0x00, 0x24, 0x24, 0x24, 0x00, 0x25, 0x25,
0x25, 0x00, 0x26, 0x26, 0x26, 0x00, 0x27, 0x27, 0x27, 0x00, 0x28, 0x28,
0x28, 0x00, 0x29, 0x29, 0x29, 0x00, 0x2a, 0x2a, 0x2a, 0x00, 0x2b, 0x2b,
0x2b, 0x00, 0x2c, 0x2c, 0x2c, 0x00, 0x2d, 0x2d, 0x2d, 0x00, 0x2e, 0x2e,
0x2e, 0x00, 0x2f, 0x2f, 0x2f, 0x00, 0x30, 0x30, 0x30, 0x00, 0x31, 0x31,
0x31, 0x00, 0x32, 0x32, 0x32, 0x00, 0x33, 0x33, 0x33, 0x00, 0x34, 0x34,
0x34, 0x00, 0x35, 0x35, 0x35, 0x00, 0x36, 0x36, 0x36, 0x00, 0x37, 0x37,
0x37, 0x00, 0x38, 0x38, 0x38, 0x00, 0x39, 0x39, 0x39, 0x00, 0x3a, 0x3a,
0x3a, 0x00, 0x3b, 0x3b, 0x3b, 0x00, 0x3c, 0x3c, 0x3c, 0x00, 0x3d, 0x3d,
0x3d, 0x00, 0x3e, 0x3e, 0x3e, 0x00, 0x3f, 0x3f, 0x3f, 0x00, 0x40, 0x40,
0x40, 0x00, 0x41, 0x41, 0x41, 0x00, 0x42, 0x42, 0x42, 0x00, 0x43, 0x43,
0x43, 0x00, 0x44, 0x44, 0x44, 0x00, 0x45, 0x45, 0x45, 0x00, 0x46, 0x46,
0x46, 0x00, 0x47, 0x47, 0x47, 0x00, 0x48, 0x48, 0x48, 0x00, 0x49, 0x49,
0x49, 0x00, 0x4a, 0x4a, 0x4a, 0x00, 0x4b, 0x4b, 0x4b, 0x00, 0x4c, 0x4c,
0x4c, 0x00, 0x4d, 0x4d, 0x4d, 0x00, 0x4e, 0x4e, 0x4e, 0x00, 0x4f, 0x4f,
0x4f, 0x00, 0x50, 0x50, 0x50, 0x00, 0x51, 0x51, 0x51, 0x00, 0x52, 0x52,
0x52, 0x00, 0x53, 0x53, 0x53, 0x00, 0x54, 0x54, 0x54, 0x00, 0x55, 0x55,
0x55, 0x00, 0x56, 0x56, 0x56, 0x00, 0x57, 0x57, 0x57, 0x00, 0x58, 0x58,
0x58, 0x00, 0x59, 0x59, 0x59, 0x00, 0x5a, 0x5a, 0x5a, 0x00, 0x5b, 0x5b,
0x5b, 0x00, 0x5c, 0x5c, 0x5c, 0x00, 0x5d, 0x5d, 0x5d, 0x00, 0x5e, 0x5e,
0x5e, 0x00, 0x5f, 0x5f, 0x5f, 0x00, 0x60, 0x60, 0x60, 0x00, 0x61, 0x61,
0x61, 0x00, 0x62, 0x62, 0x62, 0x00, 0x63, 0x63, 0x63, 0x00, 0x64, 0x64,
0x64, 0x00, 0x65, 0x65, 0x65, 0x00, 0x66, 0x66, 0x66, 0x00, 0x67, 0x67,
0x67, 0x00, 0x68, 0x68, 0x68, 0x00, 0x69, 0x69, 0x69, 0x00, 0x6a, 0x6a,
0x6a, 0x00, 0x6b, 0x6b, 0x6b, 0x00, 0x6c, 0x6c, 0x6c, 0x00, 0x6d, 0x6d,
0x6d, 0x00, 0x6e, 0x6e, 0x6e, 0x00, 0x6f, 0x6f, 0x6f, 0x00, 0x70, 0x70,
0x70, 0x00, 0x71, 0x71, 0x71, 0x00, 0x72, 0x72, 0x72, 0x00, 0x73, 0x73,
0x73, 0x00, 0x74, 0x74, 0x74, 0x00, 0x75, 0x75, 0x75, 0x00, 0x76, 0x76,
0x76, 0x00, 0x77, 0x77, 0x77, 0x00, 0x78, 0x78, 0x78, 0x00, 0x79, 0x79,
0x79, 0x00, 0x7a, 0x7a, 0x7a, 0x00, 0x7b, 0x7b, 0x7b, 0x00, 0x7c, 0x7c,
0x7c, 0x00, 0x7d, 0x7d, 0x7d, 0x00, 0x7e, 0x7e, 0x7e, 0x00, 0x7f, 0x7f,
0x7f, 0x00, 0x80, 0x80, 0x80, 0x00, 0x81, 0x81, 0x81, 0x00, 0x82, 0x82,
0x82, 0x00, 0x83, 0x83, 0x83, 0x00, 0x84, 0x84, 0x84, 0x00, 0x85, 0x85,
0x85, 0x00, 0x86, 0x86, 0x86, 0x00, 0x87, 0x87, 0x87, 0x00, 0x88, 0x88,
0x88, 0x00, 0x89, 0x89, 0x89, 0x00, 0x8a, 0x8a, 0x8a, 0x00, 0x8b, 0x8b,
0x8b, 0x00, 0x8c, 0x8c, 0x8c, 0x00, 0x8d, 0x8d, 0x8d, 0x00, 0x8e, 0x8e,
0x8e, 0x00, 0x8f, 0x8f, 0x8f, 0x00, 0x90, 0x90, 0x90, 0x00, 0x91, 0x91,
0x91, 0x00, 0x92, 0x92, 0x92, 0x00, 0x93, 0x93, 0x93, 0x00, 0x94, 0x94,
0x94, 0x00, 0x95, 0x95, 0x95, 0x00, 0x96, 0x96, 0x96, 0x00, 0x97, 0x97,
0x97, 0x00, 0x98, 0x98, 0x98, 0x00, 0x99, 0x99, 0x99, 0x00, 0x9a, 0x9a,
0x9a, 0x00, 0x9b, 0x9b, 0x9b, 0x00, 0x9c, 0x9c, 0x9c, 0x00, 0x9d, 0x9d,
0x9d, 0x00, 0x9e, 0x9e, 0x9e, 0x00, 0x9f, 0x9f, 0x9f, 0x00, 0xa0, 0xa0,
0xa0, 0x00, 0xa1, 0xa1, 0xa1, 0x00, 0xa2, 0xa2, 0xa2, 0x00, 0xa3, 0xa3,
0xa3, 0x00, 0xa4, 0xa4, 0xa4, 0x00, 0xa5, 0xa5, 0xa5, 0x00, 0xa6, 0xa6,
0xa6, 0x00, 0xa7, 0xa7, 0xa7, 0x00, 0xa8, 0xa8, 0xa8, 0x00, 0xa9, 0xa9,
0xa9, 0x00, 0xaa, 0xaa, 0xaa, 0x00, 0xab, 0xab, 0xab, 0x00, 0xac, 0xac,
0xac, 0x00, 0xad, 0xad, 0xad, 0x00, 0xae, 0xae, 0xae, 0x00, 0xaf, 0xaf,
0xaf, 0x00, 0xb0, 0xb0, 0xb0, 0x00, 0xb1, 0xb1, 0xb1, 0x00, 0xb2, 0xb2,
0xb2, 0x00, 0xb3, 0xb3, 0xb3, 0x00, 0xb4, 0xb4, 0xb4, 0x00, 0xb5, 0xb5,
0xb5, 0x00, 0xb6, 0xb6, 0xb6, 0x00, 0xb7, 0xb7, 0xb7, 0x00, 0xb8, 0xb8,
0xb8, 0x00, 0xb9, 0xb9, 0xb9, 0x00, 0xba, 0xba, 0xba, 0x00, 0xbb, 0xbb,
0xbb, 0x00, 0xbc, 0xbc, 0xbc, 0x00, 0xbd, 0xbd, 0xbd, 0x00, 0xbe, 0xbe,
0xbe, 0x00, 0xbf, 0xbf, 0xbf, 0x00, 0xc0, 0xc0, 0xc0, 0x00, 0xc1, 0xc1,
0xc1, 0x00, 0xc2, 0xc2, 0xc2, 0x00, 0xc3, 0xc3, 0xc3, 0x00, 0xc4, 0xc4,
0xc4, 0x00, 0xc5, 0xc5, 0xc5, 0x00, 0xc6, 0xc6, 0xc6, 0x00, 0xc7, 0xc7,
0xc7, 0x00, 0xc8, 0xc8, 0xc8, 0x00, 0xc9, 0xc9, 0xc9, 0x00, 0xca, 0xca,
0xca, 0x00, 0xcb, 0xcb, 0xcb, 0x00, 0xcc, 0xcc, 0xcc, 0x00, 0xcd, 0xcd,
0xcd, 0x00, 0xce, 0xce, 0xce, 0x00, 0xcf, 0xcf, 0xcf, 0x00, 0xd0, 0xd0,
0xd0, 0x00, 0xd1, 0xd1, 0xd1, 0x00, 0xd2, 0xd2, 0xd2, 0x00, 0xd3, 0xd3,
0xd3, 0x00, 0xd4, 0xd4, 0xd4, 0x00, 0xd5, 0xd5, 0xd5, 0x00, 0xd6, 0xd6,
0xd6, 0x00, 0xd7, 0xd7, 0xd7, 0x00, 0xd8, 0xd8, 0xd8, 0x00, 0xd9, 0xd9,
0xd9, 0x00, 0xda, 0xda, 0xda, 0x00, 0xdb, 0xdb, 0xdb, 0x00, 0xdc, 0xdc,
0xdc, 0x00, 0xdd, 0xdd, 0xdd, 0x00, 0xde, 0xde, 0xde, 0x00, 0xdf, 0xdf,
0xdf, 0x00, 0xe0, 0xe0, 0xe0, 0x00, 0xe1, 0xe1, 0xe1, 0x00, 0xe2, 0xe2,
0xe2, 0x00, 0xe3, 0xe3, 0xe3, 0x00, 0xe4, 0xe4, 0xe4, 0x00, 0xe5, 0xe5,
0xe5, 0x00, 0xe6, 0xe6, 0xe6, 0x00, 0xe7, 0xe7, 0xe7, 0x00, 0xe8, 0xe8,
0xe8, 0x00, 0xe9, 0xe9, 0xe9, 0x00, 0xea, 0xea, 0xea, 0x00, 0xeb, 0xeb,
0xeb, 0x00, 0xec, 0xec, 0xec, 0x00, 0xed, 0xed, 0xed, 0x00, 0xee, 0xee,
0xee, 0x00, 0xef, 0xef, 0xef, 0x00, 0xf0, 0xf0, 0xf0, 0x00, 0xf1, 0xf1,
0xf1, 0x00, 0xf2, 0xf2, 0xf2, 0x00, 0xf3, 0xf3, 0xf3, 0x00, 0xf4, 0xf4,
0xf4, 0x00, 0xf5, 0xf5, 0xf5, 0x00, 0xf6, 0xf6, 0xf6, 0x00, 0xf7, 0xf7,
0xf7, 0x00, 0xf8, 0xf8, 0xf8, 0x00, 0xf9, 0xf9, 0xf9, 0x00, 0xfa, 0xfa,
0xfa, 0x00, 0xfb, 0xfb, 0xfb, 0x00, 0xfc, 0xfc, 0xfc, 0x00, 0xfd, 0xfd,
0xfd, 0x00, 0xfe, 0xfe, 0xfe, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff,
0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff,
0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff,
0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff,
0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0x96, 0xff, 0x01, 0xfb, 0xd0, 0xff,
0x01, 0xfb, 0x98, 0xff, 0x00, 0x00, 0x97, 0xff, 0x01, 0x53, 0x01, 0x17,
0xce, 0x00, 0x01, 0x17, 0x01, 0x53, 0x97, 0xff, 0x00, 0x00, 0x94, 0xff,
0x00, 0x06, 0xfe, 0xc1, 0x17, 0x74, 0xbc, 0xc8, 0xcc, 0xc7, 0x00, 0x06,
0xc8, 0xbc, 0x74, 0x17, 0xc1, 0xfe, 0x94, 0xff, 0x00, 0x00, 0x95, 0xff,
0x00, 0x03, 0x3a, 0x86, 0xc6, 0x00, 0xd0, 0xc7, 0x00, 0x03, 0xc6, 0x86,
0x3a, 0x00, 0x95, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x05, 0xfd, 0xff,
0x9d, 0x5e, 0xc2, 0x00, 0xd2, 0xc7, 0x00, 0x03, 0xc2, 0x5e, 0x9d, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfb, 0xff, 0x5f, 0xa1,
0xd4, 0xc7, 0x01, 0xa1, 0x01, 0x5f, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x25, 0xba, 0xd4, 0xc7, 0x01, 0xba, 0x01, 0x25,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3, 0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x00, 0xc3,
0xd4, 0xc7, 0x01, 0xc3, 0x01, 0x00, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x04, 0xfa, 0xff, 0x00, 0xc0, 0xd4, 0xc7, 0x01, 0xc0, 0x01, 0x00,
0x94, 0xff, 0x00, 0x00, 0x92, 0xff, 0x00, 0x04, 0xfa, 0xff, 0x4d, 0xb0,
0xd4, 0xc7, 0x01, 0xb0, 0x01, 0x4d, 0x94, 0xff, 0x00, 0x00, 0x92, 0xff,
0x00, 0x05, 0xfc, 0xff, 0x7a, 0x86, 0xc6, 0x00, 0xd2, 0xc7, 0x00, 0x03,
0xc6, 0x86, 0x7a, 0x00, 0x94, 0xff, 0x00, 0x00, 0x94, 0xff, 0x00, 0x03,
0xc3, 0x36, 0xb2, 0x00, 0xd2, 0xc7, 0x00, 0x03, 0xb2, 0x36, 0xc3, 0x00,
0x94, 0xff, 0x00, 0x00, 0x94, 0xff, 0x00, 0x04, 0xf7, 0x77, 0x43, 0xb1,
0xd0, 0xc7, 0x00, 0x04, 0xb1, 0x43, 0x77, 0xf7, 0x94, 0xff, 0x00, 0x00,
0x95, 0xff, 0x00, 0x06, 0xf1, 0x76, 0x25, 0x00, 0xaf, 0xc5, 0xca, 0xc8,
0x00, 0x06, 0xc5, 0xaf, 0x00, 0x25, 0x76, 0xf1, 0x95, 0xff, 0x00, 0x00,
0x96, 0xff, 0x00, 0x04, 0xfa, 0xcc, 0x76, 0x07, 0xcc, 0x00, 0x00, 0x04,
0x07, 0x76, 0xcc, 0xfa, 0x96, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff,
0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff,
0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff,
0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff,
0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff,
0xff, 0xff, 0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x01, 0xff, 0x01, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff,
0x01, 0xff, 0x00, 0x01
unsigned char gamepad_touchpad_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x9f,
0x08, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xbc, 0x3e, 0x99, 0x00, 0x00, 0x02,
0x11, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0xda, 0xb1, 0x2e, 0x43,
0x51, 0x18, 0xc0, 0xf1, 0x7b, 0xb4, 0xc2, 0x20, 0xa6, 0xa6, 0x9e, 0xa0,
0x8b, 0xc1, 0x64, 0x6a, 0xa4, 0x31, 0x1a, 0x49, 0xc4, 0x03, 0x78, 0x00,
0x7d, 0x00, 0x8b, 0x45, 0xcc, 0xbc, 0x82, 0xad, 0x91, 0x18, 0x59, 0x1a,
0x86, 0x8e, 0x9d, 0x74, 0x64, 0x17, 0x06, 0x83, 0x48, 0x90, 0xe2, 0x7a,
0x85, 0x13, 0x89, 0xe4, 0xf8, 0xfc, 0x7e, 0x4f, 0xf0, 0xdd, 0x73, 0xfe,
0x39, 0x3d, 0xf7, 0xa6, 0xa9, 0xae, 0xf8, 0xcf, 0x66, 0x2c, 0x81, 0x00,
0x10, 0x00, 0x02, 0x40, 0x00, 0x08, 0x00, 0x01, 0x20, 0x00, 0x04, 0x80,
0x00, 0x10, 0x00, 0x02, 0x40, 0x00, 0x08, 0x00, 0x01, 0x20, 0x00, 0x04,
0x80, 0x00, 0x10, 0x00, 0x51, 0x34, 0xcb, 0x1c, 0x6b, 0x7a, 0x33, 0x38,
0x7e, 0x0f, 0xb4, 0xcc, 0x73, 0xfd, 0x9d, 0x95, 0xd9, 0x22, 0x27, 0x4b,
0x45, 0xfe, 0x29, 0xf4, 0xf9, 0xf0, 0xfc, 0xf6, 0xbc, 0xdd, 0x08, 0xb3,
0xff, 0x9f, 0x8f, 0x5b, 0x9d, 0xad, 0xfd, 0x45, 0x01, 0x64, 0x7a, 0x3b,
0x18, 0xef, 0xb5, 0x83, 0x1d, 0xb5, 0x8f, 0x27, 0xab, 0x07, 0xf3, 0xee,
0x00, 0x79, 0xc6, 0x57, 0xfd, 0x68, 0xfb, 0x5f, 0xb5, 0xfb, 0x57, 0x63,
0x97, 0xc0, 0xbc, 0xf3, 0xb2, 0xba, 0xd8, 0x6c, 0xc5, 0xbb, 0x6d, 0xb5,
0x36, 0x2f, 0x04, 0x90, 0xe5, 0xab, 0x9a, 0x2c, 0xa7, 0x78, 0x01, 0xa4,
0xe5, 0x89, 0x3b, 0x40, 0xde, 0x1b, 0xc0, 0x6c, 0xba, 0x9e, 0x0b, 0xf8,
0xc2, 0xf5, 0xbe, 0x5e, 0x3b, 0x01, 0x32, 0x35, 0x02, 0xee, 0x7f, 0xa1,
0x0f, 0xe5, 0x43, 0xd0, 0x3f, 0x27, 0x00, 0x01, 0x20, 0x00, 0x04, 0x80,
0x00, 0x10, 0x00, 0x02, 0x40, 0x00, 0x08, 0x00, 0x01, 0x20, 0x00, 0x04,
0x80, 0x00, 0x10, 0x00, 0x02, 0x40, 0x00, 0x08, 0x00, 0x01, 0x20, 0x00,
0x04, 0x80, 0x00, 0x10, 0x00, 0x02, 0x40, 0x00, 0x08, 0x00, 0x01, 0x20,
0x00, 0x04, 0x80, 0x00, 0x10, 0x00, 0x02, 0x40, 0x00, 0x08, 0x00, 0x01,
0x20, 0x00, 0x04, 0x80, 0x00, 0x10, 0x00, 0x02, 0x40, 0x00, 0x08, 0x00,
0x01, 0x20, 0x00, 0x04, 0x80, 0x00, 0x10, 0x00, 0x02, 0x40, 0x00, 0x08,
0x00, 0x01, 0x20, 0x00, 0x04, 0x80, 0x00, 0x10, 0x00, 0x02, 0x40, 0x00,
0x08, 0x00, 0x01, 0x20, 0x00, 0x04, 0x80, 0x00, 0x10, 0x00, 0x02, 0x40,
0x00, 0x08, 0x00, 0x01, 0x20, 0x00, 0x04, 0x80, 0x00, 0x10, 0x00, 0x02,
0x40, 0x00, 0x08, 0x00, 0x01, 0x20, 0x00, 0x04, 0x80, 0x00, 0x10, 0x00,
0x02, 0x40, 0x00, 0x08, 0x00, 0x01, 0x20, 0x00, 0x04, 0x80, 0x00, 0x10,
0x00, 0x02, 0x10, 0x00, 0x02, 0x40, 0x00, 0x08, 0x00, 0x01, 0x20, 0x00,
0x04, 0x80, 0x00, 0x10, 0x00, 0x02, 0x40, 0x00, 0x08, 0x00, 0x01, 0x20,
0x00, 0x04, 0x80, 0x00, 0x10, 0xc0, 0xef, 0xeb, 0xbc, 0x46, 0x5c, 0xea,
0xd7, 0x8e, 0x00, 0xb2, 0xa4, 0xaa, 0x7b, 0x1f, 0x31, 0x80, 0xfb, 0xae,
0x00, 0x32, 0x47, 0xea, 0x0d, 0xa7, 0xf1, 0xf6, 0x7f, 0x3a, 0xec, 0x09,
0x20, 0x73, 0xa4, 0xdd, 0xbb, 0x51, 0x1d, 0x6d, 0xff, 0xeb, 0xd1, 0xdd,
0x6e, 0x89, 0x73, 0x35, 0x8b, 0x5c, 0xac, 0xa3, 0x9d, 0xa7, 0x8d, 0x85,
0x48, 0x0d, 0xa4, 0x97, 0xcb, 0xd3, 0x41, 0x9d, 0x4a, 0x9c, 0xac, 0xd0,
0x65, 0xde, 0x1e, 0x3d, 0x84, 0x3a, 0x00, 0x96, 0xd6, 0xce, 0x0a, 0x4d,
0xb3, 0xcc, 0x00, 0x3e, 0x9a, 0x55, 0x2c, 0xc5, 0x3e, 0x50, 0x0a, 0xf7,
0x63, 0xcb, 0xdf, 0xff, 0x0e, 0x80, 0x00, 0x10, 0x00, 0x02, 0x40, 0x00,
0x08, 0x00, 0x01, 0x20, 0x00, 0x04, 0x80, 0x00, 0x10, 0x00, 0x02, 0x40,
0x00, 0x08, 0x00, 0x01, 0x20, 0x00, 0x04, 0x80, 0x00, 0x10, 0x00, 0x3f,
0xf1, 0x0d, 0xad, 0x48, 0x43, 0x0c, 0x80, 0x83, 0x4d, 0x10, 0x00, 0x00,
0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int gamepad_touchpad_bmp_len = 3724;
unsigned int gamepad_touchpad_png_len = 586;
Binary file not shown.

After

Width:  |  Height:  |  Size: 586 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

+30 -105
View File
@@ -1,106 +1,31 @@
unsigned char gamepad_wired_bmp[] = {
0x42, 0x4d, 0xca, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00,
0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10, 0x00,
0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x40, 0x04,
0x00, 0x00, 0xd7, 0x0d, 0x00, 0x00, 0xd7, 0x0d, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff,
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x42, 0x47,
0x52, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00,
0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
0x00, 0x5e, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00,
0x00, 0xa9, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00,
0x00, 0xc5, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x13, 0x00, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00,
0x00, 0x1e, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00,
0x00, 0xf3, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x71, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00,
0x00, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00,
0x00, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xe1, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1d, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x25, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00,
0x00, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00,
0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x56, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00,
0x00, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00,
0x00, 0xed, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1a, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
0x00, 0xed, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x8d, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00,
0x00, 0xdf, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00,
0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00,
0x00, 0xf2, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00,
0x00, 0xed, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
0x00, 0x5a, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x5b, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00,
0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00,
0x00, 0x55, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00
unsigned char gamepad_wired_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x10,
0x08, 0x06, 0x00, 0x00, 0x00, 0xf0, 0x31, 0x94, 0x5f, 0x00, 0x00, 0x01,
0x11, 0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xad, 0xd2, 0xbd, 0x4a, 0x43,
0x41, 0x10, 0x86, 0xe1, 0x27, 0x89, 0x49, 0x21, 0xa2, 0xa8, 0x9d, 0x85,
0x28, 0x12, 0xbc, 0x02, 0x0b, 0xb1, 0x11, 0xc4, 0x4e, 0x0c, 0x76, 0x21,
0x42, 0x4a, 0xab, 0x08, 0xe6, 0x1e, 0xec, 0xc4, 0xd2, 0xce, 0x46, 0x3b,
0xaf, 0xc0, 0x46, 0xb4, 0x12, 0xbc, 0x00, 0x3b, 0x0b, 0x41, 0x1b, 0x11,
0x6c, 0x34, 0xa8, 0xf8, 0x77, 0x6c, 0xf6, 0x40, 0x3c, 0x6c, 0x4c, 0x0c,
0x0e, 0x2c, 0xbb, 0x3b, 0xfb, 0xed, 0x3b, 0xb3, 0xb3, 0x93, 0x43, 0x05,
0x25, 0x4c, 0x63, 0x07, 0x89, 0x3f, 0x5a, 0x1e, 0x43, 0x38, 0xc1, 0x1d,
0x8a, 0xfa, 0xb4, 0xf7, 0x10, 0x3d, 0x41, 0xe3, 0x17, 0xdd, 0x14, 0x6a,
0x58, 0xc3, 0x58, 0xf6, 0x30, 0x69, 0x1b, 0xcd, 0xc8, 0xe5, 0x1c, 0xb6,
0xf1, 0x88, 0x53, 0x5c, 0xe0, 0x21, 0x00, 0x7b, 0x86, 0x6c, 0xe1, 0x1a,
0x33, 0x6d, 0xbe, 0x45, 0x3c, 0x61, 0xa1, 0x17, 0x48, 0x21, 0x44, 0xad,
0x46, 0xe0, 0xbb, 0x38, 0x4e, 0x37, 0xf5, 0x20, 0xdc, 0x47, 0x39, 0x23,
0x9c, 0x08, 0xf0, 0xd9, 0x08, 0xa4, 0x86, 0x9b, 0xf4, 0x77, 0x0e, 0xd1,
0x0a, 0xef, 0xbd, 0x8a, 0x64, 0x92, 0x16, 0x3f, 0x6b, 0x1f, 0xe9, 0x79,
0xde, 0x3f, 0x58, 0xbf, 0x90, 0x32, 0x96, 0x30, 0x88, 0xfa, 0x40, 0x70,
0x3e, 0x63, 0x38, 0x22, 0x1e, 0x09, 0x73, 0x2b, 0xe3, 0x5f, 0xc1, 0x46,
0x58, 0x1f, 0xa4, 0x99, 0x9c, 0x61, 0x35, 0x02, 0xa9, 0xe0, 0x12, 0xf7,
0xbd, 0xa4, 0x37, 0x8e, 0x5b, 0xec, 0x61, 0x32, 0x74, 0xe4, 0x66, 0xe8,
0x85, 0xf9, 0x88, 0xbe, 0x99, 0x69, 0x8d, 0x1f, 0xdf, 0x79, 0x84, 0x57,
0x7c, 0xe1, 0x1c, 0x73, 0x1d, 0x82, 0x36, 0xda, 0x00, 0x6f, 0x9d, 0x8a,
0x5d, 0xea, 0x92, 0x79, 0x31, 0xf4, 0xd7, 0x28, 0xd6, 0x0b, 0x11, 0x41,
0x82, 0xcf, 0x2e, 0x90, 0x04, 0xcb, 0xa1, 0x0c, 0x2f, 0xdf, 0x50, 0x7e,
0x3f, 0xf6, 0xd5, 0xcb, 0x86, 0xf9, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45,
0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int gamepad_wired_bmp_len = 1226;
unsigned int gamepad_wired_png_len = 330;
Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

+29 -99
View File
@@ -1,100 +1,30 @@
unsigned char gamepad_wireless_bmp[] = {
0x42, 0x4d, 0x8a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00,
0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00,
0x00, 0x00, 0x01, 0x00, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04,
0x00, 0x00, 0x23, 0x2e, 0x00, 0x00, 0x23, 0x2e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff,
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x42, 0x47,
0x52, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0a, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00,
0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
0x00, 0xea, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0xe9, 0x00, 0x00,
0x00, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0e, 0x00, 0x00, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xf5, 0x00, 0x00, 0x00, 0xec, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xf5, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00,
0x00, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00,
0x00, 0x84, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00,
0x00, 0x9a, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x69, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7b, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00,
0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00,
0x00, 0xac, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00,
0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00,
0x00, 0x99, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00,
0x00, 0x09, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00,
0x00, 0xf0, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00,
0x00, 0xe9, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xef, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
0x00, 0xf0, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00,
0x00, 0xf5, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0c, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x00,
0x00, 0xf5, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x28, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xf3, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00,
0x00, 0x64, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00,
0x00, 0xac, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xcc, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x4a, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0x00, 0xff, 0x00, 0x00, 0x00, 0xfa, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00,
0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00,
0x00, 0x34, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
unsigned char gamepad_wireless_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10,
0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 0x61, 0x00, 0x00, 0x01,
0x09, 0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xb5, 0xd3, 0x21, 0x48, 0xc3,
0x41, 0x14, 0x06, 0xf0, 0x9f, 0x13, 0x83, 0x73, 0x9a, 0x56, 0x0c, 0x26,
0x99, 0x18, 0x44, 0x10, 0x11, 0x74, 0xa0, 0x55, 0x34, 0x2f, 0x0a, 0x66,
0xab, 0x20, 0x06, 0xab, 0x4d, 0x41, 0xb0, 0xcd, 0xa2, 0x98, 0x2d, 0x2b,
0x82, 0x55, 0xb1, 0x29, 0x58, 0x6c, 0x0a, 0x1a, 0x05, 0xc1, 0x85, 0xcd,
0x60, 0x70, 0x96, 0x37, 0x38, 0xc6, 0x7f, 0x43, 0x26, 0x7e, 0xf0, 0xb8,
0x77, 0xef, 0x7d, 0xef, 0xee, 0xdd, 0x77, 0x77, 0xfc, 0x11, 0x03, 0x3d,
0xe2, 0xb3, 0x18, 0x8a, 0xf9, 0x37, 0x1e, 0x62, 0xec, 0x89, 0x75, 0xd4,
0xf0, 0x89, 0x56, 0x87, 0x7d, 0xe1, 0x12, 0x95, 0xac, 0x0e, 0xa6, 0x71,
0x8a, 0x45, 0x34, 0x70, 0x85, 0x1b, 0x34, 0x23, 0x9f, 0xc7, 0x0a, 0x56,
0x51, 0xc0, 0x3d, 0x36, 0xf1, 0x28, 0x82, 0xcd, 0xb0, 0xdd, 0x20, 0xb4,
0x91, 0xc3, 0x60, 0x32, 0x2f, 0x04, 0xa7, 0xcd, 0x5f, 0x83, 0x3a, 0x5e,
0x50, 0x0a, 0xd2, 0x1c, 0xce, 0xf1, 0x96, 0xb4, 0xff, 0x81, 0x0b, 0x2c,
0x07, 0xa7, 0x14, 0x35, 0x75, 0x28, 0xa3, 0x18, 0x89, 0x83, 0xa4, 0xe8,
0x16, 0xd5, 0xb0, 0xeb, 0x24, 0x5e, 0xc5, 0x70, 0xd4, 0x94, 0x53, 0x3d,
0xf6, 0x82, 0x50, 0xc3, 0x54, 0x86, 0xc0, 0x13, 0xd1, 0x45, 0x0b, 0x47,
0x59, 0x37, 0xb0, 0x80, 0x9d, 0xf0, 0x47, 0xb0, 0x8f, 0xbb, 0xb0, 0x13,
0x4c, 0x46, 0x6e, 0x2b, 0x39, 0x4a, 0x26, 0xc6, 0xf0, 0x1c, 0x3b, 0x35,
0xf1, 0x9e, 0xf8, 0xf3, 0x9d, 0xe4, 0x5c, 0x97, 0x05, 0x46, 0xb1, 0x1d,
0xaa, 0x17, 0xe3, 0x7d, 0x34, 0x12, 0xad, 0x7e, 0x85, 0x3c, 0x8e, 0x71,
0x86, 0xf1, 0x7e, 0x9e, 0xf9, 0x46, 0xa2, 0xfc, 0x61, 0x37, 0x52, 0xae,
0xc7, 0x02, 0xaf, 0x89, 0xff, 0xd4, 0xef, 0x67, 0x9b, 0xc1, 0x92, 0xff,
0xc4, 0x0f, 0x9e, 0x25, 0x40, 0x8b, 0x8b, 0xc8, 0x0c, 0x69, 0x00, 0x00,
0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int gamepad_wireless_bmp_len = 1162;
unsigned int gamepad_wireless_png_len = 322;
Binary file not shown.

After

Width:  |  Height:  |  Size: 322 B

+717 -31
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -16,6 +16,7 @@
#include "gamepad_front.h"
#include "gamepad_back.h"
#include "gamepad_face_abxy.h"
#include "gamepad_face_axby.h"
#include "gamepad_face_bayx.h"
#include "gamepad_face_sony.h"
#include "gamepad_battery.h"
@@ -29,6 +30,251 @@
#include "gamepad_wired.h"
#include "gamepad_wireless.h"
#include <limits.h>
#define RAD_TO_DEG (180.0f / SDL_PI_F)
/* Used to draw a 3D cube to represent the gyroscope orientation */
typedef struct
{
float x, y, z;
} Vector3;
struct Quaternion
{
float x, y, z, w;
};
static const Vector3 debug_cube_vertices[] = {
{ -1.0f, -1.0f, -1.0f },
{ 1.0f, -1.0f, -1.0f },
{ 1.0f, 1.0f, -1.0f },
{ -1.0f, 1.0f, -1.0f },
{ -1.0f, -1.0f, 1.0f },
{ 1.0f, -1.0f, 1.0f },
{ 1.0f, 1.0f, 1.0f },
{ -1.0f, 1.0f, 1.0f },
};
static const int debug_cube_edges[][2] = {
{ 0, 1 }, { 1, 2 }, { 2, 3 }, { 3, 0 }, /* bottom square */
{ 4, 5 }, { 5, 6 }, { 6, 7 }, { 7, 4 }, /* top square */
{ 0, 4 }, { 1, 5 }, { 2, 6 }, { 3, 7 }, /* verticals */
};
static Vector3 RotateVectorByQuaternion(const Vector3 *v, const Quaternion *q) {
/* v' = q * v * q^-1 */
float x = v->x, y = v->y, z = v->z;
float qx = q->x, qy = q->y, qz = q->z, qw = q->w;
/* Calculate quaternion *vector */
float ix = qw * x + qy * z - qz * y;
float iy = qw * y + qz * x - qx * z;
float iz = qw * z + qx * y - qy * x;
float iw = -qx * x - qy * y - qz * z;
/* Result = result * conjugate(q) */
Vector3 out;
out.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;
out.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;
out.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;
return out;
}
#ifdef GYRO_ISOMETRIC_PROJECTION
static SDL_FPoint ProjectVec3ToRect(const Vector3 *v, const SDL_FRect *rect)
{
SDL_FPoint out;
/* Simple orthographic projection using X and Y; scale to fit into rect */
out.x = rect->x + (rect->w / 2.0f) + (v->x * (rect->w / 2.0f));
out.y = rect->y + (rect->h / 2.0f) - (v->y * (rect->h / 2.0f)); /* Y inverted */
return out;
}
#else
static SDL_FPoint ProjectVec3ToRect(const Vector3 *v, const SDL_FRect *rect)
{
const float verticalFOV_deg = 40.0f;
const float cameraZ = 4.0f; /* Camera is at(0, 0, +4), looking toward origin */
float aspect = rect->w / rect->h;
float fovScaleY = SDL_tanf(((verticalFOV_deg / 180.0f) * SDL_PI_F) * 0.5f);
float fovScaleX = fovScaleY * aspect;
float relZ = cameraZ - v->z;
if (relZ < 0.01f) {
relZ = 0.01f; /* Prevent division by 0 or negative depth */
}
float ndc_x = (v->x / relZ) / fovScaleX;
float ndc_y = (v->y / relZ) / fovScaleY;
/* Convert to screen space */
SDL_FPoint out;
out.x = rect->x + (rect->w / 2.0f) + (ndc_x * rect->w / 2.0f);
out.y = rect->y + (rect->h / 2.0f) - (ndc_y * rect->h / 2.0f); /* flip Y */
return out;
}
#endif
void DrawGyroDebugCube(SDL_Renderer *renderer, const Quaternion *orientation, const SDL_FRect *rect)
{
SDL_FPoint projected[8];
int i;
for (i = 0; i < 8; ++i) {
Vector3 rotated = RotateVectorByQuaternion(&debug_cube_vertices[i], orientation);
projected[i] = ProjectVec3ToRect(&rotated, rect);
}
for (i = 0; i < 12; ++i) {
const SDL_FPoint p0 = projected[debug_cube_edges[i][0]];
const SDL_FPoint p1 = projected[debug_cube_edges[i][1]];
SDL_RenderLine(renderer, p0.x, p0.y, p1.x, p1.y);
}
}
#define CIRCLE_SEGMENTS 64
static Vector3 kCirclePoints3D_XY_Plane[CIRCLE_SEGMENTS];
static Vector3 kCirclePoints3D_XZ_Plane[CIRCLE_SEGMENTS];
static Vector3 kCirclePoints3D_YZ_Plane[CIRCLE_SEGMENTS];
void InitCirclePoints3D(void)
{
int i;
for (i = 0; i < CIRCLE_SEGMENTS; ++i) {
float theta = ((float)i / CIRCLE_SEGMENTS) * SDL_PI_F * 2.0f;
kCirclePoints3D_XY_Plane[i].x = SDL_cosf(theta);
kCirclePoints3D_XY_Plane[i].y = SDL_sinf(theta);
kCirclePoints3D_XY_Plane[i].z = 0.0f;
}
for (i = 0; i < CIRCLE_SEGMENTS; ++i) {
float theta = ((float)i / CIRCLE_SEGMENTS) * SDL_PI_F * 2.0f;
kCirclePoints3D_XZ_Plane[i].x = SDL_cosf(theta);
kCirclePoints3D_XZ_Plane[i].y = 0.0f;
kCirclePoints3D_XZ_Plane[i].z = SDL_sinf(theta);
}
for (i = 0; i < CIRCLE_SEGMENTS; ++i) {
float theta = ((float)i / CIRCLE_SEGMENTS) * SDL_PI_F * 2.0f;
kCirclePoints3D_YZ_Plane[i].x = 0.0f;
kCirclePoints3D_YZ_Plane[i].y = SDL_cosf(theta);
kCirclePoints3D_YZ_Plane[i].z = SDL_sinf(theta);
}
}
void DrawGyroCircle(
SDL_Renderer *renderer,
const Vector3 *circlePoints,
int numSegments,
const Quaternion *orientation,
const SDL_FRect *bounds,
Uint8 r, Uint8 g, Uint8 b, Uint8 a)
{
SDL_SetRenderDrawColor(renderer, r, g, b, a);
SDL_FPoint lastScreenPt = { 0 };
bool hasLast = false;
int i;
for (i = 0; i <= numSegments; ++i) {
int index = i % numSegments;
Vector3 rotated = RotateVectorByQuaternion(&circlePoints[index], orientation);
SDL_FPoint screenPtVec2 = ProjectVec3ToRect(&rotated, bounds);
SDL_FPoint screenPt;
screenPt.x = screenPtVec2.x;
screenPt.y = screenPtVec2.y;
if (hasLast) {
SDL_RenderLine(renderer, lastScreenPt.x, lastScreenPt.y, screenPt.x, screenPt.y);
}
lastScreenPt = screenPt;
hasLast = true;
}
}
void DrawGyroDebugCircle(SDL_Renderer *renderer, const Quaternion *orientation, const SDL_FRect *bounds)
{
/* Store current color */
Uint8 r, g, b, a;
SDL_GetRenderDrawColor(renderer, &r, &g, &b, &a);
DrawGyroCircle(renderer, kCirclePoints3D_YZ_Plane, CIRCLE_SEGMENTS, orientation, bounds, GYRO_COLOR_RED); /* X axis - pitch */
DrawGyroCircle(renderer, kCirclePoints3D_XZ_Plane, CIRCLE_SEGMENTS, orientation, bounds, GYRO_COLOR_GREEN); /* Y axis - yaw */
DrawGyroCircle(renderer, kCirclePoints3D_XY_Plane, CIRCLE_SEGMENTS, orientation, bounds, GYRO_COLOR_BLUE); /* Z axis - Roll */
/* Restore current color */
SDL_SetRenderDrawColor(renderer, r, g, b, a);
}
void DrawGyroDebugAxes(SDL_Renderer *renderer, const Quaternion *orientation, const SDL_FRect *bounds)
{
/* Store current color */
Uint8 r, g, b, a;
SDL_GetRenderDrawColor(renderer, &r, &g, &b, &a);
Vector3 origin = { 0.0f, 0.0f, 0.0f };
Vector3 right = { 1.0f, 0.0f, 0.0f };
Vector3 up = { 0.0f, 1.0f, 0.0f };
Vector3 back = { 0.0f, 0.0f, 1.0f };
Vector3 world_right = RotateVectorByQuaternion(&right, orientation);
Vector3 world_up = RotateVectorByQuaternion(&up, orientation);
Vector3 world_back = RotateVectorByQuaternion(&back, orientation);
SDL_FPoint origin_screen = ProjectVec3ToRect(&origin, bounds);
SDL_FPoint right_screen = ProjectVec3ToRect(&world_right, bounds);
SDL_FPoint up_screen = ProjectVec3ToRect(&world_up, bounds);
SDL_FPoint back_screen = ProjectVec3ToRect(&world_back, bounds);
SDL_SetRenderDrawColor(renderer, GYRO_COLOR_RED);
SDL_RenderLine(renderer, origin_screen.x, origin_screen.y, right_screen.x, right_screen.y);
SDL_SetRenderDrawColor(renderer, GYRO_COLOR_GREEN);
SDL_RenderLine(renderer, origin_screen.x, origin_screen.y, up_screen.x, up_screen.y);
SDL_SetRenderDrawColor(renderer, GYRO_COLOR_BLUE);
SDL_RenderLine(renderer, origin_screen.x, origin_screen.y, back_screen.x, back_screen.y);
/* Restore current color */
SDL_SetRenderDrawColor(renderer, r, g, b, a);
}
void DrawAccelerometerDebugArrow(SDL_Renderer *renderer, const Quaternion *gyro_quaternion, const float *accel_data, const SDL_FRect *bounds)
{
/* Store current color */
Uint8 r, g, b, a;
SDL_GetRenderDrawColor(renderer, &r, &g, &b, &a);
const float flGravity = 9.81f;
Vector3 vAccel;
vAccel.x = accel_data[0] / flGravity;
vAccel.y = accel_data[1] / flGravity;
vAccel.z = accel_data[2] / flGravity;
Vector3 origin = { 0.0f, 0.0f, 0.0f };
Vector3 rotated_accel = RotateVectorByQuaternion(&vAccel, gyro_quaternion);
/* Project the origin and rotated vector to screen space */
SDL_FPoint origin_screen = ProjectVec3ToRect(&origin, bounds);
SDL_FPoint accel_screen = ProjectVec3ToRect(&rotated_accel, bounds);
/* Draw the line from origin to the rotated accelerometer vector */
SDL_SetRenderDrawColor(renderer, GYRO_COLOR_ORANGE);
SDL_RenderLine(renderer, origin_screen.x, origin_screen.y, accel_screen.x, accel_screen.y);
const float head_width = 4.0f;
SDL_FRect arrow_head_rect;
arrow_head_rect.x = accel_screen.x - head_width * 0.5f;
arrow_head_rect.y = accel_screen.y - head_width * 0.5f;
arrow_head_rect.w = head_width;
arrow_head_rect.h = head_width;
SDL_RenderRect(renderer, &arrow_head_rect);
/* Restore current color */
SDL_SetRenderDrawColor(renderer, r, g, b, a);
}
/* This is indexed by gamepad element */
static const struct
@@ -95,6 +341,7 @@ struct GamepadImage
SDL_Texture *front_texture;
SDL_Texture *back_texture;
SDL_Texture *face_abxy_texture;
SDL_Texture *face_axby_texture;
SDL_Texture *face_bayx_texture;
SDL_Texture *face_sony_texture;
SDL_Texture *connection_texture[2];
@@ -122,6 +369,7 @@ struct GamepadImage
bool showing_front;
bool showing_touchpad;
SDL_GamepadType type;
SDL_GamepadButtonLabel east_label;
ControllerDisplayMode display_mode;
bool elements[SDL_GAMEPAD_ELEMENT_MAX];
@@ -140,7 +388,7 @@ static SDL_Texture *CreateTexture(SDL_Renderer *renderer, unsigned char *data, u
SDL_Surface *surface;
SDL_IOStream *src = SDL_IOFromConstMem(data, len);
if (src) {
surface = SDL_LoadBMP_IO(src, true);
surface = SDL_LoadPNG_IO(src, true);
if (surface) {
texture = SDL_CreateTextureFromSurface(renderer, surface);
SDL_DestroySurface(surface);
@@ -154,31 +402,32 @@ GamepadImage *CreateGamepadImage(SDL_Renderer *renderer)
GamepadImage *ctx = SDL_calloc(1, sizeof(*ctx));
if (ctx) {
ctx->renderer = renderer;
ctx->front_texture = CreateTexture(renderer, gamepad_front_bmp, gamepad_front_bmp_len);
ctx->back_texture = CreateTexture(renderer, gamepad_back_bmp, gamepad_back_bmp_len);
ctx->front_texture = CreateTexture(renderer, gamepad_front_png, gamepad_front_png_len);
ctx->back_texture = CreateTexture(renderer, gamepad_back_png, gamepad_back_png_len);
SDL_GetTextureSize(ctx->front_texture, &ctx->gamepad_width, &ctx->gamepad_height);
ctx->face_abxy_texture = CreateTexture(renderer, gamepad_face_abxy_bmp, gamepad_face_abxy_bmp_len);
ctx->face_bayx_texture = CreateTexture(renderer, gamepad_face_bayx_bmp, gamepad_face_bayx_bmp_len);
ctx->face_sony_texture = CreateTexture(renderer, gamepad_face_sony_bmp, gamepad_face_sony_bmp_len);
ctx->face_abxy_texture = CreateTexture(renderer, gamepad_face_abxy_png, gamepad_face_abxy_png_len);
ctx->face_axby_texture = CreateTexture(renderer, gamepad_face_axby_png, gamepad_face_axby_png_len);
ctx->face_bayx_texture = CreateTexture(renderer, gamepad_face_bayx_png, gamepad_face_bayx_png_len);
ctx->face_sony_texture = CreateTexture(renderer, gamepad_face_sony_png, gamepad_face_sony_png_len);
SDL_GetTextureSize(ctx->face_abxy_texture, &ctx->face_width, &ctx->face_height);
ctx->connection_texture[0] = CreateTexture(renderer, gamepad_wired_bmp, gamepad_wired_bmp_len);
ctx->connection_texture[1] = CreateTexture(renderer, gamepad_wireless_bmp, gamepad_wireless_bmp_len);
ctx->connection_texture[0] = CreateTexture(renderer, gamepad_wired_png, gamepad_wired_png_len);
ctx->connection_texture[1] = CreateTexture(renderer, gamepad_wireless_png, gamepad_wireless_png_len);
SDL_GetTextureSize(ctx->connection_texture[0], &ctx->connection_width, &ctx->connection_height);
ctx->battery_texture[0] = CreateTexture(renderer, gamepad_battery_bmp, gamepad_battery_bmp_len);
ctx->battery_texture[1] = CreateTexture(renderer, gamepad_battery_wired_bmp, gamepad_battery_wired_bmp_len);
ctx->battery_texture[0] = CreateTexture(renderer, gamepad_battery_png, gamepad_battery_png_len);
ctx->battery_texture[1] = CreateTexture(renderer, gamepad_battery_wired_png, gamepad_battery_wired_png_len);
SDL_GetTextureSize(ctx->battery_texture[0], &ctx->battery_width, &ctx->battery_height);
ctx->touchpad_texture = CreateTexture(renderer, gamepad_touchpad_bmp, gamepad_touchpad_bmp_len);
ctx->touchpad_texture = CreateTexture(renderer, gamepad_touchpad_png, gamepad_touchpad_png_len);
SDL_GetTextureSize(ctx->touchpad_texture, &ctx->touchpad_width, &ctx->touchpad_height);
ctx->button_texture = CreateTexture(renderer, gamepad_button_bmp, gamepad_button_bmp_len);
ctx->button_texture = CreateTexture(renderer, gamepad_button_png, gamepad_button_png_len);
SDL_GetTextureSize(ctx->button_texture, &ctx->button_width, &ctx->button_height);
SDL_SetTextureColorMod(ctx->button_texture, 10, 255, 21);
ctx->axis_texture = CreateTexture(renderer, gamepad_axis_bmp, gamepad_axis_bmp_len);
ctx->axis_texture = CreateTexture(renderer, gamepad_axis_png, gamepad_axis_png_len);
SDL_GetTextureSize(ctx->axis_texture, &ctx->axis_width, &ctx->axis_height);
SDL_SetTextureColorMod(ctx->axis_texture, 10, 255, 21);
@@ -426,6 +675,7 @@ void UpdateGamepadImageFromGamepad(GamepadImage *ctx, SDL_Gamepad *gamepad)
}
ctx->type = SDL_GetGamepadType(gamepad);
ctx->east_label = SDL_GetGamepadButtonLabel(gamepad, SDL_GAMEPAD_BUTTON_EAST);
char *mapping = SDL_GetGamepadMapping(gamepad);
if (mapping) {
if (SDL_strstr(mapping, "SDL_GAMECONTROLLER_USE_BUTTON_LABELS")) {
@@ -547,14 +797,17 @@ void RenderGamepadImage(GamepadImage *ctx)
dst.w = ctx->face_width;
dst.h = ctx->face_height;
switch (SDL_GetGamepadButtonLabelForType(ctx->type, SDL_GAMEPAD_BUTTON_SOUTH)) {
case SDL_GAMEPAD_BUTTON_LABEL_A:
switch (ctx->east_label) {
case SDL_GAMEPAD_BUTTON_LABEL_B:
SDL_RenderTexture(ctx->renderer, ctx->face_abxy_texture, NULL, &dst);
break;
case SDL_GAMEPAD_BUTTON_LABEL_B:
case SDL_GAMEPAD_BUTTON_LABEL_X:
SDL_RenderTexture(ctx->renderer, ctx->face_axby_texture, NULL, &dst);
break;
case SDL_GAMEPAD_BUTTON_LABEL_A:
SDL_RenderTexture(ctx->renderer, ctx->face_bayx_texture, NULL, &dst);
break;
case SDL_GAMEPAD_BUTTON_LABEL_CROSS:
case SDL_GAMEPAD_BUTTON_LABEL_CIRCLE:
SDL_RenderTexture(ctx->renderer, ctx->face_sony_texture, NULL, &dst);
break;
default:
@@ -664,6 +917,7 @@ void DestroyGamepadImage(GamepadImage *ctx)
SDL_DestroyTexture(ctx->front_texture);
SDL_DestroyTexture(ctx->back_texture);
SDL_DestroyTexture(ctx->face_abxy_texture);
SDL_DestroyTexture(ctx->face_axby_texture);
SDL_DestroyTexture(ctx->face_bayx_texture);
SDL_DestroyTexture(ctx->face_sony_texture);
for (i = 0; i < SDL_arraysize(ctx->battery_texture); ++i) {
@@ -672,11 +926,11 @@ void DestroyGamepadImage(GamepadImage *ctx)
SDL_DestroyTexture(ctx->touchpad_texture);
SDL_DestroyTexture(ctx->button_texture);
SDL_DestroyTexture(ctx->axis_texture);
SDL_free(ctx->fingers);
SDL_free(ctx);
}
}
static const char *gamepad_button_names[] = {
"South",
"East",
@@ -729,6 +983,8 @@ struct GamepadDisplay
float accel_data[3];
float gyro_data[3];
float gyro_drift_correction_data[3];
Uint64 last_sensor_update;
ControllerDisplayMode display_mode;
@@ -745,18 +1001,84 @@ GamepadDisplay *CreateGamepadDisplay(SDL_Renderer *renderer)
if (ctx) {
ctx->renderer = renderer;
ctx->button_texture = CreateTexture(renderer, gamepad_button_small_bmp, gamepad_button_small_bmp_len);
ctx->button_texture = CreateTexture(renderer, gamepad_button_small_png, gamepad_button_small_png_len);
SDL_GetTextureSize(ctx->button_texture, &ctx->button_width, &ctx->button_height);
ctx->arrow_texture = CreateTexture(renderer, gamepad_axis_arrow_bmp, gamepad_axis_arrow_bmp_len);
ctx->arrow_texture = CreateTexture(renderer, gamepad_axis_arrow_png, gamepad_axis_arrow_png_len);
SDL_GetTextureSize(ctx->arrow_texture, &ctx->arrow_width, &ctx->arrow_height);
ctx->element_highlighted = SDL_GAMEPAD_ELEMENT_INVALID;
ctx->element_selected = SDL_GAMEPAD_ELEMENT_INVALID;
SDL_zeroa(ctx->accel_data);
SDL_zeroa(ctx->gyro_data);
SDL_zeroa(ctx->gyro_drift_correction_data);
}
return ctx;
}
struct GyroDisplay
{
SDL_Renderer *renderer;
/* Main drawing area */
SDL_FRect area;
/* This part displays extra info from the IMUstate in order to figure out actual polling rates. */
float gyro_drift_solution[3];
int reported_sensor_rate_hz; /*hz - comes from HIDsdl implementation. Could be fixed, platform time, or true sensor time*/
Uint64 next_reported_sensor_time; /* SDL ticks used to throttle the display */
int estimated_sensor_rate_hz; /*hz - our estimation of the actual polling rate by observing packets received*/
float euler_displacement_angles[3]; /* pitch, yaw, roll */
Quaternion gyro_quaternion; /* Rotation since startup/reset, comprised of each gyro speed packet times sensor delta time. */
EGyroCalibrationPhase current_calibration_phase;
float calibration_phase_progress_fraction; /* [0..1] */
float accelerometer_noise_sq; /* Distance between last noise and new noise. Used to indicate motion.*/
float accelerometer_noise_tolerance_sq; /* Maximum amount of noise detected during the Noise Profiling Phase */
GamepadButton *reset_gyro_button;
GamepadButton *calibrate_gyro_button;
};
GyroDisplay *CreateGyroDisplay(SDL_Renderer *renderer)
{
GyroDisplay *ctx = SDL_calloc(1, sizeof(*ctx));
{
ctx->renderer = renderer;
ctx->estimated_sensor_rate_hz = 0;
SDL_zeroa(ctx->gyro_drift_solution);
Quaternion quat_identity = { 0.0f, 0.0f, 0.0f, 1.0f };
ctx->gyro_quaternion = quat_identity;
ctx->reported_sensor_rate_hz = 0;
ctx->next_reported_sensor_time = 0;
ctx->current_calibration_phase = GYRO_CALIBRATION_PHASE_OFF;
ctx->calibration_phase_progress_fraction = 0.0f; /* [0..1] */
ctx->accelerometer_noise_sq = 0.0f;
ctx->accelerometer_noise_tolerance_sq = ACCELEROMETER_NOISE_THRESHOLD; /* Will be overwritten but this avoids divide by zero. */
ctx->reset_gyro_button = CreateGamepadButton(renderer, "Reset View");
ctx->calibrate_gyro_button = CreateGamepadButton(renderer, "Recalibrate Drift");
}
return ctx;
}
void SetGyroDisplayArea(GyroDisplay *ctx, const SDL_FRect *area)
{
if (!ctx) {
return;
}
SDL_copyp(&ctx->area, area);
/* Place the reset button to the bottom right of the gyro display area.*/
SDL_FRect reset_button_area;
reset_button_area.w = SDL_max(MINIMUM_BUTTON_WIDTH, GetGamepadButtonLabelWidth(ctx->reset_gyro_button) + 2 * BUTTON_PADDING);
reset_button_area.h = GetGamepadButtonLabelHeight(ctx->reset_gyro_button) + BUTTON_PADDING;
reset_button_area.x = area->x + area->w - reset_button_area.w - BUTTON_PADDING;
reset_button_area.y = area->y + area->h - reset_button_area.h - BUTTON_PADDING;
SetGamepadButtonArea(ctx->reset_gyro_button, &reset_button_area);
}
void SetGamepadDisplayDisplayMode(GamepadDisplay *ctx, ControllerDisplayMode display_mode)
{
if (!ctx) {
@@ -774,6 +1096,16 @@ void SetGamepadDisplayArea(GamepadDisplay *ctx, const SDL_FRect *area)
SDL_copyp(&ctx->area, area);
}
void SetGamepadDisplayGyroDriftCorrection(GamepadDisplay *ctx, float *gyro_drift_correction)
{
if (!ctx) {
return;
}
ctx->gyro_drift_correction_data[0] = gyro_drift_correction[0];
ctx->gyro_drift_correction_data[1] = gyro_drift_correction[1];
ctx->gyro_drift_correction_data[2] = gyro_drift_correction[2];
}
static bool GetBindingString(const char *label, const char *mapping, char *text, size_t size)
{
@@ -1037,6 +1369,47 @@ static void RenderGamepadElementHighlight(GamepadDisplay *ctx, int element, cons
}
}
void SetGamepadDisplayIMUValues(GyroDisplay *ctx, float *gyro_drift_solution, float *euler_displacement_angles, Quaternion *gyro_quaternion, int reported_senor_rate_hz, int estimated_sensor_rate_hz, EGyroCalibrationPhase calibration_phase, float drift_calibration_progress_frac, float accelerometer_noise_sq, float accelerometer_noise_tolerance_sq)
{
if (!ctx) {
return;
}
const int SENSOR_UPDATE_INTERVAL_MS = 100;
Uint64 now = SDL_GetTicks();
if (now > ctx->next_reported_sensor_time) {
ctx->estimated_sensor_rate_hz = estimated_sensor_rate_hz;
if (reported_senor_rate_hz != 0) {
ctx->reported_sensor_rate_hz = reported_senor_rate_hz;
}
ctx->next_reported_sensor_time = now + SENSOR_UPDATE_INTERVAL_MS;
}
SDL_memcpy(ctx->gyro_drift_solution, gyro_drift_solution, sizeof(ctx->gyro_drift_solution));
SDL_memcpy(ctx->euler_displacement_angles, euler_displacement_angles, sizeof(ctx->euler_displacement_angles));
ctx->gyro_quaternion = *gyro_quaternion;
ctx->current_calibration_phase = calibration_phase;
ctx->calibration_phase_progress_fraction = drift_calibration_progress_frac;
ctx->accelerometer_noise_sq = accelerometer_noise_sq;
ctx->accelerometer_noise_tolerance_sq = accelerometer_noise_tolerance_sq;
}
extern GamepadButton *GetGyroResetButton(GyroDisplay *ctx)
{
if (!ctx) {
return NULL;
}
return ctx->reset_gyro_button;
}
extern GamepadButton *GetGyroCalibrateButton(GyroDisplay *ctx)
{
if (!ctx) {
return NULL;
}
return ctx->calibrate_gyro_button;
}
void RenderGamepadDisplay(GamepadDisplay *ctx, SDL_Gamepad *gamepad)
{
float x, y;
@@ -1278,6 +1651,7 @@ void RenderGamepadDisplay(GamepadDisplay *ctx, SDL_Gamepad *gamepad)
has_accel = SDL_GamepadHasSensor(gamepad, SDL_SENSOR_ACCEL);
has_gyro = SDL_GamepadHasSensor(gamepad, SDL_SENSOR_GYRO);
if (has_accel || has_gyro) {
const int SENSOR_UPDATE_INTERVAL_MS = 100;
Uint64 now = SDL_GetTicks();
@@ -1295,19 +1669,26 @@ void RenderGamepadDisplay(GamepadDisplay *ctx, SDL_Gamepad *gamepad)
if (has_accel) {
SDL_strlcpy(text, "Accelerometer:", sizeof(text));
SDLTest_DrawString(ctx->renderer, x + center - SDL_strlen(text) * FONT_CHARACTER_SIZE, y, text);
SDL_snprintf(text, sizeof(text), "(%.2f,%.2f,%.2f)", ctx->accel_data[0], ctx->accel_data[1], ctx->accel_data[2]);
SDL_snprintf(text, sizeof(text), "[%.2f,%.2f,%.2f]m/s%s", ctx->accel_data[0], ctx->accel_data[1], ctx->accel_data[2], SQUARED_UTF8 );
SDLTest_DrawString(ctx->renderer, x + center + 2.0f, y, text);
y += ctx->button_height + 2.0f;
}
if (has_gyro) {
SDL_strlcpy(text, "Gyro:", sizeof(text));
SDLTest_DrawString(ctx->renderer, x + center - SDL_strlen(text) * FONT_CHARACTER_SIZE, y, text);
SDL_snprintf(text, sizeof(text), "(%.2f,%.2f,%.2f)", ctx->gyro_data[0], ctx->gyro_data[1], ctx->gyro_data[2]);
SDL_snprintf(text, sizeof(text), "[%.2f,%.2f,%.2f]%s/s", ctx->gyro_data[0] * RAD_TO_DEG, ctx->gyro_data[1] * RAD_TO_DEG, ctx->gyro_data[2] * RAD_TO_DEG, DEGREE_UTF8);
SDLTest_DrawString(ctx->renderer, x + center + 2.0f, y, text);
y += ctx->button_height + 2.0f;
/* Display the testcontroller tool's evaluation of drift. This is also useful to get an average rate of turn in calibrated turntable tests. */
if (ctx->gyro_drift_correction_data[0] != 0.0f && ctx->gyro_drift_correction_data[2] != 0.0f && ctx->gyro_drift_correction_data[2] != 0.0f )
{
y += ctx->button_height + 2.0f;
SDL_strlcpy(text, "Gyro Drift:", sizeof(text));
SDLTest_DrawString(ctx->renderer, x + center - SDL_strlen(text) * FONT_CHARACTER_SIZE, y, text);
SDL_snprintf(text, sizeof(text), "[%.2f,%.2f,%.2f]%s/s", ctx->gyro_drift_correction_data[0] * RAD_TO_DEG, ctx->gyro_drift_correction_data[1] * RAD_TO_DEG, ctx->gyro_drift_correction_data[2] * RAD_TO_DEG, DEGREE_UTF8);
SDLTest_DrawString(ctx->renderer, x + center + 2.0f, y, text);
}
}
}
}
@@ -1325,6 +1706,298 @@ void DestroyGamepadDisplay(GamepadDisplay *ctx)
SDL_free(ctx);
}
void RenderSensorTimingInfo(GyroDisplay *ctx, GamepadDisplay *gamepad_display)
{
/* Sensor timing section */
char text[128];
const float new_line_height = gamepad_display->button_height + 2.0f;
const float text_offset_x = ctx->area.x + ctx->area.w / 4.0f + 35.0f;
/* Anchor to bottom left of principle rect. */
float text_y_pos = ctx->area.y + ctx->area.h - new_line_height * 2;
/*
* Display rate of gyro as reported by the HID implementation.
* This could be based on a hardware time stamp (PS5), or it could be generated by the HID implementation.
* One should expect this to match the estimated rate below, assuming a wired connection.
*/
SDL_strlcpy(text, "HID Sensor Time:", sizeof(text));
SDLTest_DrawString(ctx->renderer, text_offset_x - SDL_strlen(text) * FONT_CHARACTER_SIZE, text_y_pos, text);
if (ctx->reported_sensor_rate_hz > 0) {
/* Convert to micro seconds */
const int delta_time_us = (int)1e6 / ctx->reported_sensor_rate_hz;
SDL_snprintf(text, sizeof(text), "%d%ss %dhz", delta_time_us, MICRO_UTF8, ctx->reported_sensor_rate_hz);
} else {
SDL_snprintf(text, sizeof(text), "????%ss ???hz", MICRO_UTF8);
}
SDLTest_DrawString(ctx->renderer, text_offset_x + 2.0f, text_y_pos, text);
/*
* Display the instrumentation's count of all sensor packets received over time.
* This may represent a more accurate polling rate for the IMU
* But only when using a wired connection.
* It does not necessarily reflect the rate at which the IMU is sampled.
*/
text_y_pos += new_line_height;
SDL_strlcpy(text, "Est.Sensor Time:", sizeof(text));
SDLTest_DrawString(ctx->renderer, text_offset_x - SDL_strlen(text) * FONT_CHARACTER_SIZE, text_y_pos, text);
if (ctx->estimated_sensor_rate_hz > 0) {
/* Convert to micro seconds */
const int delta_time_us = (int)1e6 / ctx->estimated_sensor_rate_hz;
SDL_snprintf(text, sizeof(text), "%d%ss %dhz", delta_time_us, MICRO_UTF8, ctx->estimated_sensor_rate_hz);
} else {
SDL_snprintf(text, sizeof(text), "????%ss ???hz", MICRO_UTF8);
}
SDLTest_DrawString(ctx->renderer, text_offset_x + 2.0f, text_y_pos, text);
}
void RenderGyroDriftCalibrationButton(GyroDisplay *ctx, GamepadDisplay *gamepad_display )
{
char label_text[128];
float log_y = ctx->area.y + BUTTON_PADDING;
const float new_line_height = gamepad_display->button_height + 2.0f;
GamepadButton *start_calibration_button = GetGyroCalibrateButton(ctx);
/* Show the recalibration progress bar. */
float recalibrate_button_width = GetGamepadButtonLabelWidth(start_calibration_button) + 2 * BUTTON_PADDING;
SDL_FRect recalibrate_button_area;
recalibrate_button_area.x = ctx->area.x + ctx->area.w - recalibrate_button_width - BUTTON_PADDING;
recalibrate_button_area.y = log_y + FONT_CHARACTER_SIZE * 0.5f - gamepad_display->button_height * 0.5f;
recalibrate_button_area.w = GetGamepadButtonLabelWidth(start_calibration_button) + 2.0f * BUTTON_PADDING;
recalibrate_button_area.h = gamepad_display->button_height + BUTTON_PADDING * 2.0f;
/* Above button */
SDL_strlcpy(label_text, "Gyro Orientation:", sizeof(label_text));
SDLTest_DrawString(ctx->renderer, recalibrate_button_area.x, recalibrate_button_area.y - new_line_height, label_text);
/* Button label vs state */
if (ctx->current_calibration_phase == GYRO_CALIBRATION_PHASE_OFF) {
SDL_strlcpy(label_text, "Start Gyro Calibration", sizeof(label_text));
} else if (ctx->current_calibration_phase == GYRO_CALIBRATION_PHASE_NOISE_PROFILING) {
SDL_snprintf(label_text, sizeof(label_text), "Noise Progress: %3.0f%% ", ctx->calibration_phase_progress_fraction * 100.0f);
} else if (ctx->current_calibration_phase == GYRO_CALIBRATION_PHASE_DRIFT_PROFILING) {
SDL_snprintf(label_text, sizeof(label_text), "Drift Progress: %3.0f%% ", ctx->calibration_phase_progress_fraction * 100.0f);
} else if (ctx->current_calibration_phase == GYRO_CALIBRATION_PHASE_COMPLETE) {
SDL_strlcpy(label_text, "Recalibrate Gyro", sizeof(label_text));
}
SetGamepadButtonLabel(start_calibration_button, label_text);
SetGamepadButtonArea(start_calibration_button, &recalibrate_button_area);
RenderGamepadButton(start_calibration_button);
bool bExtremeNoise = ctx->accelerometer_noise_sq > ACCELEROMETER_MAX_NOISE_G_SQ;
/* Explicit warning message if we detect too much movement */
if (ctx->current_calibration_phase == GYRO_CALIBRATION_PHASE_OFF) {
if (bExtremeNoise) {
SDL_strlcpy(label_text, "GamePad Must Be Still", sizeof(label_text));
SDLTest_DrawString(ctx->renderer, recalibrate_button_area.x, recalibrate_button_area.y + recalibrate_button_area.h + new_line_height, label_text);
SDL_strlcpy(label_text, "Place GamePad On Table", sizeof(label_text));
SDLTest_DrawString(ctx->renderer, recalibrate_button_area.x, recalibrate_button_area.y + recalibrate_button_area.h + new_line_height * 2, label_text);
}
}
if (ctx->current_calibration_phase == GYRO_CALIBRATION_PHASE_NOISE_PROFILING ||
ctx->current_calibration_phase == GYRO_CALIBRATION_PHASE_DRIFT_PROFILING)
{
float flAbsoluteNoiseFraction = SDL_clamp(ctx->accelerometer_noise_sq / ACCELEROMETER_MAX_NOISE_G_SQ, 0.0f, 1.0f);
float flAbsoluteToleranceFraction = SDL_clamp(ctx->accelerometer_noise_tolerance_sq / ACCELEROMETER_MAX_NOISE_G_SQ, 0.0f, 1.0f);
float flMaxNoiseForThisPhase = ctx->current_calibration_phase == GYRO_CALIBRATION_PHASE_NOISE_PROFILING ? ACCELEROMETER_MAX_NOISE_G_SQ : ctx->accelerometer_noise_tolerance_sq;
float flRelativeNoiseFraction = SDL_clamp(ctx->accelerometer_noise_sq / flMaxNoiseForThisPhase, 0.0f, 1.0f);
float noise_bar_height = gamepad_display->button_height;
SDL_FRect noise_bar_rect;
noise_bar_rect.x = recalibrate_button_area.x;
noise_bar_rect.y = recalibrate_button_area.y + recalibrate_button_area.h + BUTTON_PADDING;
noise_bar_rect.w = recalibrate_button_area.w;
noise_bar_rect.h = noise_bar_height;
SDL_snprintf(label_text, sizeof(label_text), "Accelerometer Noise Tolerance: %3.3fG ", SDL_sqrtf(ctx->accelerometer_noise_tolerance_sq) );
SDLTest_DrawString(ctx->renderer, recalibrate_button_area.x, recalibrate_button_area.y + recalibrate_button_area.h + new_line_height * 2, label_text);
/* Adjust the noise bar rectangle based on the accelerometer noise value */
float noise_bar_fill_width = flAbsoluteNoiseFraction * noise_bar_rect.w; /* Scale the width based on the noise value */
SDL_FRect noise_bar_fill_rect;
noise_bar_fill_rect.x = noise_bar_rect.x + (noise_bar_rect.w - noise_bar_fill_width) * 0.5f;
noise_bar_fill_rect.y = noise_bar_rect.y;
noise_bar_fill_rect.w = noise_bar_fill_width;
noise_bar_fill_rect.h = noise_bar_height;
/* Set the color based on the noise value vs the tolerance */
Uint8 red = (Uint8)(flRelativeNoiseFraction * 255.0f);
Uint8 green = (Uint8)((1.0f - flRelativeNoiseFraction) * 255.0f);
SDL_SetRenderDrawColor(ctx->renderer, red, green, 0, 255); /* red when high noise, green when low noise */
SDL_RenderFillRect(ctx->renderer, &noise_bar_fill_rect); /* draw the filled rectangle */
float tolerance_bar_fill_width = flAbsoluteToleranceFraction * noise_bar_rect.w; /* Scale the width based on the noise value */
SDL_FRect tolerance_bar_rect;
tolerance_bar_rect.x = noise_bar_rect.x + (noise_bar_rect.w - tolerance_bar_fill_width) * 0.5f;
tolerance_bar_rect.y = noise_bar_rect.y;
tolerance_bar_rect.w = tolerance_bar_fill_width;
tolerance_bar_rect.h = noise_bar_height;
SDL_SetRenderDrawColor(ctx->renderer, 128, 128, 0, 255);
SDL_RenderRect(ctx->renderer, &tolerance_bar_rect); /* draw the tolerance rectangle */
SDL_SetRenderDrawColor(ctx->renderer, 100, 100, 100, 255); /* gray box */
SDL_RenderRect(ctx->renderer, &noise_bar_rect); /* draw the outline rectangle */
/* Explicit warning message if we detect too much movement */
bool bTooMuchNoise = (flAbsoluteNoiseFraction == 1.0f);
if (bTooMuchNoise) {
SDL_strlcpy(label_text, "Place GamePad Down!", sizeof(label_text));
SDLTest_DrawString(ctx->renderer, recalibrate_button_area.x, noise_bar_rect.y + noise_bar_rect.h + new_line_height, label_text);
}
/* Drift progress bar */
/* Demonstrate how far we are through the drift progress, and how it resets when there's "high noise", i.e if flNoiseFraction == 1.0f */
SDL_FRect progress_bar_rect;
progress_bar_rect.x = recalibrate_button_area.x + BUTTON_PADDING;
progress_bar_rect.y = recalibrate_button_area.y + recalibrate_button_area.h * 0.5f + BUTTON_PADDING * 0.5f;
progress_bar_rect.w = recalibrate_button_area.w - BUTTON_PADDING * 2.0f;
progress_bar_rect.h = BUTTON_PADDING * 0.5f;
/* Adjust the drift bar rectangle based on the drift calibration progress fraction */
float drift_bar_fill_width = bTooMuchNoise ? 1.0f : ctx->calibration_phase_progress_fraction * progress_bar_rect.w;
SDL_FRect progress_bar_fill;
progress_bar_fill.x = progress_bar_rect.x;
progress_bar_fill.y = progress_bar_rect.y;
progress_bar_fill.w = drift_bar_fill_width;
progress_bar_fill.h = progress_bar_rect.h;
/* Set the color based on the drift calibration progress fraction */
SDL_SetRenderDrawColor(ctx->renderer, GYRO_COLOR_GREEN); /* red when too much noise, green when low noise*/
/* Now draw the bars with the filled, then empty rectangles */
SDL_RenderFillRect(ctx->renderer, &progress_bar_fill); /* draw the filled rectangle*/
SDL_SetRenderDrawColor(ctx->renderer, 100, 100, 100, 255); /* gray box*/
SDL_RenderRect(ctx->renderer, &progress_bar_rect); /* draw the outline rectangle*/
/* If there is too much movement, we are going to draw two diagonal red lines between the progress rect corners.*/
if (bTooMuchNoise) {
SDL_SetRenderDrawColor(ctx->renderer, GYRO_COLOR_RED); /* red */
SDL_RenderFillRect(ctx->renderer, &progress_bar_fill); /* draw the filled rectangle */
}
}
}
float RenderEulerReadout(GyroDisplay *ctx, GamepadDisplay *gamepad_display )
{
/* Get the mater button's width and base our width off that */
GamepadButton *master_button = GetGyroCalibrateButton(ctx);
SDL_FRect gyro_calibrate_button_rect;
GetGamepadButtonArea(master_button, &gyro_calibrate_button_rect);
char text[128];
float log_y = gyro_calibrate_button_rect.y + gyro_calibrate_button_rect.h + BUTTON_PADDING;
const float new_line_height = gamepad_display->button_height + 2.0f;
float log_gyro_euler_text_x = gyro_calibrate_button_rect.x;
Uint8 r, g, b, a;
SDL_GetRenderDrawColor(ctx->renderer, &r, &g, &b, &a);
/* Pitch Readout */
SDL_SetRenderDrawColor(ctx->renderer, GYRO_COLOR_RED);
SDL_snprintf(text, sizeof(text), "Pitch: %6.2f%s", ctx->euler_displacement_angles[0], DEGREE_UTF8);
SDLTest_DrawString(ctx->renderer, log_gyro_euler_text_x + 2.0f, log_y, text);
/* Yaw Readout */
SDL_SetRenderDrawColor(ctx->renderer, GYRO_COLOR_GREEN);
log_y += new_line_height;
SDL_snprintf(text, sizeof(text), " Yaw: %6.2f%s", ctx->euler_displacement_angles[1], DEGREE_UTF8);
SDLTest_DrawString(ctx->renderer, log_gyro_euler_text_x + 2.0f, log_y, text);
/* Roll Readout */
SDL_SetRenderDrawColor(ctx->renderer, GYRO_COLOR_BLUE);
log_y += new_line_height;
SDL_snprintf(text, sizeof(text), " Roll: %6.2f%s", ctx->euler_displacement_angles[2], DEGREE_UTF8);
SDLTest_DrawString(ctx->renderer, log_gyro_euler_text_x + 2.0f, log_y, text);
SDL_SetRenderDrawColor(ctx->renderer, r, g, b, a);
return log_y + new_line_height; /* Return the next y position for further rendering */
}
/* Draws the 3D cube, circles and accel arrow, positioning itself relative to the calibrate button. */
void RenderGyroGizmo(GyroDisplay *ctx, SDL_Gamepad *gamepad, float top)
{
/* Get the calibrate button's on-screen area: */
GamepadButton *btn = GetGyroCalibrateButton(ctx);
SDL_FRect btnArea;
GetGamepadButtonArea(btn, &btnArea);
float gizmoSize = btnArea.w;
/* Position it centered horizontally above the button with a small gap */
SDL_FRect gizmoRect;
gizmoRect.x = btnArea.x + (btnArea.w - gizmoSize) * 0.5f;
gizmoRect.y = top;
gizmoRect.w = gizmoSize;
gizmoRect.h = gizmoSize;
/* Draw the rotated cube */
DrawGyroDebugCube(ctx->renderer, &ctx->gyro_quaternion, &gizmoRect);
/* Draw positive axes */
DrawGyroDebugAxes(ctx->renderer, &ctx->gyro_quaternion, &gizmoRect);
/* Overlay the XYZ circles */
DrawGyroDebugCircle(ctx->renderer, &ctx->gyro_quaternion, &gizmoRect);
/* If we have accel, draw that arrow too */
if (SDL_GamepadHasSensor(gamepad, SDL_SENSOR_ACCEL)) {
float accel[3];
SDL_GetGamepadSensorData(gamepad, SDL_SENSOR_ACCEL, accel, SDL_arraysize(accel));
DrawAccelerometerDebugArrow(ctx->renderer, &ctx->gyro_quaternion, accel, &gizmoRect);
}
/* Follow the size of the main button, but position it below the gizmo */
GamepadButton *reset_button = GetGyroResetButton(ctx);
if (reset_button) {
SDL_FRect reset_area;
GetGamepadButtonArea(reset_button, &reset_area);
/* Position the reset button below the gizmo */
reset_area.x = btnArea.x;
reset_area.y = gizmoRect.y + gizmoRect.h + BUTTON_PADDING * 0.5f;
reset_area.w = btnArea.w;
reset_area.h = btnArea.h;
SetGamepadButtonArea(reset_button, &reset_area);
RenderGamepadButton(reset_button);
}
}
void RenderGyroDisplay(GyroDisplay *ctx, GamepadDisplay *gamepadElements, SDL_Gamepad *gamepad)
{
if (!ctx)
return;
bool bHasAccelerometer = SDL_GamepadHasSensor(gamepad, SDL_SENSOR_ACCEL);
bool bHasGyroscope = SDL_GamepadHasSensor(gamepad, SDL_SENSOR_GYRO);
bool bHasIMU = bHasAccelerometer || bHasGyroscope;
if (!bHasIMU)
return;
Uint8 r, g, b, a;
SDL_GetRenderDrawColor(ctx->renderer, &r, &g, &b, &a);
RenderSensorTimingInfo(ctx, gamepadElements);
RenderGyroDriftCalibrationButton(ctx, gamepadElements);
/* Render Gyro calibration phases */
if (ctx->current_calibration_phase == GYRO_CALIBRATION_PHASE_COMPLETE) {
float bottom = RenderEulerReadout(ctx, gamepadElements);
RenderGyroGizmo(ctx, gamepad, bottom);
}
SDL_SetRenderDrawColor(ctx->renderer, r, g, b, a);
}
void DestroyGyroDisplay(GyroDisplay *ctx)
{
if (!ctx) {
return;
}
DestroyGamepadButton(ctx->reset_gyro_button);
DestroyGamepadButton(ctx->calibrate_gyro_button);
SDL_free(ctx);
}
struct GamepadTypeDisplay
{
SDL_Renderer *renderer;
@@ -1519,10 +2192,10 @@ JoystickDisplay *CreateJoystickDisplay(SDL_Renderer *renderer)
if (ctx) {
ctx->renderer = renderer;
ctx->button_texture = CreateTexture(renderer, gamepad_button_small_bmp, gamepad_button_small_bmp_len);
ctx->button_texture = CreateTexture(renderer, gamepad_button_small_png, gamepad_button_small_png_len);
SDL_GetTextureSize(ctx->button_texture, &ctx->button_width, &ctx->button_height);
ctx->arrow_texture = CreateTexture(renderer, gamepad_axis_arrow_bmp, gamepad_axis_arrow_bmp_len);
ctx->arrow_texture = CreateTexture(renderer, gamepad_axis_arrow_png, gamepad_axis_arrow_png_len);
SDL_GetTextureSize(ctx->arrow_texture, &ctx->arrow_width, &ctx->arrow_height);
}
return ctx;
@@ -1955,16 +2628,26 @@ GamepadButton *CreateGamepadButton(SDL_Renderer *renderer, const char *label)
if (ctx) {
ctx->renderer = renderer;
ctx->background = CreateTexture(renderer, gamepad_button_background_bmp, gamepad_button_background_bmp_len);
ctx->background = CreateTexture(renderer, gamepad_button_background_png, gamepad_button_background_png_len);
SDL_GetTextureSize(ctx->background, &ctx->background_width, &ctx->background_height);
ctx->label = SDL_strdup(label);
ctx->label_width = (float)(FONT_CHARACTER_SIZE * SDL_strlen(label));
ctx->label_height = (float)FONT_CHARACTER_SIZE;
SetGamepadButtonLabel(ctx, label);
}
return ctx;
}
void SetGamepadButtonLabel(GamepadButton *ctx, const char *label)
{
if (!ctx) {
return;
}
SDL_free(ctx->label);
ctx->label = SDL_strdup(label);
ctx->label_width = (float)(FONT_CHARACTER_SIZE * SDL_strlen(label));
ctx->label_height = (float)FONT_CHARACTER_SIZE;
}
void SetGamepadButtonArea(GamepadButton *ctx, const SDL_FRect *area)
{
if (!ctx) {
@@ -2467,6 +3150,7 @@ static char *JoinMapping(MappingParts *parts)
sort_order[i].index = i;
}
SDL_qsort(sort_order, parts->num_elements, sizeof(*sort_order), SortMapping);
MoveSortedEntry("face", sort_order, parts->num_elements, true);
MoveSortedEntry("type", sort_order, parts->num_elements, true);
MoveSortedEntry("platform", sort_order, parts->num_elements, true);
MoveSortedEntry("crc", sort_order, parts->num_elements, true);
@@ -2802,6 +3486,8 @@ const char *GetGamepadTypeString(SDL_GamepadType type)
return "Joy-Con (R)";
case SDL_GAMEPAD_TYPE_NINTENDO_SWITCH_JOYCON_PAIR:
return "Joy-Con Pair";
case SDL_GAMEPAD_TYPE_GAMECUBE:
return "GameCube";
default:
return "";
}
+49 -1
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -12,6 +12,9 @@
/* Gamepad image */
#ifndef gamepadutils_h_
#define gamepadutils_h_
typedef struct GamepadImage GamepadImage;
typedef enum
@@ -48,7 +51,19 @@ enum
#define PRESSED_COLOR 175, 238, 238, SDL_ALPHA_OPAQUE
#define PRESSED_TEXTURE_MOD 175, 238, 238
#define SELECTED_COLOR 224, 255, 224, SDL_ALPHA_OPAQUE
#define GYRO_COLOR_RED 255, 0, 0, SDL_ALPHA_OPAQUE
#define GYRO_COLOR_GREEN 0, 255, 0, SDL_ALPHA_OPAQUE
#define GYRO_COLOR_BLUE 0, 0, 255, SDL_ALPHA_OPAQUE
#define GYRO_COLOR_ORANGE 255, 128, 0, SDL_ALPHA_OPAQUE
/* Shared layout constants */
#define BUTTON_PADDING 12.0f
#define MINIMUM_BUTTON_WIDTH 96.0f
/* Symbol */
#define DEGREE_UTF8 "\xC2\xB0"
#define SQUARED_UTF8 "\xC2\xB2"
#define MICRO_UTF8 "\xC2\xB5"
/* Gamepad image display */
extern GamepadImage *CreateGamepadImage(SDL_Renderer *renderer);
@@ -78,6 +93,7 @@ typedef struct GamepadDisplay GamepadDisplay;
extern GamepadDisplay *CreateGamepadDisplay(SDL_Renderer *renderer);
extern void SetGamepadDisplayDisplayMode(GamepadDisplay *ctx, ControllerDisplayMode display_mode);
extern void SetGamepadDisplayArea(GamepadDisplay *ctx, const SDL_FRect *area);
extern void SetGamepadDisplayGyroDriftCorrection(GamepadDisplay *ctx, float *gyro_drift_correction);
extern int GetGamepadDisplayElementAt(GamepadDisplay *ctx, SDL_Gamepad *gamepad, float x, float y);
extern void SetGamepadDisplayHighlight(GamepadDisplay *ctx, int element, bool pressed);
extern void SetGamepadDisplaySelected(GamepadDisplay *ctx, int element);
@@ -118,6 +134,7 @@ extern void DestroyJoystickDisplay(JoystickDisplay *ctx);
typedef struct GamepadButton GamepadButton;
extern GamepadButton *CreateGamepadButton(SDL_Renderer *renderer, const char *label);
extern void SetGamepadButtonLabel(GamepadButton *ctx, const char *label);
extern void SetGamepadButtonArea(GamepadButton *ctx, const SDL_FRect *area);
extern void GetGamepadButtonArea(GamepadButton *ctx, SDL_FRect *area);
extern void SetGamepadButtonHighlight(GamepadButton *ctx, bool highlight, bool pressed);
@@ -127,6 +144,35 @@ extern bool GamepadButtonContains(GamepadButton *ctx, float x, float y);
extern void RenderGamepadButton(GamepadButton *ctx);
extern void DestroyGamepadButton(GamepadButton *ctx);
/* Gyro element Display */
/* This is used as the initial noise tolerance threshold. It's set very close to zero to avoid divide by zero while we're evaluating the noise profile. Each controller may have a very different noise profile.*/
#define ACCELEROMETER_NOISE_THRESHOLD 1e-6f
/* The value below is based on observation of a Dualshock controller. Of all gamepads observed, the Dualshock (PS4) tends to have one of the noisiest accelerometers. Increase this threshold if a controller is failing to pass the noise profiling stage while stationary on a table. */
#define ACCELEROMETER_MAX_NOISE_G 0.075f
#define ACCELEROMETER_MAX_NOISE_G_SQ (ACCELEROMETER_MAX_NOISE_G * ACCELEROMETER_MAX_NOISE_G)
/* Gyro Calibration Phases */
typedef enum
{
GYRO_CALIBRATION_PHASE_OFF, /* Calibration has not yet been evaluated - signal to the user to put the controller on a flat surface before beginning the calibration process */
GYRO_CALIBRATION_PHASE_NOISE_PROFILING, /* Find the max accelerometer noise for a fixed period */
GYRO_CALIBRATION_PHASE_DRIFT_PROFILING, /* Find the drift while the accelerometer is below the accelerometer noise tolerance */
GYRO_CALIBRATION_PHASE_COMPLETE, /* Calibration has finished */
} EGyroCalibrationPhase;
typedef struct Quaternion Quaternion;
typedef struct GyroDisplay GyroDisplay;
extern void InitCirclePoints3D(void);
extern GyroDisplay *CreateGyroDisplay(SDL_Renderer *renderer);
extern void SetGyroDisplayArea(GyroDisplay *ctx, const SDL_FRect *area);
extern void SetGamepadDisplayIMUValues(GyroDisplay *ctx, float *gyro_drift_solution, float *euler_displacement_angles, Quaternion *gyro_quaternion, int reported_senor_rate_hz, int estimated_sensor_rate_hz, EGyroCalibrationPhase calibration_phase, float drift_calibration_progress_frac, float accelerometer_noise_sq, float accelerometer_noise_tolerance_sq);
extern GamepadButton *GetGyroResetButton(GyroDisplay *ctx);
extern GamepadButton *GetGyroCalibrateButton(GyroDisplay *ctx);
extern void RenderGyroDisplay(GyroDisplay *ctx, GamepadDisplay *gamepadElements, SDL_Gamepad *gamepad);
extern void DestroyGyroDisplay(GyroDisplay *ctx);
/* Working with mappings and bindings */
/* Return whether a mapping has any bindings */
@@ -167,3 +213,5 @@ extern bool MappingHasBinding(const char *mapping, const char *binding);
/* Clear any previous binding */
extern char *ClearMappingBinding(char *mapping, const char *binding);
#endif /* gamepadutils_h_ */
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

+5839 -128147
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 B

+18 -51
View File
@@ -1,52 +1,19 @@
unsigned char icon_bmp[] = {
0x42, 0x4d, 0x42, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00,
0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
0x00, 0x00, 0x6d, 0x0b, 0x00, 0x00, 0x6d, 0x0b, 0x00, 0x00, 0x03, 0x00,
0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x22, 0x22, 0x22, 0x22,
0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x22,
0x21, 0x11, 0x11, 0x12, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x12, 0x21, 0x11, 0x11, 0x11, 0x11, 0x12, 0x21, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x11, 0x11, 0x11, 0x11, 0x11,
0x11, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x21, 0x11,
0x22, 0x22, 0x22, 0x22, 0x11, 0x12, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x21, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
0x22, 0x22, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x22, 0x22,
0x22, 0x21, 0x12, 0x22, 0x22, 0x22, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00,
0x01, 0x22, 0x22, 0x22, 0x22, 0x21, 0x12, 0x22, 0x22, 0x22, 0x22, 0x10,
0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
0x22, 0x22, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x22, 0x22,
0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00,
0x01, 0x22, 0x22, 0x11, 0x11, 0x22, 0x22, 0x11, 0x11, 0x22, 0x22, 0x10,
0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x22, 0x11, 0x01, 0x22, 0x22, 0x11,
0x01, 0x22, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x22, 0x11,
0x11, 0x22, 0x22, 0x11, 0x11, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x12, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x21, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
0x22, 0x22, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x22,
0x22, 0x22, 0x22, 0x22, 0x22, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x10, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x22, 0x22, 0x22, 0x22,
0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00
unsigned char icon_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20,
0x02, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x14, 0x92, 0x67, 0x00, 0x00, 0x00,
0x09, 0x50, 0x4c, 0x54, 0x45, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff,
0xff, 0x00, 0x53, 0xed, 0x60, 0xc2, 0x00, 0x00, 0x00, 0x69, 0x49, 0x44,
0x41, 0x54, 0x18, 0xd3, 0x63, 0x60, 0xa0, 0x18, 0x84, 0x86, 0x42, 0x68,
0xd6, 0x55, 0xab, 0x02, 0xc0, 0x0c, 0xa9, 0x55, 0xab, 0x96, 0x80, 0x19,
0x59, 0xab, 0x56, 0xad, 0x04, 0xd1, 0x8c, 0xab, 0x80, 0xc0, 0x01, 0xc8,
0x60, 0x03, 0x31, 0x26, 0x80, 0x18, 0x4b, 0xa3, 0x96, 0x46, 0x81, 0x18,
0x52, 0x4b, 0x81, 0x70, 0x09, 0x98, 0x01, 0x14, 0x59, 0x02, 0xd1, 0x0d,
0xd1, 0x8f, 0xc4, 0x58, 0x99, 0x85, 0xce, 0x80, 0x4a, 0x21, 0x0c, 0x9c,
0xba, 0x6a, 0x55, 0x18, 0x88, 0xc1, 0xb8, 0x34, 0x34, 0x34, 0x0a, 0x64,
0x17, 0x43, 0x66, 0x68, 0x68, 0x26, 0xc4, 0x3d, 0x53, 0xc3, 0x96, 0xa0,
0xba, 0x10, 0xee, 0x66, 0x82, 0x00, 0x00, 0x0b, 0x4e, 0x32, 0x71, 0x69,
0x34, 0x3a, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae,
0x42, 0x60, 0x82
};
unsigned int icon_bmp_len = 578;
unsigned int icon_png_len = 183;
Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

+8 -3
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -62,13 +62,17 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
consumed = SDLTest_CommonArg(state, i);
if (!consumed) {
if (!filename) {
if (SDL_strcmp(argv[i], "--role") == 0 && argv[i + 1]) {
SDL_SetHint(SDL_HINT_AUDIO_DEVICE_STREAM_ROLE, argv[i + 1]);
++i;
consumed = 1;
} else if (!filename) {
filename = argv[i];
consumed = 1;
}
}
if (consumed <= 0) {
static const char *options[] = { "[sample.wav]", NULL };
static const char *options[] = { "[--role ROLE]", "[sample.wav]", NULL };
SDLTest_CommonLogUsage(state, argv[0], options);
exit(1);
}
@@ -105,6 +109,7 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
}
SDL_Log("Using audio driver: %s", SDL_GetCurrentAudioDriver());
SDL_Log("Current audio device name: %s", SDL_GetAudioDeviceName(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK));
stream = SDL_OpenAudioDeviceStream(SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &wave.spec, NULL, NULL);
if (!stream) {
+95
View File
@@ -0,0 +1,95 @@
32,0.259765625,0,-0,0,-0,0,256,0,256
33,0.26416015625,0.04259963723256735,-0.74801901743264665,0.22009567526743265,0.063391442155309036,167.5,44.5,174.5,76.5
34,0.3984375,0.034401000396196514,-0.74801901743264665,0.36403649960380352,-0.41838351822503961,242.5,175.5,255.5,188.5
35,0.64599609375,-0.0068815929576070169,-0.74801901743264665,0.65238940545760693,0.038034865293185421,0.5,111.5,26.5,142.5
36,0.57177734375,0.033055325128763823,-0.79873217115689388,0.54018686237123603,0.08874801901743265,142.5,0.5,162.5,35.5
37,0.82666015625,0.020303136762083947,-0.77337559429477021,0.80635701948791605,0.038034865293185421,175.5,44.5,206.5,76.5
38,0.728515625,0.021001510499207562,-0.77337559429477021,0.75634223950079238,0.038034865293185421,214.5,44.5,243.5,76.5
39,0.21923828125,0.033793550663629157,-0.74801901743264665,0.18593301183637084,-0.41838351822503961,89.5,232.5,95.5,245.5
40,0.294921875,0.012882577258320127,-0.74801901743264665,0.29180492274167991,0.19017432646592711,62.5,0.5,73.5,37.5
41,0.294921875,0.0031169522583201267,-0.74801901743264665,0.28203929774167991,0.19017432646592711,74.5,0.5,85.5,37.5
42,0.55078125,0.0079258648227020154,-0.79873217115689388,0.54041397892729792,-0.26624405705229792,234.5,78.5,255.5,99.5
43,0.57177734375,0.018668052322702015,-0.62123613312202852,0.55115616642729792,-0.063391442155309036,22.5,232.5,43.5,254.5
44,0.2587890625,0.011122520676505546,-0.16481774960380352,0.21397513557349446,0.16481774960380349,118.5,232.5,126.5,245.5
45,0.32177734375,0.0089933513272583213,-0.34231378763866882,0.31327227367274169,-0.19017432646592711,242.5,189.5,254.5,195.5
46,0.2626953125,0.04259963723256735,-0.13946117274167988,0.22009567526743265,0.063391442155309036,138.5,232.5,145.5,240.5
47,0.36669921875,-0.019747146146988907,-0.74801901743264665,0.38595808364698891,0.038034865293185421,95.5,143.5,111.5,174.5
48,0.57177734375,0.019400474197702015,-0.77337559429477021,0.55188858830229792,0.038034865293185421,0.5,78.5,21.5,110.5
49,0.57177734375,0.055885375396196514,-0.74801901743264665,0.38552087460380352,0.038034865293185421,137.5,143.5,150.5,174.5
50,0.57177734375,0.016959067947702015,-0.77337559429477021,0.54944718205229792,0.038034865293185421,22.5,78.5,43.5,110.5
51,0.57177734375,0.012564536697702015,-0.77337559429477021,0.54505265080229792,0.038034865293185421,44.5,78.5,65.5,110.5
52,0.57177734375,-0.0044912589144215989,-0.74801901743264665,0.57871000891442159,0.038034865293185421,232.5,143.5,255.5,174.5
53,0.57177734375,0.035740872003763823,-0.74801901743264665,0.54287240924623603,0.038034865293185421,235.5,111.5,255.5,142.5
54,0.57177734375,0.023795005447702015,-0.77337559429477021,0.55628311955229792,0.038034865293185421,66.5,78.5,87.5,110.5
55,0.57177734375,0.017203208572702015,-0.74801901743264665,0.54969132267729792,0.038034865293185421,82.5,175.5,103.5,206.5
56,0.57177734375,0.018912192947702015,-0.77337559429477021,0.55140030705229792,0.038034865293185421,88.5,78.5,109.5,110.5
57,0.57177734375,0.017935630447702015,-0.77337559429477021,0.55042374455229792,0.038034865293185421,110.5,78.5,131.5,110.5
58,0.2626953125,0.04259963723256735,-0.59587955625990485,0.22009567526743265,0.063391442155309036,130.5,175.5,137.5,201.5
59,0.2626953125,-0.0044854552545562608,-0.59587955625990485,0.22372373650455626,0.16481774960380349,104.5,175.5,113.5,205.5
60,0.57177734375,0.018912192947702015,-0.64659270998415219,0.55140030705229792,-0.08874801901743265,0.5,232.5,21.5,254.5
61,0.57177734375,0.018912192947702015,-0.51980982567353418,0.55140030705229792,-0.19017432646592711,96.5,232.5,117.5,245.5
62,0.57177734375,0.018912192947702015,-0.64659270998415219,0.55140030705229792,-0.08874801901743265,44.5,232.5,65.5,254.5
63,0.431640625,-0.018492394884112522,-0.77337559429477021,0.43792598863411253,0.063391442155309036,22.5,44.5,40.5,77.5
64,0.896484375,0.030102809899960288,-0.74801901743264665,0.86686984635003961,0.13946117274167988,163.5,0.5,196.5,35.5
65,0.63232421875,-0.026639959513668827,-0.74801901743264665,0.65798761576366882,0.038034865293185421,23.5,175.5,50.5,206.5
66,0.64599609375,0.065804217016640215,-0.74801901743264665,0.6236489079833597,0.038034865293185421,0.5,175.5,22.5,206.5
67,0.6298828125,0.025799202654516594,-0.77337559429477021,0.63435704734548326,0.038034865293185421,132.5,78.5,156.5,110.5
68,0.7255859375,0.064146304848454794,-0.74801901743264665,0.69806072640154515,0.038034865293185421,189.5,143.5,214.5,174.5
69,0.5556640625,0.06817752699088743,-0.74801901743264665,0.52459591050911247,0.038034865293185421,170.5,143.5,188.5,174.5
70,0.51611328125,0.06817752699088743,-0.74801901743264665,0.52459591050911247,0.038034865293185421,151.5,143.5,169.5,174.5
71,0.72705078125,0.027053953917392983,-0.77337559429477021,0.68632495233260693,0.038034865293185421,157.5,78.5,183.5,110.5
72,0.7373046875,0.063885140154516601,-0.74801901743264665,0.67244298484548326,0.038034865293185421,112.5,143.5,136.5,174.5
73,0.279296875,0.063090425663629157,-0.74801901743264665,0.21522988683637084,0.038034865293185421,244.5,44.5,250.5,75.5
74,0.2685546875,-0.11647790585380349,-0.74801901743264665,0.21315759335380352,0.21553090332805072,48.5,0.5,61.5,38.5
75,0.6123046875,0.063379834835578408,-0.74801901743264665,0.64658110266442159,0.038034865293185421,45.5,143.5,68.5,174.5
76,0.52197265625,0.069398230115887444,-0.74801901743264665,0.52581661363411247,0.038034865293185421,26.5,143.5,44.5,174.5
77,0.8994140625,0.069358378318145758,-0.74801901743264665,0.83005568418185416,0.038034865293185421,51.5,175.5,81.5,206.5
78,0.7529296875,0.059751773598454787,-0.74801901743264665,0.69366619515154515,0.038034865293185421,0.5,143.5,25.5,174.5
79,0.77783203125,0.033923939555269372,-0.77337559429477021,0.74390809169473049,0.038034865293185421,184.5,78.5,212.5,110.5
80,0.6015625,0.070164700128763829,-0.74801901743264665,0.57729623737123603,0.038034865293185421,191.5,111.5,211.5,142.5
81,0.77783203125,0.033923939555269372,-0.77337559429477021,0.74390809169473049,0.21553090332805072,19.5,0.5,47.5,39.5
82,0.6171875,0.070198748266640215,-0.74801901743264665,0.6280434392333597,0.038034865293185421,129.5,111.5,151.5,142.5
83,0.54833984375,0.022313137628763823,-0.77337559429477021,0.52944467487123603,0.038034865293185421,213.5,78.5,233.5,110.5
84,0.55078125,-0.016942430789421599,-0.74801901743264665,0.56625883703942159,0.038034865293185421,79.5,111.5,102.5,142.5
85,0.72900390625,0.059734749529516594,-0.74801901743264665,0.66829259422048326,0.038034865293185421,54.5,111.5,78.5,142.5
86,0.59619140625,-0.031539796082607013,-0.74801901743264665,0.62773120233260693,0.038034865293185421,27.5,111.5,53.5,142.5
87,0.92333984375,-0.020105038505348741,-0.74801901743264665,0.94344488225534862,0.038034865293185421,152.5,111.5,190.5,142.5
88,0.57763671875,-0.028382992026545213,-0.74801901743264665,0.60553142952654515,0.038034865293185421,69.5,143.5,94.5,174.5
89,0.55908203125,-0.037416195151545213,-0.74801901743264665,0.59649822640154515,0.038034865293185421,103.5,111.5,128.5,142.5
90,0.572265625,0.0069663263916402082,-0.74801901743264665,0.5648110173583597,0.038034865293185421,212.5,111.5,234.5,142.5
91,0.3271484375,0.052189217883320121,-0.74801901743264665,0.33111156336667991,0.19017432646592711,102.5,0.5,113.5,37.5
92,0.36669921875,-0.019258864896988907,-0.74801901743264665,0.38644636489698891,0.038034865293185421,215.5,143.5,231.5,174.5
93,0.3271484375,-0.0037189852416798751,-0.74801901743264665,0.27520336024167991,0.19017432646592711,114.5,0.5,125.5,37.5
94,0.57177734375,0.0072104670166402082,-0.74801901743264665,0.5650551579833597,-0.24088748019017434,66.5,232.5,88.5,252.5
95,0.43798828125,-0.034571627996236129,0.063391442155309036,0.47255990924623614,0.19017432646592711,89.5,246.5,109.5,251.5
96,0.27734375,0.012133131314381934,-0.79873217115689388,0.26569889993561807,-0.57052297939778129,127.5,232.5,137.5,241.5
97,0.5556640625,0.019122285434825671,-0.57052297939778129,0.50089724581517436,0.038034865293185421,21.5,207.5,40.5,231.5
98,0.61181640625,0.054556724197702015,-0.79873217115689388,0.58704483830229792,0.038034865293185421,41.5,44.5,62.5,77.5
99,0.47900390625,0.022767370740887478,-0.57052297939778129,0.47918575425911253,0.038034865293185421,168.5,207.5,186.5,231.5
100,0.61181640625,0.024527427322702015,-0.79873217115689388,0.55701554142729792,0.038034865293185421,63.5,44.5,84.5,77.5
101,0.5615234375,0.028904934503763823,-0.57052297939778129,0.53603647174623603,0.038034865293185421,200.5,175.5,220.5,199.5
102,0.33642578125,-0.017288715828050714,-0.79873217115689388,0.41377309082805075,0.038034865293185421,128.5,44.5,145.5,77.5
103,0.54296875,-0.022557665164421599,-0.59587955625990485,0.56064360266442159,0.26624405705229792,197.5,0.5,220.5,34.5
104,0.61328125,0.055027981378763823,-0.79873217115689388,0.56215951862123603,0.038034865293185421,146.5,44.5,166.5,77.5
105,0.25244140625,0.050883394413629157,-0.77337559429477021,0.20302285558637084,0.038034865293185421,207.5,44.5,213.5,76.5
106,0.25244140625,-0.091592586172741686,-0.77337559429477021,0.21268633617274166,0.26624405705229792,6.5,0.5,18.5,41.5
107,0.525390625,0.047947903253763823,-0.79873217115689388,0.55507944049623603,0.038034865293185421,107.5,44.5,127.5,77.5
108,0.25244140625,0.050150972538629157,-0.79873217115689388,0.20229043371137084,0.038034865293185421,244.5,0.5,250.5,33.5
109,0.92578125,0.059382660831022144,-0.57052297939778129,0.87079312041897783,0.038034865293185421,60.5,207.5,92.5,231.5
110,0.61328125,0.055027981378763823,-0.57052297939778129,0.56215951862123603,0.038034865293185421,0.5,207.5,20.5,231.5
111,0.6015625,0.022347185766640208,-0.57052297939778129,0.5801918767333597,0.038034865293185421,145.5,207.5,167.5,231.5
112,0.61181640625,0.054556724197702015,-0.57052297939778129,0.58704483830229792,0.26624405705229792,85.5,44.5,106.5,77.5
113,0.61181640625,0.024039146072702015,-0.57052297939778129,0.55652726017729792,0.26624405705229792,0.5,44.5,21.5,77.5
114,0.40869140625,0.0493276266590729,-0.57052297939778129,0.42967627959092713,0.038034865293185421,138.5,175.5,153.5,199.5
115,0.4765625,0.012757605115887478,-0.57052297939778129,0.46917598863411253,0.038034865293185421,41.5,207.5,59.5,231.5
116,0.3564453125,-0.0156137795909271,-0.69730586370839942,0.36473487334092713,0.038034865293185421,114.5,175.5,129.5,204.5
117,0.61328125,0.049901028253763823,-0.57052297939778129,0.55703256549623603,0.038034865293185421,221.5,175.5,241.5,199.5
118,0.49951171875,-0.029166486108359792,-0.57052297939778129,0.5286782048583597,0.038034865293185421,154.5,175.5,176.5,199.5
119,0.77490234375,-0.01825405791897786,-0.57052297939778129,0.79315640166897772,0.038034865293185421,93.5,207.5,125.5,231.5
120,0.5234375,-0.017203595483359792,-0.57052297939778129,0.5406410954833597,0.038034865293185421,177.5,175.5,199.5,199.5
121,0.5009765625,-0.027945782983359792,-0.57052297939778129,0.5298989079833597,0.26624405705229792,221.5,0.5,243.5,33.5
122,0.46875,0.0059216676158874784,-0.57052297939778129,0.46234005113411253,0.038034865293185421,126.5,207.5,144.5,231.5
123,0.375,-0.0048715920909271002,-0.74801901743264665,0.37547706084092713,0.19017432646592711,86.5,0.5,101.5,37.5
124,0.54931640625,0.21077847971969096,-0.79873217115689377,0.33756136403030901,0.29160063391442159,0.5,0.5,5.5,43.5
125,0.375,1.122040907289984e-05,-0.74801901743264665,0.38035987334092713,0.19017432646592711,126.5,0.5,141.5,37.5
126,0.57177734375,0.018912192947702015,-0.44374009508716328,0.55140030705229792,-0.24088748019017434,234.5,100.5,255.5,108.5
1 32 0.259765625 0 -0 0 -0 0 256 0 256
2 33 0.26416015625 0.04259963723256735 -0.74801901743264665 0.22009567526743265 0.063391442155309036 167.5 44.5 174.5 76.5
3 34 0.3984375 0.034401000396196514 -0.74801901743264665 0.36403649960380352 -0.41838351822503961 242.5 175.5 255.5 188.5
4 35 0.64599609375 -0.0068815929576070169 -0.74801901743264665 0.65238940545760693 0.038034865293185421 0.5 111.5 26.5 142.5
5 36 0.57177734375 0.033055325128763823 -0.79873217115689388 0.54018686237123603 0.08874801901743265 142.5 0.5 162.5 35.5
6 37 0.82666015625 0.020303136762083947 -0.77337559429477021 0.80635701948791605 0.038034865293185421 175.5 44.5 206.5 76.5
7 38 0.728515625 0.021001510499207562 -0.77337559429477021 0.75634223950079238 0.038034865293185421 214.5 44.5 243.5 76.5
8 39 0.21923828125 0.033793550663629157 -0.74801901743264665 0.18593301183637084 -0.41838351822503961 89.5 232.5 95.5 245.5
9 40 0.294921875 0.012882577258320127 -0.74801901743264665 0.29180492274167991 0.19017432646592711 62.5 0.5 73.5 37.5
10 41 0.294921875 0.0031169522583201267 -0.74801901743264665 0.28203929774167991 0.19017432646592711 74.5 0.5 85.5 37.5
11 42 0.55078125 0.0079258648227020154 -0.79873217115689388 0.54041397892729792 -0.26624405705229792 234.5 78.5 255.5 99.5
12 43 0.57177734375 0.018668052322702015 -0.62123613312202852 0.55115616642729792 -0.063391442155309036 22.5 232.5 43.5 254.5
13 44 0.2587890625 0.011122520676505546 -0.16481774960380352 0.21397513557349446 0.16481774960380349 118.5 232.5 126.5 245.5
14 45 0.32177734375 0.0089933513272583213 -0.34231378763866882 0.31327227367274169 -0.19017432646592711 242.5 189.5 254.5 195.5
15 46 0.2626953125 0.04259963723256735 -0.13946117274167988 0.22009567526743265 0.063391442155309036 138.5 232.5 145.5 240.5
16 47 0.36669921875 -0.019747146146988907 -0.74801901743264665 0.38595808364698891 0.038034865293185421 95.5 143.5 111.5 174.5
17 48 0.57177734375 0.019400474197702015 -0.77337559429477021 0.55188858830229792 0.038034865293185421 0.5 78.5 21.5 110.5
18 49 0.57177734375 0.055885375396196514 -0.74801901743264665 0.38552087460380352 0.038034865293185421 137.5 143.5 150.5 174.5
19 50 0.57177734375 0.016959067947702015 -0.77337559429477021 0.54944718205229792 0.038034865293185421 22.5 78.5 43.5 110.5
20 51 0.57177734375 0.012564536697702015 -0.77337559429477021 0.54505265080229792 0.038034865293185421 44.5 78.5 65.5 110.5
21 52 0.57177734375 -0.0044912589144215989 -0.74801901743264665 0.57871000891442159 0.038034865293185421 232.5 143.5 255.5 174.5
22 53 0.57177734375 0.035740872003763823 -0.74801901743264665 0.54287240924623603 0.038034865293185421 235.5 111.5 255.5 142.5
23 54 0.57177734375 0.023795005447702015 -0.77337559429477021 0.55628311955229792 0.038034865293185421 66.5 78.5 87.5 110.5
24 55 0.57177734375 0.017203208572702015 -0.74801901743264665 0.54969132267729792 0.038034865293185421 82.5 175.5 103.5 206.5
25 56 0.57177734375 0.018912192947702015 -0.77337559429477021 0.55140030705229792 0.038034865293185421 88.5 78.5 109.5 110.5
26 57 0.57177734375 0.017935630447702015 -0.77337559429477021 0.55042374455229792 0.038034865293185421 110.5 78.5 131.5 110.5
27 58 0.2626953125 0.04259963723256735 -0.59587955625990485 0.22009567526743265 0.063391442155309036 130.5 175.5 137.5 201.5
28 59 0.2626953125 -0.0044854552545562608 -0.59587955625990485 0.22372373650455626 0.16481774960380349 104.5 175.5 113.5 205.5
29 60 0.57177734375 0.018912192947702015 -0.64659270998415219 0.55140030705229792 -0.08874801901743265 0.5 232.5 21.5 254.5
30 61 0.57177734375 0.018912192947702015 -0.51980982567353418 0.55140030705229792 -0.19017432646592711 96.5 232.5 117.5 245.5
31 62 0.57177734375 0.018912192947702015 -0.64659270998415219 0.55140030705229792 -0.08874801901743265 44.5 232.5 65.5 254.5
32 63 0.431640625 -0.018492394884112522 -0.77337559429477021 0.43792598863411253 0.063391442155309036 22.5 44.5 40.5 77.5
33 64 0.896484375 0.030102809899960288 -0.74801901743264665 0.86686984635003961 0.13946117274167988 163.5 0.5 196.5 35.5
34 65 0.63232421875 -0.026639959513668827 -0.74801901743264665 0.65798761576366882 0.038034865293185421 23.5 175.5 50.5 206.5
35 66 0.64599609375 0.065804217016640215 -0.74801901743264665 0.6236489079833597 0.038034865293185421 0.5 175.5 22.5 206.5
36 67 0.6298828125 0.025799202654516594 -0.77337559429477021 0.63435704734548326 0.038034865293185421 132.5 78.5 156.5 110.5
37 68 0.7255859375 0.064146304848454794 -0.74801901743264665 0.69806072640154515 0.038034865293185421 189.5 143.5 214.5 174.5
38 69 0.5556640625 0.06817752699088743 -0.74801901743264665 0.52459591050911247 0.038034865293185421 170.5 143.5 188.5 174.5
39 70 0.51611328125 0.06817752699088743 -0.74801901743264665 0.52459591050911247 0.038034865293185421 151.5 143.5 169.5 174.5
40 71 0.72705078125 0.027053953917392983 -0.77337559429477021 0.68632495233260693 0.038034865293185421 157.5 78.5 183.5 110.5
41 72 0.7373046875 0.063885140154516601 -0.74801901743264665 0.67244298484548326 0.038034865293185421 112.5 143.5 136.5 174.5
42 73 0.279296875 0.063090425663629157 -0.74801901743264665 0.21522988683637084 0.038034865293185421 244.5 44.5 250.5 75.5
43 74 0.2685546875 -0.11647790585380349 -0.74801901743264665 0.21315759335380352 0.21553090332805072 48.5 0.5 61.5 38.5
44 75 0.6123046875 0.063379834835578408 -0.74801901743264665 0.64658110266442159 0.038034865293185421 45.5 143.5 68.5 174.5
45 76 0.52197265625 0.069398230115887444 -0.74801901743264665 0.52581661363411247 0.038034865293185421 26.5 143.5 44.5 174.5
46 77 0.8994140625 0.069358378318145758 -0.74801901743264665 0.83005568418185416 0.038034865293185421 51.5 175.5 81.5 206.5
47 78 0.7529296875 0.059751773598454787 -0.74801901743264665 0.69366619515154515 0.038034865293185421 0.5 143.5 25.5 174.5
48 79 0.77783203125 0.033923939555269372 -0.77337559429477021 0.74390809169473049 0.038034865293185421 184.5 78.5 212.5 110.5
49 80 0.6015625 0.070164700128763829 -0.74801901743264665 0.57729623737123603 0.038034865293185421 191.5 111.5 211.5 142.5
50 81 0.77783203125 0.033923939555269372 -0.77337559429477021 0.74390809169473049 0.21553090332805072 19.5 0.5 47.5 39.5
51 82 0.6171875 0.070198748266640215 -0.74801901743264665 0.6280434392333597 0.038034865293185421 129.5 111.5 151.5 142.5
52 83 0.54833984375 0.022313137628763823 -0.77337559429477021 0.52944467487123603 0.038034865293185421 213.5 78.5 233.5 110.5
53 84 0.55078125 -0.016942430789421599 -0.74801901743264665 0.56625883703942159 0.038034865293185421 79.5 111.5 102.5 142.5
54 85 0.72900390625 0.059734749529516594 -0.74801901743264665 0.66829259422048326 0.038034865293185421 54.5 111.5 78.5 142.5
55 86 0.59619140625 -0.031539796082607013 -0.74801901743264665 0.62773120233260693 0.038034865293185421 27.5 111.5 53.5 142.5
56 87 0.92333984375 -0.020105038505348741 -0.74801901743264665 0.94344488225534862 0.038034865293185421 152.5 111.5 190.5 142.5
57 88 0.57763671875 -0.028382992026545213 -0.74801901743264665 0.60553142952654515 0.038034865293185421 69.5 143.5 94.5 174.5
58 89 0.55908203125 -0.037416195151545213 -0.74801901743264665 0.59649822640154515 0.038034865293185421 103.5 111.5 128.5 142.5
59 90 0.572265625 0.0069663263916402082 -0.74801901743264665 0.5648110173583597 0.038034865293185421 212.5 111.5 234.5 142.5
60 91 0.3271484375 0.052189217883320121 -0.74801901743264665 0.33111156336667991 0.19017432646592711 102.5 0.5 113.5 37.5
61 92 0.36669921875 -0.019258864896988907 -0.74801901743264665 0.38644636489698891 0.038034865293185421 215.5 143.5 231.5 174.5
62 93 0.3271484375 -0.0037189852416798751 -0.74801901743264665 0.27520336024167991 0.19017432646592711 114.5 0.5 125.5 37.5
63 94 0.57177734375 0.0072104670166402082 -0.74801901743264665 0.5650551579833597 -0.24088748019017434 66.5 232.5 88.5 252.5
64 95 0.43798828125 -0.034571627996236129 0.063391442155309036 0.47255990924623614 0.19017432646592711 89.5 246.5 109.5 251.5
65 96 0.27734375 0.012133131314381934 -0.79873217115689388 0.26569889993561807 -0.57052297939778129 127.5 232.5 137.5 241.5
66 97 0.5556640625 0.019122285434825671 -0.57052297939778129 0.50089724581517436 0.038034865293185421 21.5 207.5 40.5 231.5
67 98 0.61181640625 0.054556724197702015 -0.79873217115689388 0.58704483830229792 0.038034865293185421 41.5 44.5 62.5 77.5
68 99 0.47900390625 0.022767370740887478 -0.57052297939778129 0.47918575425911253 0.038034865293185421 168.5 207.5 186.5 231.5
69 100 0.61181640625 0.024527427322702015 -0.79873217115689388 0.55701554142729792 0.038034865293185421 63.5 44.5 84.5 77.5
70 101 0.5615234375 0.028904934503763823 -0.57052297939778129 0.53603647174623603 0.038034865293185421 200.5 175.5 220.5 199.5
71 102 0.33642578125 -0.017288715828050714 -0.79873217115689388 0.41377309082805075 0.038034865293185421 128.5 44.5 145.5 77.5
72 103 0.54296875 -0.022557665164421599 -0.59587955625990485 0.56064360266442159 0.26624405705229792 197.5 0.5 220.5 34.5
73 104 0.61328125 0.055027981378763823 -0.79873217115689388 0.56215951862123603 0.038034865293185421 146.5 44.5 166.5 77.5
74 105 0.25244140625 0.050883394413629157 -0.77337559429477021 0.20302285558637084 0.038034865293185421 207.5 44.5 213.5 76.5
75 106 0.25244140625 -0.091592586172741686 -0.77337559429477021 0.21268633617274166 0.26624405705229792 6.5 0.5 18.5 41.5
76 107 0.525390625 0.047947903253763823 -0.79873217115689388 0.55507944049623603 0.038034865293185421 107.5 44.5 127.5 77.5
77 108 0.25244140625 0.050150972538629157 -0.79873217115689388 0.20229043371137084 0.038034865293185421 244.5 0.5 250.5 33.5
78 109 0.92578125 0.059382660831022144 -0.57052297939778129 0.87079312041897783 0.038034865293185421 60.5 207.5 92.5 231.5
79 110 0.61328125 0.055027981378763823 -0.57052297939778129 0.56215951862123603 0.038034865293185421 0.5 207.5 20.5 231.5
80 111 0.6015625 0.022347185766640208 -0.57052297939778129 0.5801918767333597 0.038034865293185421 145.5 207.5 167.5 231.5
81 112 0.61181640625 0.054556724197702015 -0.57052297939778129 0.58704483830229792 0.26624405705229792 85.5 44.5 106.5 77.5
82 113 0.61181640625 0.024039146072702015 -0.57052297939778129 0.55652726017729792 0.26624405705229792 0.5 44.5 21.5 77.5
83 114 0.40869140625 0.0493276266590729 -0.57052297939778129 0.42967627959092713 0.038034865293185421 138.5 175.5 153.5 199.5
84 115 0.4765625 0.012757605115887478 -0.57052297939778129 0.46917598863411253 0.038034865293185421 41.5 207.5 59.5 231.5
85 116 0.3564453125 -0.0156137795909271 -0.69730586370839942 0.36473487334092713 0.038034865293185421 114.5 175.5 129.5 204.5
86 117 0.61328125 0.049901028253763823 -0.57052297939778129 0.55703256549623603 0.038034865293185421 221.5 175.5 241.5 199.5
87 118 0.49951171875 -0.029166486108359792 -0.57052297939778129 0.5286782048583597 0.038034865293185421 154.5 175.5 176.5 199.5
88 119 0.77490234375 -0.01825405791897786 -0.57052297939778129 0.79315640166897772 0.038034865293185421 93.5 207.5 125.5 231.5
89 120 0.5234375 -0.017203595483359792 -0.57052297939778129 0.5406410954833597 0.038034865293185421 177.5 175.5 199.5 199.5
90 121 0.5009765625 -0.027945782983359792 -0.57052297939778129 0.5298989079833597 0.26624405705229792 221.5 0.5 243.5 33.5
91 122 0.46875 0.0059216676158874784 -0.57052297939778129 0.46234005113411253 0.038034865293185421 126.5 207.5 144.5 231.5
92 123 0.375 -0.0048715920909271002 -0.74801901743264665 0.37547706084092713 0.19017432646592711 86.5 0.5 101.5 37.5
93 124 0.54931640625 0.21077847971969096 -0.79873217115689377 0.33756136403030901 0.29160063391442159 0.5 0.5 5.5 43.5
94 125 0.375 1.122040907289984e-05 -0.74801901743264665 0.38035987334092713 0.19017432646592711 126.5 0.5 141.5 37.5
95 126 0.57177734375 0.018912192947702015 -0.44374009508716328 0.55140030705229792 -0.24088748019017434 234.5 100.5 255.5 108.5
Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

+1 -1
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1005 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

+10 -10
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -24,8 +24,8 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
{
const char *base = NULL;
SDL_AsyncIO *asyncio = NULL;
char **bmps = NULL;
int bmpcount = 0;
char **pngs = NULL;
int pngcount = 0;
int i;
SDL_srand(0);
@@ -87,15 +87,15 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
}
base = SDL_GetBasePath();
bmps = SDL_GlobDirectory(base, "*.bmp", SDL_GLOB_CASEINSENSITIVE, &bmpcount);
if (!bmps || (bmpcount == 0)) {
SDL_Log("No BMP files found.");
pngs = SDL_GlobDirectory(base, "*.png", SDL_GLOB_CASEINSENSITIVE, &pngcount);
if (!pngs || (pngcount == 0)) {
SDL_Log("No PNG files found.");
return SDL_APP_FAILURE;
}
for (i = 0; i < bmpcount; i++) {
for (i = 0; i < pngcount; i++) {
char *path = NULL;
if (SDL_asprintf(&path, "%s%s", base, bmps[i]) < 0) {
if (SDL_asprintf(&path, "%s%s", base, pngs[i]) < 0) {
SDL_free(path);
} else {
SDL_Log("Loading %s...", path);
@@ -103,7 +103,7 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
}
}
SDL_free(bmps);
SDL_free(pngs);
SDL_Log("Opening asyncio.tmp...");
asyncio = SDL_AsyncIOFromFile("asyncio.tmp", "w");
@@ -150,7 +150,7 @@ static void async_io_task_complete(const SDL_AsyncIOOutcome *outcome)
}
if (outcome->result == SDL_ASYNCIO_COMPLETE) {
SDL_Surface *surface = SDL_LoadBMP_IO(SDL_IOFromConstMem(outcome->buffer, (size_t) outcome->bytes_transferred), true);
SDL_Surface *surface = SDL_LoadPNG_IO(SDL_IOFromConstMem(outcome->buffer, (size_t) outcome->bytes_transferred), true);
if (surface) {
SDL_Surface *converted = SDL_ConvertSurface(surface, SDL_PIXELFORMAT_RGBA8888);
SDL_DestroySurface(surface);
+1 -1
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
+14 -11
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -718,16 +718,15 @@ static Texture *CreateTexture(const char *fname)
if (!tex) {
SDL_Log("Out of memory!");
} else {
int texw, texh;
tex->texture = LoadTexture(state->renderers[0], fname, true, &texw, &texh);
tex->texture = LoadTexture(state->renderers[0], fname, true);
if (!tex->texture) {
SDL_Log("Failed to load '%s': %s", fname, SDL_GetError());
SDL_free(tex);
return NULL;
}
SDL_SetTextureBlendMode(tex->texture, SDL_BLENDMODE_BLEND);
tex->w = (float) texw;
tex->h = (float) texh;
tex->w = (float)tex->texture->w;
tex->h = (float)tex->texture->h;
}
return tex;
}
@@ -1061,6 +1060,10 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
{
int i;
char version[32]; /* use SDL's version number, since this test program is part of SDL's sources. */
SDL_snprintf(version, sizeof (version), "%d.%d.%d", SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_MICRO_VERSION);
SDL_SetAppMetadata("SDL testaudio", version, "org.libsdl.testaudio");
state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO | SDL_INIT_AUDIO);
if (!state) {
return SDL_APP_FAILURE;
@@ -1097,12 +1100,12 @@ SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
SetDefaultTitleBar();
if ((physdev_texture = CreateTexture("physaudiodev.bmp")) == NULL) { return SDL_APP_FAILURE; }
if ((logdev_texture = CreateTexture("logaudiodev.bmp")) == NULL) { return SDL_APP_FAILURE; }
if ((audio_texture = CreateTexture("audiofile.bmp")) == NULL) { return SDL_APP_FAILURE; }
if ((trashcan_texture = CreateTexture("trashcan.bmp")) == NULL) { return SDL_APP_FAILURE; }
if ((soundboard_texture = CreateTexture("soundboard.bmp")) == NULL) { return SDL_APP_FAILURE; }
if ((soundboard_levels_texture = CreateTexture("soundboard_levels.bmp")) == NULL) { return SDL_APP_FAILURE; }
if ((physdev_texture = CreateTexture("physaudiodev.png")) == NULL) { return SDL_APP_FAILURE; }
if ((logdev_texture = CreateTexture("logaudiodev.png")) == NULL) { return SDL_APP_FAILURE; }
if ((audio_texture = CreateTexture("audiofile.png")) == NULL) { return SDL_APP_FAILURE; }
if ((trashcan_texture = CreateTexture("trashcan.png")) == NULL) { return SDL_APP_FAILURE; }
if ((soundboard_texture = CreateTexture("soundboard.png")) == NULL) { return SDL_APP_FAILURE; }
if ((soundboard_levels_texture = CreateTexture("soundboard_levels.png")) == NULL) { return SDL_APP_FAILURE; }
LoadStockWavThings();
CreateTrashcanThing();
+1 -1
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
+1 -1
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
+1 -1
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
+1 -1
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
+16 -6
View File
@@ -15,6 +15,16 @@
#include <SDL3/SDL_test.h>
#include "testautomation_suites.h"
static bool test_double_isfinite(double d)
{
union {
Uint64 u64;
double d;
} d_u;
d_u.d = d;
return (d_u.u64 & 0x7ff0000000000000ULL) != 0x7ff0000000000000ULL;
}
/* ================= Test Case Implementation ================== */
/* Fixture */
@@ -1147,11 +1157,11 @@ static int SDLCALL audio_resampleLoss(void *arg)
SDL_DestroyAudioStream(stream);
SDL_free(buf_out);
signal_to_noise = 10 * SDL_log10(sum_squared_value / sum_squared_error); /* decibel */
SDLTest_AssertCheck(ISFINITE(sum_squared_value), "Sum of squared target should be finite.");
SDLTest_AssertCheck(ISFINITE(sum_squared_error), "Sum of squared error should be finite.");
SDLTest_AssertCheck(test_double_isfinite(sum_squared_value), "Sum of squared target should be finite.");
SDLTest_AssertCheck(test_double_isfinite(sum_squared_error), "Sum of squared error should be finite.");
/* Infinity is theoretically possible when there is very little to no noise */
SDLTest_AssertCheck(!ISNAN(signal_to_noise), "Signal-to-noise ratio should not be NaN.");
SDLTest_AssertCheck(ISFINITE(max_error), "Maximum conversion error should be finite.");
SDLTest_AssertCheck(test_double_isfinite(max_error), "Maximum conversion error should be finite.");
SDLTest_AssertCheck(signal_to_noise >= spec->signal_to_noise, "Conversion signal-to-noise ratio %f dB should be no less than %f dB.",
signal_to_noise, spec->signal_to_noise);
SDLTest_AssertCheck(max_error <= spec->max_error, "Maximum conversion error %f should be no more than %f.",
@@ -1440,11 +1450,11 @@ static int SDLCALL audio_formatChange(void *arg)
}
signal_to_noise = 10 * SDL_log10(sum_squared_value / sum_squared_error); /* decibel */
SDLTest_AssertCheck(ISFINITE(sum_squared_value), "Sum of squared target should be finite.");
SDLTest_AssertCheck(ISFINITE(sum_squared_error), "Sum of squared error should be finite.");
SDLTest_AssertCheck(test_double_isfinite(sum_squared_value), "Sum of squared target should be finite.");
SDLTest_AssertCheck(test_double_isfinite(sum_squared_error), "Sum of squared error should be finite.");
/* Infinity is theoretically possible when there is very little to no noise */
SDLTest_AssertCheck(!ISNAN(signal_to_noise), "Signal-to-noise ratio should not be NaN.");
SDLTest_AssertCheck(ISFINITE(max_error), "Maximum conversion error should be finite.");
SDLTest_AssertCheck(test_double_isfinite(max_error), "Maximum conversion error should be finite.");
SDLTest_AssertCheck(signal_to_noise >= target_signal_to_noise, "Conversion signal-to-noise ratio %f dB should be no less than %f dB.",
signal_to_noise, target_signal_to_noise);
SDLTest_AssertCheck(max_error <= target_max_error, "Maximum conversion error %f should be no more than %f.",
+4 -1
View File
@@ -88,7 +88,10 @@ Uint32 FNVHash(Uint32* buf, int length) {
* Wraps the FNV-1a hash for an input surface's pixels
*/
Uint32 hashSurfacePixels(SDL_Surface * surface) {
Uint64 buffer_size = surface->w * surface->h;
int buffer_size = surface->w * surface->h;
if (buffer_size < 0) {
return 0;
}
return FNVHash(surface->pixels, buffer_size);
}
/* ================= Test Case Implementation ================== */
+28 -30
View File
@@ -412,7 +412,6 @@ static int SDLCALL clipboard_testClipboardTextFunctions(void *arg)
char *textRef = SDLTest_RandomAsciiString();
char *text = SDL_strdup(textRef);
bool boolResult;
int intResult;
char *charResult;
int last_clipboard_update_count;
@@ -420,11 +419,11 @@ static int SDLCALL clipboard_testClipboardTextFunctions(void *arg)
/* Empty clipboard text */
last_clipboard_update_count = clipboard_update_count;
intResult = SDL_SetClipboardText(NULL);
boolResult = SDL_SetClipboardText(NULL);
SDLTest_AssertCheck(
intResult == true,
"Verify result from SDL_SetClipboardText(NULL), expected true, got %i",
intResult);
boolResult == true,
"Verify result from SDL_SetClipboardText(NULL), expected true, got %s",
boolResult ? "true" : "false");
charResult = SDL_GetClipboardText();
SDLTest_AssertCheck(
charResult && SDL_strcmp(charResult, "") == 0,
@@ -435,7 +434,7 @@ static int SDLCALL clipboard_testClipboardTextFunctions(void *arg)
SDLTest_AssertCheck(
boolResult == false,
"Verify SDL_HasClipboardText returned false, got %s",
(boolResult) ? "true" : "false");
boolResult ? "true" : "false");
SDLTest_AssertCheck(
clipboard_update_count == last_clipboard_update_count + 1,
"Verify clipboard update count incremented by 1, got %d",
@@ -444,11 +443,11 @@ static int SDLCALL clipboard_testClipboardTextFunctions(void *arg)
/* Set clipboard text */
last_clipboard_update_count = clipboard_update_count;
intResult = SDL_SetClipboardText(text);
boolResult = SDL_SetClipboardText(text);
SDLTest_AssertCheck(
intResult == true,
"Verify result from SDL_SetClipboardText(%s), expected true, got %i", text,
intResult);
boolResult == true,
"Verify result from SDL_SetClipboardText(%s), expected true, got %s", text,
boolResult ? "true" : "false");
SDLTest_AssertCheck(
SDL_strcmp(textRef, text) == 0,
"Verify SDL_SetClipboardText did not modify input string, expected '%s', got '%s'",
@@ -457,7 +456,7 @@ static int SDLCALL clipboard_testClipboardTextFunctions(void *arg)
SDLTest_AssertCheck(
boolResult == true,
"Verify SDL_HasClipboardText returned true, got %s",
(boolResult) ? "true" : "false");
boolResult ? "true" : "false");
charResult = SDL_GetClipboardText();
SDLTest_AssertCheck(
charResult && SDL_strcmp(textRef, charResult) == 0,
@@ -470,11 +469,11 @@ static int SDLCALL clipboard_testClipboardTextFunctions(void *arg)
clipboard_update_count - last_clipboard_update_count);
/* Reset clipboard text */
intResult = SDL_SetClipboardText(NULL);
boolResult = SDL_SetClipboardText(NULL);
SDLTest_AssertCheck(
intResult == true,
"Verify result from SDL_SetClipboardText(NULL), expected true, got %i",
intResult);
boolResult == true,
"Verify result from SDL_SetClipboardText(NULL), expected true, got %s",
boolResult ? "true" : "false");
/* Cleanup */
SDL_free(textRef);
@@ -496,7 +495,6 @@ static int SDLCALL clipboard_testPrimarySelectionTextFunctions(void *arg)
char *textRef = SDLTest_RandomAsciiString();
char *text = SDL_strdup(textRef);
bool boolResult;
int intResult;
char *charResult;
int last_clipboard_update_count;
@@ -504,11 +502,11 @@ static int SDLCALL clipboard_testPrimarySelectionTextFunctions(void *arg)
/* Empty primary selection */
last_clipboard_update_count = clipboard_update_count;
intResult = SDL_SetPrimarySelectionText(NULL);
boolResult = SDL_SetPrimarySelectionText(NULL);
SDLTest_AssertCheck(
intResult == true,
"Verify result from SDL_SetPrimarySelectionText(NULL), expected true, got %i",
intResult);
boolResult == true,
"Verify result from SDL_SetPrimarySelectionText(NULL), expected true, got %s",
boolResult ? "true" : "false");
charResult = SDL_GetPrimarySelectionText();
SDLTest_AssertCheck(
charResult && SDL_strcmp(charResult, "") == 0,
@@ -519,7 +517,7 @@ static int SDLCALL clipboard_testPrimarySelectionTextFunctions(void *arg)
SDLTest_AssertCheck(
boolResult == false,
"Verify SDL_HasPrimarySelectionText returned false, got %s",
(boolResult) ? "true" : "false");
boolResult ? "true" : "false");
SDLTest_AssertCheck(
clipboard_update_count == last_clipboard_update_count + 1,
"Verify clipboard update count incremented by 1, got %d",
@@ -527,11 +525,11 @@ static int SDLCALL clipboard_testPrimarySelectionTextFunctions(void *arg)
/* Set primary selection */
last_clipboard_update_count = clipboard_update_count;
intResult = SDL_SetPrimarySelectionText(text);
boolResult = SDL_SetPrimarySelectionText(text);
SDLTest_AssertCheck(
intResult == true,
"Verify result from SDL_SetPrimarySelectionText(%s), expected true, got %i", text,
intResult);
boolResult == true,
"Verify result from SDL_SetPrimarySelectionText(%s), expected true, got %s", text,
boolResult ? "true" : "false");
SDLTest_AssertCheck(
SDL_strcmp(textRef, text) == 0,
"Verify SDL_SetPrimarySelectionText did not modify input string, expected '%s', got '%s'",
@@ -540,7 +538,7 @@ static int SDLCALL clipboard_testPrimarySelectionTextFunctions(void *arg)
SDLTest_AssertCheck(
boolResult == true,
"Verify SDL_HasPrimarySelectionText returned true, got %s",
(boolResult) ? "true" : "false");
boolResult ? "true" : "false");
charResult = SDL_GetPrimarySelectionText();
SDLTest_AssertCheck(
charResult && SDL_strcmp(textRef, charResult) == 0,
@@ -553,11 +551,11 @@ static int SDLCALL clipboard_testPrimarySelectionTextFunctions(void *arg)
clipboard_update_count - last_clipboard_update_count);
/* Reset primary selection */
intResult = SDL_SetPrimarySelectionText(NULL);
boolResult = SDL_SetPrimarySelectionText(NULL);
SDLTest_AssertCheck(
intResult == true,
"Verify result from SDL_SetPrimarySelectionText(NULL), expected true, got %i",
intResult);
boolResult == true,
"Verify result from SDL_SetPrimarySelectionText(NULL), expected true, got %s",
boolResult ? "true" : "false");
/* Cleanup */
SDL_free(textRef);
+4
View File
@@ -230,6 +230,7 @@ static int SDLCALL IncrementCounterThread(void *userdata)
SDL_Event event;
SDL_assert(!SDL_IsMainThread());
SDL_zero(event);
if (data->delay > 0) {
SDL_Delay(data->delay);
@@ -286,6 +287,9 @@ static int SDLCALL events_mainThreadCallbacks(void *arg)
SDL_WaitThread(thread, NULL);
SDLTest_AssertCheck(data.counter == 3, "Incremented counter on main thread, expected 3, got %d", data.counter);
/* Flush events again, as the previous SDL_WaitEvent() call may have pumped OS events and added them to the queue */
SDL_FlushEvents(SDL_EVENT_FIRST, SDL_EVENT_LAST);
/* Try again, but this time delay the calls until we've started waiting for events */
data.delay = 100;
thread = SDL_CreateThread(IncrementCounterThread, NULL, &data);
+87 -37
View File
@@ -69,9 +69,19 @@ static int SDLCALL hints_getHint(void *arg)
return TEST_COMPLETED;
}
typedef struct {
char *name;
char *value;
char *oldValue;
} HintCallbackContext;
static void SDLCALL hints_testHintChanged(void *userdata, const char *name, const char *oldValue, const char *hint)
{
*(char **)userdata = hint ? SDL_strdup(hint) : NULL;
HintCallbackContext *context = userdata;
context->name = name ? SDL_strdup(name) : NULL;
context->value = hint ? SDL_strdup(hint) : NULL;
context->oldValue = oldValue ? SDL_strdup(oldValue) : NULL;
}
/**
@@ -83,7 +93,7 @@ static int SDLCALL hints_setHint(void *arg)
const char *originalValue;
char *value;
const char *testValue;
char *callbackValue;
HintCallbackContext callback_data;
bool result;
int i, j;
@@ -133,8 +143,10 @@ static int SDLCALL hints_setHint(void *arg)
SDLTest_AssertPass("Call to SDL_GetHint() after saving and restoring hint");
originalValue = SDL_GetHint(testHint);
value = (originalValue == NULL) ? NULL : SDL_strdup(originalValue);
SDL_SetHint(testHint, "temp");
SDL_SetHint(testHint, value);
result = SDL_SetHint(testHint, "temp");
SDLTest_AssertCheck(!result, "SDL_SetHint(\"%s\", \"temp\") should return false", testHint);
result = SDL_SetHint(testHint, value);
SDLTest_AssertCheck(!result, "SDL_SetHint(\"%s\", \"%s\" should return false", testHint, value);
SDL_free(value);
testValue = SDL_GetHint(testHint);
SDLTest_AssertCheck(
@@ -143,7 +155,8 @@ static int SDLCALL hints_setHint(void *arg)
testValue);
SDLTest_AssertPass("Call to SDL_SetHintWithPriority(NULL, SDL_HINT_DEFAULT)");
SDL_SetHintWithPriority(testHint, NULL, SDL_HINT_DEFAULT);
result = SDL_SetHintWithPriority(testHint, NULL, SDL_HINT_DEFAULT);
SDLTest_AssertCheck(!result, "SDL_SetHintWithPriority(\"%s\", NULL, SDL_HINT_DEFAULT) should return false", testHint);
testValue = SDL_GetHint(testHint);
SDLTest_AssertCheck(
testValue && SDL_strcmp(testValue, "original") == 0,
@@ -151,7 +164,8 @@ static int SDLCALL hints_setHint(void *arg)
testValue);
SDLTest_AssertPass("Call to SDL_SetHintWithPriority(\"temp\", SDL_HINT_OVERRIDE)");
SDL_SetHintWithPriority(testHint, "temp", SDL_HINT_OVERRIDE);
result = SDL_SetHintWithPriority(testHint, "temp", SDL_HINT_OVERRIDE);
SDLTest_AssertCheck(result, "SDL_SetHintWithPriority(\"%s\", \"temp\", SDL_HINT_OVERRIDE) should return true", testHint);
testValue = SDL_GetHint(testHint);
SDLTest_AssertCheck(
testValue && SDL_strcmp(testValue, "temp") == 0,
@@ -159,7 +173,8 @@ static int SDLCALL hints_setHint(void *arg)
testValue);
SDLTest_AssertPass("Call to SDL_SetHintWithPriority(NULL, SDL_HINT_OVERRIDE)");
SDL_SetHintWithPriority(testHint, NULL, SDL_HINT_OVERRIDE);
result = SDL_SetHintWithPriority(testHint, NULL, SDL_HINT_OVERRIDE);
SDLTest_AssertCheck(result, "SDL_SetHintWithPriority(\"%s\", NULL, SDL_HINT_OVERRIDE) should return true", testHint);
testValue = SDL_GetHint(testHint);
SDLTest_AssertCheck(
testValue == NULL,
@@ -175,50 +190,83 @@ static int SDLCALL hints_setHint(void *arg)
testValue);
/* Make sure callback functionality works past a reset */
SDL_zero(callback_data);
SDLTest_AssertPass("Call to SDL_AddHintCallback()");
callbackValue = NULL;
SDL_AddHintCallback(testHint, hints_testHintChanged, &callbackValue);
SDL_AddHintCallback(testHint, hints_testHintChanged, &callback_data);
SDLTest_AssertCheck(
callbackValue && SDL_strcmp(callbackValue, "original") == 0,
"callbackValue = %s, expected \"original\"",
callbackValue);
SDL_free(callbackValue);
SDLTest_AssertPass("Call to SDL_SetHintWithPriority(\"temp\", SDL_HINT_OVERRIDE), using callback");
callbackValue = NULL;
SDL_SetHintWithPriority(testHint, "temp", SDL_HINT_OVERRIDE);
callback_data.name && SDL_strcmp(callback_data.name, testHint) == 0,
"callback_data.name = \"%s\", expected \"%s\"",
callback_data.name, testHint);
SDLTest_AssertCheck(
callbackValue && SDL_strcmp(callbackValue, "temp") == 0,
"callbackValue = %s, expected \"temp\"",
callbackValue);
SDL_free(callbackValue);
callback_data.value && SDL_strcmp(callback_data.value, "original") == 0,
"callback_data.value = \"%s\", expected \"%s\"",
callback_data.value, "original");
SDL_free(callback_data.name);
SDL_free(callback_data.value);
SDL_free(callback_data.oldValue);
SDL_zero(callback_data);
SDLTest_AssertPass("Call to SDL_ResetHint(), using callback");
callbackValue = NULL;
SDL_ResetHint(testHint);
SDLTest_AssertCheck(
callbackValue && SDL_strcmp(callbackValue, "original") == 0,
callback_data.value && SDL_strcmp(callback_data.value, "original") == 0,
"callbackValue = %s, expected \"original\"",
callbackValue);
SDL_free(callbackValue);
callback_data.value);
SDL_free(callback_data.name);
SDL_free(callback_data.value);
SDL_free(callback_data.oldValue);
SDL_zero(callback_data);
SDLTest_AssertPass("Call to SDL_SetHintWithPriority(\"temp\", SDL_HINT_OVERRIDE), using callback after reset");
callbackValue = NULL;
SDL_SetHintWithPriority(testHint, "temp", SDL_HINT_OVERRIDE);
result = SDL_SetHintWithPriority(testHint, "temp", SDL_HINT_OVERRIDE);
SDLTest_AssertCheck(result, "SDL_SetHintWithPriority(\"%s\", \"temp\", SDL_HINT_OVERRIDE) should return true", testHint);
SDLTest_AssertCheck(
callbackValue && SDL_strcmp(callbackValue, "temp") == 0,
callback_data.value && SDL_strcmp(callback_data.value, "temp") == 0,
"callbackValue = %s, expected \"temp\"",
callbackValue);
SDL_free(callbackValue);
callback_data.value);
SDL_free(callback_data.name);
SDL_free(callback_data.value);
SDL_free(callback_data.oldValue);
SDL_zero(callback_data);
SDLTest_AssertPass("Call to SDL_ResetHint(), after clearing callback");
callbackValue = NULL;
SDL_RemoveHintCallback(testHint, hints_testHintChanged, &callbackValue);
SDL_RemoveHintCallback(testHint, hints_testHintChanged, &callback_data);
SDL_ResetHint(testHint);
SDLTest_AssertCheck(
callbackValue == NULL,
!callback_data.value,
"callbackValue = %s, expected \"(null)\"",
callbackValue);
callback_data.value);
SDL_free(callback_data.name);
SDL_free(callback_data.value);
SDL_free(callback_data.oldValue);
SDL_zero(callback_data);
/* Make sure callback functionality work with hint renamed in sdl3 */
SDLTest_AssertPass("Call to SDL_AddHintCallback()");
SDL_AddHintCallback(SDL_HINT_WINDOW_ALLOW_TOPMOST, hints_testHintChanged, &callback_data);
SDLTest_AssertPass("Call to SDL_SetHintWithPriority(\"temp\", SDL_HINT_OVERRIDE), using callback");
SDLTest_AssertCheck(callback_data.name && SDL_strcmp(callback_data.name, SDL_HINT_WINDOW_ALLOW_TOPMOST) == 0, "callback was called with name \"%s\" (expected \"%s\")", callback_data.name, SDL_HINT_WINDOW_ALLOW_TOPMOST);
SDLTest_AssertCheck(!callback_data.value, "callback was called with null value, was %s", callback_data.value);
SDLTest_AssertCheck(!callback_data.oldValue, "callback was called with null oldvalue, was %s", callback_data.oldValue);
SDL_free(callback_data.name);
SDL_free(callback_data.value);
SDL_free(callback_data.oldValue);
SDL_zero(callback_data);
result = SDL_SetHintWithPriority(SDL_HINT_WINDOW_ALLOW_TOPMOST, "temp", SDL_HINT_OVERRIDE);
SDLTest_AssertCheck(result, "SDL_SetHintWithPriority(\"%s\", \"temp\", SDL_HINT_OVERRIDE) should return true", testHint);
SDLTest_AssertCheck(
callback_data.name && SDL_strcmp(callback_data.name, SDL_HINT_WINDOW_ALLOW_TOPMOST) == 0,
"callback_data.name = \"%s\", expected \"%s\"",
callback_data.name, SDL_HINT_WINDOW_ALLOW_TOPMOST);
SDLTest_AssertCheck(
callback_data.value && SDL_strcmp(callback_data.value, "temp") == 0,
"callback_data.value = \"%s\", expected \"%s\"",
callback_data.value, "temp");
SDL_free(callback_data.name);
SDL_free(callback_data.value);
SDL_free(callback_data.oldValue);
SDL_zero(callback_data);
SDL_ResetHint(testHint);
return TEST_COMPLETED;
}
@@ -226,17 +274,19 @@ static int SDLCALL hints_setHint(void *arg)
/* ================= Test References ================== */
/* Hints test cases */
static const SDLTest_TestCaseReference hintsTest1 = {
static const SDLTest_TestCaseReference hintsGetHint = {
hints_getHint, "hints_getHint", "Call to SDL_GetHint", TEST_ENABLED
};
static const SDLTest_TestCaseReference hintsTest2 = {
static const SDLTest_TestCaseReference hintsSetHint = {
hints_setHint, "hints_setHint", "Call to SDL_SetHint", TEST_ENABLED
};
/* Sequence of Hints test cases */
static const SDLTest_TestCaseReference *hintsTests[] = {
&hintsTest1, &hintsTest2, NULL
&hintsGetHint,
&hintsSetHint,
NULL
};
/* Hints test suite (global) */
+436 -1
View File
@@ -1,5 +1,5 @@
/*
Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
Copyright (C) 1997-2026 Sam Lantinga <slouken@libsdl.org>
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -1501,6 +1501,441 @@ SDL_Surface *SDLTest_ImageBlitColor(void)
return surface;
}
static const SDLTest_SurfaceImage_t SDLTest_imageClampedSprite = {
80,
60,
3,
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377"
"\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377"
"\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0"
"\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0"
"\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377"
"\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377"
"\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0"
"\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377"
"\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377"
"\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0"
"\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377"
"\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377"
"\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377"
"\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0"
"\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377"
"\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377"
"\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0"
"\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377"
"\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377"
"\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377"
"\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0"
"\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377"
"\377\0\377\377\0\377\377\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\377"
"\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377"
"\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0"
"\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377"
"\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0"
"\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377"
"\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0"
"\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0"
"\0\0\0\377\377\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377"
"\0\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0\377\377\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\0\377\377\0"
"\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\377\377\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
};
/**
* \brief Returns the clamped rendering sprite test image as an SDL_Surface.
*/
SDL_Surface *SDLTest_ImageClampedSprite(void)
{
SDL_Surface *surface = SDL_CreateSurfaceFrom(
SDLTest_imageClampedSprite.width,
SDLTest_imageClampedSprite.height,
SDL_PIXELFORMAT_RGB24,
(void *)SDLTest_imageClampedSprite.pixel_data,
SDLTest_imageClampedSprite.width * SDLTest_imageClampedSprite.bytes_per_pixel);
return surface;
}
/* GIMP RGBA C-Source image dump (face.c) */
static const SDLTest_SurfaceImage_t SDLTest_imageFace = {

Some files were not shown because too many files have changed in this diff Show More