diff --git a/CMakeLists.txt b/CMakeLists.txt index da36636..3a908f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -197,6 +197,8 @@ if(NOT MSVC) check_and_add_flag(LOGICAL_OP -Wlogical-op) check_and_add_flag(SHADOW -Wshadow) check_and_add_flag(INIT_SELF -Winit-self) + check_and_add_flag(MISSING_DECLARATIONS -Wmissing-declarations) + check_and_add_flag(MISSING_VARIABLE_DECLARATIONS -Wmissing-variable-declarations) endif(NOT MSVC) # gcc uses some optimizations which might break stuff without this flag @@ -267,10 +269,6 @@ if(APPLE) # page on x86_64 is 4GB in size. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-pagezero_size,0x1000") - if(NOT DISABLE_WX) - add_definitions(-DUSE_WX -DHAVE_WX) - set(USE_WX TRUE) - endif() find_library(APPKIT_LIBRARY AppKit) find_library(APPSERV_LIBRARY ApplicationServices) find_library(ATB_LIBRARY AudioToolbox) @@ -683,10 +681,8 @@ if(NOT DISABLE_WX AND NOT ANDROID) ERROR_QUIET ) message("Found wxWidgets version ${wxWidgets_VERSION}") - if(UNIX AND NOT APPLE) - set(wxMIN_VERSION "2.9.3") - else() - set(wxMIN_VERSION "2.9.4") + if(UNIX) + set(wxMIN_VERSION "3.0.0") endif() if(${wxWidgets_VERSION} VERSION_LESS ${wxMIN_VERSION}) message("At least ${wxMIN_VERSION} is required; ignoring found version") diff --git a/CMakeTests/CheckLib.cmake b/CMakeTests/CheckLib.cmake index 7b2525a..aa8b95b 100644 --- a/CMakeTests/CheckLib.cmake +++ b/CMakeTests/CheckLib.cmake @@ -55,17 +55,17 @@ endmacro() macro(check_libav) if(PKG_CONFIG_FOUND) - pkg_check_modules(LIBAV libavcodec>=53.35.0 libavformat>=53.21.0 - libswscale>=2.1.0 libavutil>=51.22.1) + pkg_check_modules(LIBAV libavcodec>=54.35.0 libavformat>=54.20.4 + libswscale>=2.1.1 libavutil>=52.3.0) else() - message("pkg-config is required to check for libav") + message("pkg-config is required to check for libav/ffmpeg") endif() if(LIBAV_FOUND) - message("libav found, enabling AVI frame dumps") + message("libav/ffmpeg found, enabling AVI frame dumps") add_definitions(-DHAVE_LIBAV) include_directories(${LIBAV_INCLUDE_DIRS}) else() - message("libav not found, disabling AVI frame dumps") + message("libav/ffmpeg not found, disabling AVI frame dumps") endif() endmacro() diff --git a/Contributing.md b/Contributing.md new file mode 100644 index 0000000..af2025c --- /dev/null +++ b/Contributing.md @@ -0,0 +1,221 @@ +# Dolphin Code Styling + +## Table of Contents +--- + +- [Introduction] (#introduction) +- [Styling and formatting] (#styling-and-formatting) + - [General] (#general) + - [Naming] (#naming) + - [Conditionals] (#conditionals) + - [Classes and Structs] (#classes-and-structs) +- [Code specific] (#code-specific) + - [General] (#general-1) + - [Headers] (#headers) + - [Loops] (#loops) + - [Functions] (#functions) + - [Classes and Structs] (#classes-and-structs-1) + + +## Introduction +--- + +This guide is for developers who wish to contribute to the Dolphin codebase. It will detail how to properly style and format code to fit this project. This guide also offers suggestions on specific functions and other varia that may be used in code. + +Following this guide and formatting your code as detailed will likely get your pull request merged much faster than if you don't (assuming the written code has no mistakes in itself). + +## Styling and formatting +--- + +### General +- Try to limit lines of code to a maximum of 100 characters. + - Note that this does not mean you should try and use all 100 characters every time you have the chance. Typically with well formatted code, you normally shouldn't hit a line count of anything over 80 or 90 characters. +- The indentation style we use is tabs for initial indentation and then, if vertical alignment is needed, spaces are to be used. +- The opening brace for namespaces, classes, functions, enums, structs, unions, conditionals, and loops go on the next line. + - With array initializer lists and lambda expressions it is OK to keep the brace on the same line. +- References and pointers have the ampersand or asterisk against the type name, not the variable name. Example: `int* var`, not `int *var`. +- Don't collapse single line conditional or loop bodies onto the same line as its header. Put it on the next line. + - Yes: + + ```c++ + if (condition) + return 0; + + while (var != 0) + var--; + ``` + - No: + + ```c++ + if (condition) return 0; + + while (var != 0) var--; + ``` + +### Naming +- All class, enum, function, and struct names should be in upper CamelCase. If the name contains an abbreviation uppercase it. + - `class SomeClassName` + - `enum IPCCommandType` +- All compile time constants should be fully uppercased. With constants that have more than one word in them, use an underscore to separate them. + - `const int PI = 3.14159;` + - `const int MAX_PATH = 260;` +- All variables should be lowercase with underscores separating the individual words in the name. + - `int this_variable_name;` +- Please do not use [Hungarian notation](http://en.wikipedia.org/wiki/Hungarian_notation) prefixes with variables. The only exceptions to this are the variable prefixes below. + - Global variables – `g_` + - Class variables – `m_` + - Static variables – `s_` + +### Conditionals +- Do not leave `else` or `else if` conditions dangling unless the `if` condition lacks braces. + - Yes: + + ```c++ + if (condition) + { + // code + } + else + { + // code + } + ``` + - Acceptable: + + ```c++ + if (condition) + // code line + else + // code line + ``` + - No: + + ```c++ + if (condition) + { + // code + } + else + // code line + ``` + + +### Classes and Structs +- If making a [POD](http://en.wikipedia.org/wiki/Plain_Old_Data_Structures) type, use a `struct` for this. Use a `class` otherwise. +- Class layout should be in the order, `public`, `protected`, and then `private`. + - If one or more of these sections are not needed, then simply don't include them. +- For each of the above specified access levels, the contents of each should follow this given order: constructor, destructor, operator overloads, functions, then variables. +- When defining the variables, define `static` variables before the non-static ones. + +```c++ +class ExampleClass : public SomeParent +{ +public: + ExampleClass(int x, int y); + + int GetX() const; + int GetY() const; + +protected: + virtual void SomeProtectedFunction() = 0; + static float s_some_variable; + +private: + int m_x; + int m_y; +}; +``` + +## Code Specific +--- + +### General +- Using C++11 features is OK and recommended. +- Use the [nullptr](http://en.cppreference.com/w/cpp/language/nullptr) type over the macro `NULL`. +- If a [range-based for loop](http://en.cppreference.com/w/cpp/language/range-for) can be used instead of container iterators, use it. +- Obviously, try not to use `goto` unless you have a *really* good reason for it. +- If a compiler warning is found, please try and fix it. +- Try to avoid using raw pointers (pointers allocated with `new`) as much as possible. There are cases where using a raw pointer is unavoidable, and in these situations it is OK to use them. An example of this is functions from a C library that require them. In cases where it is avoidable, the STL usually has a means to solve this (`vector`, `unique_ptr`, etc). +- Do not use the `auto` keyword everywhere. While it's nice that the type can be determined by the compiler, it cannot be resolved at 'readtime' by the developer as easily. Use auto only in cases where it is obvious what the type being assigned is (note: 'obvious' means not having to open other files or reading the header file). Some situations where it is appropriate to use `auto` is when iterating over a `std::map` container in a foreach loop, or to shorten the length of container iterator variable declarations. +- Do not use `using namespace [x];` in headers. Try not to use it at all if you can. +- The preferred form of the increment and decrement operator is prefix (e.g. `++var`). + +### Headers +- If a header is not necessary in a certain source file, remove them. +- If you find duplicate includes of a certain header, remove it. +- When declaring includes in a source file, make sure they follow the given pattern: + - Standard library headers + - System-specific headers (these should also likely be in an `#ifdef` block unless the source file itself is system-specific). + - Dolphin source file headers +- Each of the above header sections should also be in alphabetical order +- Project source file headers should be included in a way that is relative to the `[Dolphin Root]/Source/Core` directory. +- This project uses `#pragma once` as header guards. + +### Loops +- If an infinite loop is required, do not use `for (;;)`, use `while (true)`. +- Empty-bodied loops should use braces after their header, not a semicolon. + - Yes: `while (condition) {}` + - No: `while (condition);` + +### Functions +- If a function parameter is a pointer or reference and its value or data isn't intended to be changed, please mark that parameter as `const`. +- Functions that specifically modify their parameters should have the respective parameter(s) marked as a pointer so that the variables being modified are syntaxically obvious. + - What not to do: + + ```c++ + template + inline void Clamp(T& val, const T& min, const T& max) + { + if (val < min) + val = min; + else if (val > max) + val = max; + } + ``` + + Example call: `Clamp(var, 1000, 5000);` + + - What to do: + + ```c++ + template + inline void Clamp(T* val, const T& min, const T& max) + { + if (*val < min) + *val = min; + else if (*val > max) + *val = max; + } + ``` + + Example call: `Clamp(&var, 1000, 5000);` + +- Class member functions that you do not want to be overridden in inheriting classes should be marked with the `final` specifier. + + ```c++ + class ClassName : ParentClass + { + public: + void Update() final; + }; + ``` + +- Overridden member functions that can also be inherited should be marked with the `override` specifier to make it easier to see which functions belong to the parent class. + + ```c++ + class ClassName : ParentClass + { + public: + void Update() override; + }; + ``` + +### Classes and Structs +- Classes and structs that are not intended to be extended through inheritance should be marked with the `final` specifier. + + ```c++ + class ClassName final : ParentClass + { + // Class definitions + }; + ``` diff --git a/Data/Sys/GameSettings/NAKP01.ini b/Data/Sys/GameSettings/NAKP01.ini index ca7be8e..f17eebd 100644 --- a/Data/Sys/GameSettings/NAKP01.ini +++ b/Data/Sys/GameSettings/NAKP01.ini @@ -16,4 +16,6 @@ EmulationIssues = Controlls won't work in-game [ActionReplay] # Add action replay cheats here. - +[Video_Hacks] +EFBToTextureEnable = False +EFBCopyEnable = True diff --git a/Data/Sys/Shaders/16bit.glsl b/Data/Sys/Shaders/16bit.glsl index f7d8170..edff1d5 100644 --- a/Data/Sys/Shaders/16bit.glsl +++ b/Data/Sys/Shaders/16bit.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/32bit.glsl b/Data/Sys/Shaders/32bit.glsl index 1a9594f..ed8fb89 100644 --- a/Data/Sys/Shaders/32bit.glsl +++ b/Data/Sys/Shaders/32bit.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/FXAA.glsl b/Data/Sys/Shaders/FXAA.glsl index afcbe5e..60d072c 100644 --- a/Data/Sys/Shaders/FXAA.glsl +++ b/Data/Sys/Shaders/FXAA.glsl @@ -12,7 +12,7 @@ // 0. You just DO WHAT THE FUCK YOU WANT TO. -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/README.txt b/Data/Sys/Shaders/README.txt index 6913f9d..acb7d22 100644 --- a/Data/Sys/Shaders/README.txt +++ b/Data/Sys/Shaders/README.txt @@ -1,5 +1,5 @@ //dummy shader: -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; @@ -15,4 +15,4 @@ For best results, turn Wordwrap formatting on... The shaders shown in the dropdown box in the video plugin configuration window are kept in the directory named User/Data/Shaders. They are linked in to the dolphin source from the repository at . See for more details on the way shaders work. This file will hopefully hold more content in future... -*/ \ No newline at end of file +*/ diff --git a/Data/Sys/Shaders/acidmetal.glsl b/Data/Sys/Shaders/acidmetal.glsl index b34626b..6e976f0 100644 --- a/Data/Sys/Shaders/acidmetal.glsl +++ b/Data/Sys/Shaders/acidmetal.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/acidtrip.glsl b/Data/Sys/Shaders/acidtrip.glsl index ff40955..172e281 100644 --- a/Data/Sys/Shaders/acidtrip.glsl +++ b/Data/Sys/Shaders/acidtrip.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/acidtrip2.glsl b/Data/Sys/Shaders/acidtrip2.glsl index 0fbc3d5..332de03 100644 --- a/Data/Sys/Shaders/acidtrip2.glsl +++ b/Data/Sys/Shaders/acidtrip2.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/asciiart.glsl b/Data/Sys/Shaders/asciiart.glsl index f9f5ab7..089d216 100644 --- a/Data/Sys/Shaders/asciiart.glsl +++ b/Data/Sys/Shaders/asciiart.glsl @@ -1,6 +1,6 @@ // textures -uniform sampler2D samp8; -uniform sampler2D samp9; +SAMPLER_BINDING(8) uniform sampler2D samp8; +SAMPLER_BINDING(9) uniform sampler2D samp9; const int char_width = 8; const int char_height = 13; diff --git a/Data/Sys/Shaders/auto_toon.glsl b/Data/Sys/Shaders/auto_toon.glsl index a4efa84..8046ae2 100644 --- a/Data/Sys/Shaders/auto_toon.glsl +++ b/Data/Sys/Shaders/auto_toon.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/auto_toon2.glsl b/Data/Sys/Shaders/auto_toon2.glsl index b2abceb..574cce8 100644 --- a/Data/Sys/Shaders/auto_toon2.glsl +++ b/Data/Sys/Shaders/auto_toon2.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/bad_bloom.glsl b/Data/Sys/Shaders/bad_bloom.glsl index 4e0c96a..2aa2ff9 100644 --- a/Data/Sys/Shaders/bad_bloom.glsl +++ b/Data/Sys/Shaders/bad_bloom.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/brighten.glsl b/Data/Sys/Shaders/brighten.glsl index 41cdd55..75f3b68 100644 --- a/Data/Sys/Shaders/brighten.glsl +++ b/Data/Sys/Shaders/brighten.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/chrismas.glsl b/Data/Sys/Shaders/chrismas.glsl index c01536a..158cf67 100644 --- a/Data/Sys/Shaders/chrismas.glsl +++ b/Data/Sys/Shaders/chrismas.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/cool1.glsl b/Data/Sys/Shaders/cool1.glsl index 6c1b7d5..ef16147 100644 --- a/Data/Sys/Shaders/cool1.glsl +++ b/Data/Sys/Shaders/cool1.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/darkerbrighter.glsl b/Data/Sys/Shaders/darkerbrighter.glsl index 291ede4..3c6045a 100644 --- a/Data/Sys/Shaders/darkerbrighter.glsl +++ b/Data/Sys/Shaders/darkerbrighter.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/emboss.glsl b/Data/Sys/Shaders/emboss.glsl index 7b9b221..325c4cd 100644 --- a/Data/Sys/Shaders/emboss.glsl +++ b/Data/Sys/Shaders/emboss.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/fire.glsl b/Data/Sys/Shaders/fire.glsl index 106a4ef..ea2595b 100644 --- a/Data/Sys/Shaders/fire.glsl +++ b/Data/Sys/Shaders/fire.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/fire2.glsl b/Data/Sys/Shaders/fire2.glsl index f8f7e7a..2ca04ec 100644 --- a/Data/Sys/Shaders/fire2.glsl +++ b/Data/Sys/Shaders/fire2.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/firewater.glsl b/Data/Sys/Shaders/firewater.glsl index b21e9db..20cf927 100644 --- a/Data/Sys/Shaders/firewater.glsl +++ b/Data/Sys/Shaders/firewater.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/grayscale.glsl b/Data/Sys/Shaders/grayscale.glsl index 7a828f0..1c3658f 100644 --- a/Data/Sys/Shaders/grayscale.glsl +++ b/Data/Sys/Shaders/grayscale.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/grayscale2.glsl b/Data/Sys/Shaders/grayscale2.glsl index d9ef25a..7e8f09e 100644 --- a/Data/Sys/Shaders/grayscale2.glsl +++ b/Data/Sys/Shaders/grayscale2.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/invert.glsl b/Data/Sys/Shaders/invert.glsl index 67c5dee..01e840c 100644 --- a/Data/Sys/Shaders/invert.glsl +++ b/Data/Sys/Shaders/invert.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/invert_blue.glsl b/Data/Sys/Shaders/invert_blue.glsl index aa4eeea..081027f 100644 --- a/Data/Sys/Shaders/invert_blue.glsl +++ b/Data/Sys/Shaders/invert_blue.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/invertedoutline.glsl b/Data/Sys/Shaders/invertedoutline.glsl index 70363dd..b5b2973 100644 --- a/Data/Sys/Shaders/invertedoutline.glsl +++ b/Data/Sys/Shaders/invertedoutline.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/mad_world.glsl b/Data/Sys/Shaders/mad_world.glsl index 63e46ec..1aff522 100644 --- a/Data/Sys/Shaders/mad_world.glsl +++ b/Data/Sys/Shaders/mad_world.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/nightvision.glsl b/Data/Sys/Shaders/nightvision.glsl index 42f0fe4..0756b81 100644 --- a/Data/Sys/Shaders/nightvision.glsl +++ b/Data/Sys/Shaders/nightvision.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/nightvision2.glsl b/Data/Sys/Shaders/nightvision2.glsl index 3f5910c..cec3e82 100644 --- a/Data/Sys/Shaders/nightvision2.glsl +++ b/Data/Sys/Shaders/nightvision2.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/nightvision2scanlines.glsl b/Data/Sys/Shaders/nightvision2scanlines.glsl index f0b6368..7006429 100644 --- a/Data/Sys/Shaders/nightvision2scanlines.glsl +++ b/Data/Sys/Shaders/nightvision2scanlines.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/posterize.glsl b/Data/Sys/Shaders/posterize.glsl index f095630..6b41c83 100644 --- a/Data/Sys/Shaders/posterize.glsl +++ b/Data/Sys/Shaders/posterize.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/posterize2.glsl b/Data/Sys/Shaders/posterize2.glsl index b2c4753..782bf32 100644 --- a/Data/Sys/Shaders/posterize2.glsl +++ b/Data/Sys/Shaders/posterize2.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/primarycolors.glsl b/Data/Sys/Shaders/primarycolors.glsl index 29ae0ac..ee62fc4 100644 --- a/Data/Sys/Shaders/primarycolors.glsl +++ b/Data/Sys/Shaders/primarycolors.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/sepia.glsl b/Data/Sys/Shaders/sepia.glsl index 83ac0b1..77d2414 100644 --- a/Data/Sys/Shaders/sepia.glsl +++ b/Data/Sys/Shaders/sepia.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/sketchy.glsl b/Data/Sys/Shaders/sketchy.glsl index a91e404..024593f 100644 --- a/Data/Sys/Shaders/sketchy.glsl +++ b/Data/Sys/Shaders/sketchy.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/spookey1.glsl b/Data/Sys/Shaders/spookey1.glsl index 6a25d57..249e2d0 100644 --- a/Data/Sys/Shaders/spookey1.glsl +++ b/Data/Sys/Shaders/spookey1.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/spookey2.glsl b/Data/Sys/Shaders/spookey2.glsl index 9a56bd2..34299cc 100644 --- a/Data/Sys/Shaders/spookey2.glsl +++ b/Data/Sys/Shaders/spookey2.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/stereoscopic.glsl b/Data/Sys/Shaders/stereoscopic.glsl index f37a246..7c97313 100644 --- a/Data/Sys/Shaders/stereoscopic.glsl +++ b/Data/Sys/Shaders/stereoscopic.glsl @@ -1,7 +1,7 @@ // Omega's 3D Stereoscopic filtering // TODO: Need depth info! -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/stereoscopic2.glsl b/Data/Sys/Shaders/stereoscopic2.glsl index f7370c7..4fb8f5d 100644 --- a/Data/Sys/Shaders/stereoscopic2.glsl +++ b/Data/Sys/Shaders/stereoscopic2.glsl @@ -1,7 +1,7 @@ // Omega's 3D Stereoscopic filtering (Amber/Blue) // TODO: Need depth info! -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/sunset.glsl b/Data/Sys/Shaders/sunset.glsl index 33201cf..b2a793c 100644 --- a/Data/Sys/Shaders/sunset.glsl +++ b/Data/Sys/Shaders/sunset.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/swap_RGB_BGR.glsl b/Data/Sys/Shaders/swap_RGB_BGR.glsl index 0114117..69c8461 100644 --- a/Data/Sys/Shaders/swap_RGB_BGR.glsl +++ b/Data/Sys/Shaders/swap_RGB_BGR.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/swap_RGB_BRG.glsl b/Data/Sys/Shaders/swap_RGB_BRG.glsl index 82fe665..a9ec859 100644 --- a/Data/Sys/Shaders/swap_RGB_BRG.glsl +++ b/Data/Sys/Shaders/swap_RGB_BRG.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/swap_RGB_GBR.glsl b/Data/Sys/Shaders/swap_RGB_GBR.glsl index 5884ccd..bde5b51 100644 --- a/Data/Sys/Shaders/swap_RGB_GBR.glsl +++ b/Data/Sys/Shaders/swap_RGB_GBR.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/swap_RGB_GRB.glsl b/Data/Sys/Shaders/swap_RGB_GRB.glsl index 26a4c14..19cd3b0 100644 --- a/Data/Sys/Shaders/swap_RGB_GRB.glsl +++ b/Data/Sys/Shaders/swap_RGB_GRB.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/swap_RGB_RBG.glsl b/Data/Sys/Shaders/swap_RGB_RBG.glsl index 8e735a7..c003436 100644 --- a/Data/Sys/Shaders/swap_RGB_RBG.glsl +++ b/Data/Sys/Shaders/swap_RGB_RBG.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Data/Sys/Shaders/toxic.glsl b/Data/Sys/Shaders/toxic.glsl index be3a0bb..ab31e4c 100644 --- a/Data/Sys/Shaders/toxic.glsl +++ b/Data/Sys/Shaders/toxic.glsl @@ -1,4 +1,4 @@ -uniform sampler2D samp9; +SAMPLER_BINDING(9) uniform sampler2D samp9; out vec4 ocol0; in vec2 uv0; diff --git a/Readme.md b/Readme.md index abf0a1a..351b3da 100644 --- a/Readme.md +++ b/Readme.md @@ -1,6 +1,6 @@ # Dolphin - A GameCube / Triforce / Wii Emulator -[Homepage](https://dolphin-emu.org/) | [Project Site](https://github.com/dolphin-emu/dolphin) | [Forums](https://forums.dolphin-emu.org/) | [Wiki](https://wiki.dolphin-emu.org/) | [Issue Tracker](https://code.google.com/p/dolphin-emu/issues/list) +[Homepage](https://dolphin-emu.org/) | [Project Site](https://github.com/dolphin-emu/dolphin) | [Forums](https://forums.dolphin-emu.org/) | [Wiki](https://wiki.dolphin-emu.org/) | [Issue Tracker](https://code.google.com/p/dolphin-emu/issues/list) | [Coding Style](https://github.com/dolphin-emu/dolphin/blob/master/Contributing.md) Dolphin is an emulator for running GameCube, Triforce and Wii games on Windows/Linux/OS X systems and recent Android devices. It's licensed under diff --git a/Source/Android/AndroidManifest.xml b/Source/Android/AndroidManifest.xml index 5525ddc..12fa07c 100644 --- a/Source/Android/AndroidManifest.xml +++ b/Source/Android/AndroidManifest.xml @@ -21,14 +21,13 @@ android:label="@string/app_name" android:allowBackup="true"> + android:theme="@android:style/Theme.Holo.Light" > + + - @@ -37,10 +36,6 @@ android:name="org.dolphinemu.dolphinemu.about.AboutActivity" android:theme="@android:style/Theme.Holo.Light" /> - - @@ -55,6 +50,8 @@ android:label="@string/settings" android:theme="@android:style/Theme.Holo.Light" /> + + diff --git a/Source/Android/assets/NoBanner.png b/Source/Android/res/drawable/no_banner.png similarity index 100% rename from Source/Android/assets/NoBanner.png rename to Source/Android/res/drawable/no_banner.png diff --git a/Source/Android/res/values-ja/strings.xml b/Source/Android/res/values-ja/strings.xml index d798a35..49502bf 100644 --- a/Source/Android/res/values-ja/strings.xml +++ b/Source/Android/res/values-ja/strings.xml @@ -41,6 +41,8 @@ フォルダの参照 設定 について + ファイルサイズ: %.2f GiB + ファイルサイズ: %.2f MiB デバイスの互換性の警告 @@ -66,8 +68,11 @@ 入力 + 入力オーバーレイ + 画面上の入力のオーバーレイを設定し。 入力オーバーレイレイアウト 入力オーバーレイのためのボタンのレイアウト。 + コントロールのサイズを調整し ゲームキューブコントローラの入力バインディング コントローラ1 コントローラ2 diff --git a/Source/Android/res/values/strings.xml b/Source/Android/res/values/strings.xml index 06de05a..88d89db 100644 --- a/Source/Android/res/values/strings.xml +++ b/Source/Android/res/values/strings.xml @@ -34,6 +34,7 @@ Parent Directory File Size: %1$s + Clear game list Do you want to clear the game list? @@ -41,6 +42,8 @@ Browse Folder Settings About + File Size: %.2f GiB + File Size: %.2f MiB Device Compatibility Warning @@ -66,8 +69,11 @@ Input + Input Overlay + Configure the onscreen input overlay. Input Overlay Layout Button layout for the input overlay. + Adjust the control size GameCube Controller Bindings Controller 1 Controller 2 diff --git a/Source/Android/res/xml/input_prefs.xml b/Source/Android/res/xml/input_prefs.xml index 6e422f4..f6d8842 100644 --- a/Source/Android/res/xml/input_prefs.xml +++ b/Source/Android/res/xml/input_prefs.xml @@ -1,15 +1,25 @@ - - - - + + + + + + + { + private static final float BYTES_PER_GIB = 1024 * 1024 * 1024; + private static final float BYTES_PER_MIB = 1024 * 1024; + private final Context context; private final int id; @@ -74,8 +78,33 @@ public View getView(int position, View gameView, ViewGroup parent) if (item != null) { holder.title.setText(item.getName()); - holder.subtitle.setText(item.getData()); - holder.icon.setImageBitmap(item.getImage()); + + Bitmap icon = item.getImage(); + + if (icon != null) + { + holder.icon.setImageBitmap(icon); + } + else + { + holder.icon.setImageResource(R.drawable.no_banner); + } + + float fileSize = item.getFilesize() / BYTES_PER_GIB; + + String subtitle; + + if (fileSize >= 1.0f) + { + subtitle = String.format(context.getString(R.string.file_size_gib), fileSize); + } + else + { + fileSize = item.getFilesize() / BYTES_PER_MIB; + subtitle = String.format(context.getString(R.string.file_size_mib), fileSize); + } + + holder.subtitle.setText(subtitle); } // Make every other game in the list grey diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListFragment.java b/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListFragment.java index 244902a..60e10a3 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListFragment.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListFragment.java @@ -60,7 +60,7 @@ public void clearGameList() mGameAdapter.notifyDataSetChanged(); } - private void Fill() + private void fill() { List fls = new ArrayList(); String Directories = NativeLibrary.GetConfig("Dolphin.ini", "General", "GCMPathes", "0"); @@ -83,8 +83,9 @@ private void Fill() if (!entry.isHidden() && !entry.isDirectory()) { if (exts.contains(entryName.toLowerCase().substring(entryName.lastIndexOf('.')))) - fls.add(new GameListItem(getActivity(), entryName, String.format(getString(R.string.file_size), entry.length()), entry.getAbsolutePath())); + fls.add(new GameListItem(getActivity(), entryName, entry.length(), entry.getAbsolutePath())); } + } } catch (Exception ignored) @@ -110,7 +111,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa mGameAdapter = new GameListAdapter(getActivity(), R.layout.gamelist_list_item); rootView.setAdapter(mGameAdapter); - Fill(); + fill(); return rootView; } diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListItem.java b/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListItem.java index 1b72da7..6459eda 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListItem.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/gamelist/GameListItem.java @@ -23,7 +23,7 @@ public final class GameListItem implements Comparable { private String name; - private final String data; + private long filesize; private final String path; private Bitmap image; @@ -32,38 +32,20 @@ public final class GameListItem implements Comparable * * @param ctx The current {@link Context} * @param name The name of this GameListItem. - * @param data The subtitle for this GameListItem + * @param filesize The filesize for this GameListItem, in GiB * @param path The file path for the game represented by this GameListItem. */ - public GameListItem(Context ctx, String name, String data, String path) + public GameListItem(Context ctx, String name, long filesize, String path) { this.name = name; - this.data = data; + this.filesize = filesize; this.path = path; File file = new File(path); if (!file.isDirectory() && !path.isEmpty()) { int[] Banner = NativeLibrary.GetBanner(path); - if (Banner[0] == 0) - { - try - { - // Open the no banner icon. - InputStream noBannerPath = ctx.getAssets().open("NoBanner.png"); - - // Decode the bitmap. - image = BitmapFactory.decodeStream(noBannerPath); - - // Scale the bitmap to match other banners. - image = Bitmap.createScaledBitmap(image, 96, 32, false); - } - catch (IOException e) - { - Log.e("GameListItem", e.toString()); - } - } - else + if (Banner[0] != 0) { image = Bitmap.createBitmap(Banner, 96, 32, Bitmap.Config.ARGB_8888); } @@ -83,13 +65,13 @@ public String getName() } /** - * Gets the subtitle of this GameListItem. + * Gets the filesize of this GameListItem, in GiB. * - * @return the subtitle of this GameListItem. + * @return the filesize of this GameListItem. */ - public String getData() + public long getFilesize() { - return data; + return filesize; } /** diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/settings/input/overlayconfig/OverlayConfigButton.java b/Source/Android/src/org/dolphinemu/dolphinemu/settings/input/overlayconfig/OverlayConfigButton.java index 3028817..5cd82d0 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/settings/input/overlayconfig/OverlayConfigButton.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/settings/input/overlayconfig/OverlayConfigButton.java @@ -54,7 +54,7 @@ private Drawable resizeDrawable(Drawable image, float scale) Bitmap bitmapResized = Bitmap.createScaledBitmap(b, (int)(displayMetrics.heightPixels * scale), (int)(displayMetrics.heightPixels * scale), - false); + true); return new BitmapDrawable(getResources(), bitmapResized); } @@ -76,13 +76,43 @@ public OverlayConfigButton(Context context, String buttonId, int drawableId) // Set the button as its own OnTouchListener. setOnTouchListener(this); - // Set the button's icon that represents it. - setBackground(resizeDrawable(getResources().getDrawable(drawableId), - drawableId == R.drawable.gcpad_joystick_range ? 0.30f : 0.20f)); - // Get the SharedPreferences instance. sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); + // Decide scale based on button ID + + // SeekBars are not able to set a minimum value, only a maximum value, which complicates + // things a bit. What happens here is after the SeekBar's value is retrieved, 25 is + // added so the value will never go below 25. It is then divided by 50 (25 + 25) so the + // default value will be 100%. + float scale; + float overlaySize = sharedPrefs.getInt("controls_size", 25); + overlaySize += 25; + overlaySize /= 50; + + switch (drawableId) + { + case R.drawable.gcpad_b: + scale = 0.13f * overlaySize; + break; + case R.drawable.gcpad_x: + case R.drawable.gcpad_y: + scale = 0.18f * overlaySize; + break; + case R.drawable.gcpad_start: + scale = 0.12f * overlaySize; + break; + case R.drawable.gcpad_joystick_range: + scale = 0.30f * overlaySize; + break; + default: + scale = 0.20f * overlaySize; + break; + } + + // Set the button's icon that represents it. + setBackground(resizeDrawable(getResources().getDrawable(drawableId), scale)); + // Check if this button has previous values set that aren't the default. final float x = sharedPrefs.getFloat(buttonId+"-X", -1f); final float y = sharedPrefs.getFloat(buttonId+"-Y", -1f); diff --git a/Source/Core/AudioCommon/DPL2Decoder.cpp b/Source/Core/AudioCommon/DPL2Decoder.cpp index 1cddf54..17b74ea 100644 --- a/Source/Core/AudioCommon/DPL2Decoder.cpp +++ b/Source/Core/AudioCommon/DPL2Decoder.cpp @@ -23,20 +23,21 @@ #define M_SQRT1_2 0.70710678118654752440 #endif -int olddelay = -1; -unsigned int oldfreq = 0; -unsigned int dlbuflen; -int cyc_pos; -float l_fwr, r_fwr, lpr_fwr, lmr_fwr; -std::vector fwrbuf_l, fwrbuf_r; -float adapt_l_gain, adapt_r_gain, adapt_lpr_gain, adapt_lmr_gain; -std::vector lf, rf, lr, rr, cf, cr; -float LFE_buf[256]; -unsigned int lfe_pos; -float *filter_coefs_lfe; -unsigned int len125; - -template static _ftype_t dotproduct(int count,const T *buf,const _ftype_t *coefficients) +static int olddelay = -1; +static unsigned int oldfreq = 0; +static unsigned int dlbuflen; +static int cyc_pos; +static float l_fwr, r_fwr, lpr_fwr, lmr_fwr; +static std::vector fwrbuf_l, fwrbuf_r; +static float adapt_l_gain, adapt_r_gain, adapt_lpr_gain, adapt_lmr_gain; +static std::vector lf, rf, lr, rr, cf, cr; +static float LFE_buf[256]; +static unsigned int lfe_pos; +static float *filter_coefs_lfe; +static unsigned int len125; + +template +static _ftype_t DotProduct(int count,const T *buf,const _ftype_t *coefficients) { float sum0=0,sum1=0,sum2=0,sum3=0; for (;count>=4;buf+=4,coefficients+=4,count-=4) @@ -46,11 +47,15 @@ template static _ftype_t dotproduct(int count,const T *b sum2+=buf[2]*coefficients[2]; sum3+=buf[3]*coefficients[3]; } - while (count--) sum0+= *buf++ * *coefficients++; + + while (count--) + sum0+= *buf++ * *coefficients++; + return sum0+sum1+sum2+sum3; } -template static T firfilter(const T *buf, int pos, int len, int count, const float *coefficients) +template +static T FIRFilter(const T *buf, int pos, int len, int count, const float *coefficients) { int count1, count2; @@ -69,8 +74,8 @@ template static T firfilter(const T *buf, int pos, int len, int count, // high part of window const T *ptr = &buf[pos]; - float r1=dotproduct(count1,ptr,coefficients);coefficients+=count1; - float r2=dotproduct(count2,buf,coefficients); + float r1=DotProduct(count1,ptr,coefficients);coefficients+=count1; + float r2=DotProduct(count2,buf,coefficients); return T(r1+r2); } @@ -83,7 +88,7 @@ template static T firfilter(const T *buf, int pos, int len, int count, // n window length // w buffer for the window parameters */ -void hamming(int n, float* w) +static void Hamming(int n, float* w) { int i; float k = float(2*M_PI/((float)(n-1))); // 2*pi/(N-1) @@ -110,7 +115,7 @@ opt beta constant used only when designing using kaiser windows returns 0 if OK, -1 if fail */ -float* design_fir(unsigned int *n, float* fc, float opt) +static float* DesignFIR(unsigned int *n, float* fc, float opt) { unsigned int o = *n & 1; // Indicator for odd filter length unsigned int end = ((*n + 1) >> 1) - o; // Loop end @@ -129,7 +134,7 @@ float* design_fir(unsigned int *n, float* fc, float opt) float *w=(float*)calloc(sizeof(float),*n); // Get window coefficients - hamming(*n,w); + Hamming(*n,w); fc1=*fc; // Cutoff frequency must be < 0.5 where 0.5 <=> Fs/2 @@ -165,7 +170,7 @@ float* design_fir(unsigned int *n, float* fc, float opt) return w; } -void onSeek(void) +static void OnSeek() { l_fwr = r_fwr = lpr_fwr = lmr_fwr = 0; std::fill(fwrbuf_l.begin(), fwrbuf_l.end(), 0.0f); @@ -181,21 +186,23 @@ void onSeek(void) memset(LFE_buf, 0, sizeof(LFE_buf)); } -void done(void) +static void Done() { - onSeek(); + OnSeek(); + if (filter_coefs_lfe) { free(filter_coefs_lfe); } + filter_coefs_lfe = nullptr; } -float* calc_coefficients_125Hz_lowpass(int rate) +static float* CalculateCoefficients125HzLowpass(int rate) { len125 = 256; float f = 125.0f / (rate / 2); - float *coeffs = design_fir(&len125, &f, 0); + float *coeffs = DesignFIR(&len125, &f, 0); static const float M3_01DB = 0.7071067812f; for (unsigned int i = 0; i < len125; i++) { @@ -204,7 +211,7 @@ float* calc_coefficients_125Hz_lowpass(int rate) return coeffs; } -float passive_lock(float x) +static float PassiveLock(float x) { static const float MATAGCLOCK = 0.2f; /* AGC range (around 1) where the matrix behaves passively */ const float x1 = x - 1; @@ -212,7 +219,7 @@ float passive_lock(float x) return x1 - x1 / (1 + ax1s * ax1s) + 1; } -void matrix_decode(const float *in, const int k, const int il, +static void MatrixDecode(const float *in, const int k, const int il, const int ir, bool decode_rear, const int _dlbuflen, float _l_fwr, float _r_fwr, @@ -251,8 +258,8 @@ void matrix_decode(const float *in, const int k, const int il, *_adapt_l_gain = (1 - f) * *_adapt_l_gain + f * l_gain; *_adapt_r_gain = (1 - f) * *_adapt_r_gain + f * r_gain; /* Matrix */ - l_agc = in[il] * passive_lock(*_adapt_l_gain); - r_agc = in[ir] * passive_lock(*_adapt_r_gain); + l_agc = in[il] * PassiveLock(*_adapt_l_gain); + r_agc = in[ir] * PassiveLock(*_adapt_r_gain); _cf[k] = (l_agc + r_agc) * (float)M_SQRT1_2; if (decode_rear) { @@ -274,8 +281,8 @@ void matrix_decode(const float *in, const int k, const int il, *_adapt_lpr_gain = (1 - f) * *_adapt_lpr_gain + f * lpr_gain; *_adapt_lmr_gain = (1 - f) * *_adapt_lmr_gain + f * lmr_gain; /* Matrix */ - lpr_agc = lpr * passive_lock(*_adapt_lpr_gain); - lmr_agc = lmr * passive_lock(*_adapt_lmr_gain); + lpr_agc = lpr * PassiveLock(*_adapt_lpr_gain); + lmr_agc = lmr * PassiveLock(*_adapt_lmr_gain); _lf[k] = (lpr_agc + lmr_agc) * (float)M_SQRT1_2; _rf[k] = (lpr_agc - lmr_agc) * (float)M_SQRT1_2; @@ -297,7 +304,7 @@ void matrix_decode(const float *in, const int k, const int il, _cf[k] += c_agc_cfk + c_agc_cfk; } -void dpl2decode(float *samples, int numsamples, float *out) +void DPL2Decode(float *samples, int numsamples, float *out) { static const unsigned int FWRDURATION = 240; // FWR average duration (samples) static const int cfg_delay = 0; @@ -308,7 +315,7 @@ void dpl2decode(float *samples, int numsamples, float *out) if (olddelay != cfg_delay || oldfreq != fmt_freq) { - done(); + Done(); olddelay = cfg_delay; oldfreq = fmt_freq; dlbuflen = std::max(FWRDURATION, (fmt_freq * cfg_delay / 1000)); //+(len7000-1); @@ -321,7 +328,7 @@ void dpl2decode(float *samples, int numsamples, float *out) rr.resize(dlbuflen); cf.resize(dlbuflen); cr.resize(dlbuflen); - filter_coefs_lfe = calc_coefficients_125Hz_lowpass(fmt_freq); + filter_coefs_lfe = CalculateCoefficients125HzLowpass(fmt_freq); lfe_pos = 0; memset(LFE_buf, 0, sizeof(LFE_buf)); } @@ -344,7 +351,7 @@ void dpl2decode(float *samples, int numsamples, float *out) /* Matrix encoded 2 channel sources */ fwrbuf_l[k] = in[0]; fwrbuf_r[k] = in[1]; - matrix_decode(in, k, 0, 1, true, dlbuflen, + MatrixDecode(in, k, 0, 1, true, dlbuflen, l_fwr, r_fwr, lpr_fwr, lmr_fwr, &adapt_l_gain, &adapt_r_gain, @@ -355,7 +362,7 @@ void dpl2decode(float *samples, int numsamples, float *out) out[cur + 1] = rf[k]; out[cur + 2] = cf[k]; LFE_buf[lfe_pos] = (out[0] + out[1]) / 2; - out[cur + 3] = firfilter(LFE_buf, lfe_pos, len125, len125, filter_coefs_lfe); + out[cur + 3] = FIRFilter(LFE_buf, lfe_pos, len125, len125, filter_coefs_lfe); lfe_pos++; if (lfe_pos == len125) { @@ -374,7 +381,7 @@ void dpl2decode(float *samples, int numsamples, float *out) } } -void dpl2reset() +void DPL2Reset() { olddelay = -1; oldfreq = 0; diff --git a/Source/Core/AudioCommon/DPL2Decoder.h b/Source/Core/AudioCommon/DPL2Decoder.h index e897954..bbc97ba 100644 --- a/Source/Core/AudioCommon/DPL2Decoder.h +++ b/Source/Core/AudioCommon/DPL2Decoder.h @@ -4,5 +4,5 @@ #pragma once -void dpl2decode(float *samples, int numsamples, float *out); -void dpl2reset(); +void DPL2Decode(float *samples, int numsamples, float *out); +void DPL2Reset(); diff --git a/Source/Core/AudioCommon/Mixer.cpp b/Source/Core/AudioCommon/Mixer.cpp index 388eb56..ce13f50 100644 --- a/Source/Core/AudioCommon/Mixer.cpp +++ b/Source/Core/AudioCommon/Mixer.cpp @@ -51,7 +51,6 @@ unsigned int CMixer::MixerFifo::Mix(short* samples, unsigned int numSamples, boo aid_sample_rate = aid_sample_rate * (framelimit - 1) * 5 / VideoInterface::TargetRefreshRate; } - static u32 frac = 0; const u32 ratio = (u32)( 65536.0f * aid_sample_rate / (float)m_mixer->m_sampleRate ); s32 lvolume = m_LVolume; @@ -63,7 +62,7 @@ unsigned int CMixer::MixerFifo::Mix(short* samples, unsigned int numSamples, boo s16 l1 = Common::swap16(m_buffer[indexR & INDEX_MASK]); //current s16 l2 = Common::swap16(m_buffer[indexR2 & INDEX_MASK]); //next - int sampleL = ((l1 << 16) + (l2 - l1) * (u16)frac) >> 16; + int sampleL = ((l1 << 16) + (l2 - l1) * (u16)m_frac) >> 16; sampleL = (sampleL * lvolume) >> 8; sampleL += samples[currentSample + 1]; MathUtil::Clamp(&sampleL, -32767, 32767); @@ -71,23 +70,23 @@ unsigned int CMixer::MixerFifo::Mix(short* samples, unsigned int numSamples, boo s16 r1 = Common::swap16(m_buffer[(indexR + 1) & INDEX_MASK]); //current s16 r2 = Common::swap16(m_buffer[(indexR2 + 1) & INDEX_MASK]); //next - int sampleR = ((r1 << 16) + (r2 - r1) * (u16)frac) >> 16; + int sampleR = ((r1 << 16) + (r2 - r1) * (u16)m_frac) >> 16; sampleR = (sampleR * rvolume) >> 8; sampleR += samples[currentSample]; MathUtil::Clamp(&sampleR, -32767, 32767); samples[currentSample] = sampleR; - frac += ratio; - indexR += 2 * (u16)(frac >> 16); - frac &= 0xffff; + m_frac += ratio; + indexR += 2 * (u16)(m_frac >> 16); + m_frac &= 0xffff; } // Padding short s[2]; s[0] = Common::swap16(m_buffer[(indexR - 1) & INDEX_MASK]); s[1] = Common::swap16(m_buffer[(indexR - 2) & INDEX_MASK]); - s[0] = (s[0] * lvolume) >> 8; - s[1] = (s[1] * rvolume) >> 8; + s[0] = (s[0] * rvolume) >> 8; + s[1] = (s[1] * lvolume) >> 8; for (; currentSample < numSamples * 2; currentSample += 2) { int sampleR = s[0] + samples[currentSample]; diff --git a/Source/Core/AudioCommon/Mixer.h b/Source/Core/AudioCommon/Mixer.h index 6400cf8..474ec12 100644 --- a/Source/Core/AudioCommon/Mixer.h +++ b/Source/Core/AudioCommon/Mixer.h @@ -88,9 +88,10 @@ class CMixer { , m_input_sample_rate(sample_rate) , m_indexW(0) , m_indexR(0) - , m_numLeftI(0.0f) , m_LVolume(256) , m_RVolume(256) + , m_numLeftI(0.0f) + , m_frac(0) { memset(m_buffer, 0, sizeof(m_buffer)); } @@ -107,6 +108,7 @@ class CMixer { volatile s32 m_LVolume; volatile s32 m_RVolume; float m_numLeftI; + u32 m_frac; }; MixerFifo m_dma_mixer; MixerFifo m_streaming_mixer; diff --git a/Source/Core/AudioCommon/OpenALStream.cpp b/Source/Core/AudioCommon/OpenALStream.cpp index 1c1a802..84b9a72 100644 --- a/Source/Core/AudioCommon/OpenALStream.cpp +++ b/Source/Core/AudioCommon/OpenALStream.cpp @@ -10,7 +10,7 @@ #if defined HAVE_OPENAL && HAVE_OPENAL -soundtouch::SoundTouch soundTouch; +static soundtouch::SoundTouch soundTouch; // // AyuanX: Spec says OpenAL1.1 is thread safe already @@ -58,7 +58,7 @@ bool OpenALStream::Start() } // Initialize DPL2 parameters - dpl2reset(); + DPL2Reset(); soundTouch.clear(); return bReturn; @@ -246,7 +246,7 @@ void OpenALStream::SoundLoop() if (surround_capable) { float dpl2[OAL_MAX_SAMPLES * OAL_MAX_BUFFERS * SURROUND_CHANNELS]; - dpl2decode(sampleBuffer, nSamples, dpl2); + DPL2Decode(sampleBuffer, nSamples, dpl2); alBufferData(uiBufferTemp[iBuffersFilled], AL_FORMAT_51CHN32, dpl2, nSamples * FRAME_SURROUND_FLOAT, ulFrequency); ALenum err = alGetError(); if (err == AL_INVALID_ENUM) diff --git a/Source/Core/Common/ArmEmitter.cpp b/Source/Core/Common/ArmEmitter.cpp index ccd05d4..c5b2224 100644 --- a/Source/Core/Common/ArmEmitter.cpp +++ b/Source/Core/Common/ArmEmitter.cpp @@ -916,7 +916,7 @@ u32 EncodeVm(ARMReg Vm) } // Double/single, Neon -extern const VFPEnc VFPOps[16][2] = { +static const VFPEnc VFPOps[16][2] = { {{0xE0, 0xA0}, { -1, -1}}, // 0: VMLA {{0xE1, 0xA4}, { -1, -1}}, // 1: VNMLA {{0xE0, 0xA4}, { -1, -1}}, // 2: VMLS @@ -934,7 +934,7 @@ extern const VFPEnc VFPOps[16][2] = { {{ -1, -1}, {0x3B, 0x30}}, // 14: VABSi }; -const char *VFPOpNames[16] = { +static const char *VFPOpNames[16] = { "VMLA", "VNMLA", "VMLS", diff --git a/Source/Core/Common/ArmEmitter.h b/Source/Core/Common/ArmEmitter.h index c4820b6..d33269d 100644 --- a/Source/Core/Common/ArmEmitter.h +++ b/Source/Core/Common/ArmEmitter.h @@ -720,7 +720,4 @@ struct VFPEnc { s16 opc1; s16 opc2; }; -extern const VFPEnc VFPOps[16][2]; -extern const char *VFPOpNames[16]; - } // namespace diff --git a/Source/Core/Common/CDUtils.cpp b/Source/Core/Common/CDUtils.cpp index 4dfdcac..e0ccd20 100644 --- a/Source/Core/Common/CDUtils.cpp +++ b/Source/Core/Common/CDUtils.cpp @@ -155,7 +155,7 @@ static struct }; // Returns true if a device is a block or char device and not a symbolic link -bool is_device(const std::string& source_name) +static bool is_device(const std::string& source_name) { struct stat buf; if (0 != lstat(source_name.c_str(), &buf)) diff --git a/Source/Core/Common/ChunkFile.h b/Source/Core/Common/ChunkFile.h index 74cf9f4..8e4280e 100644 --- a/Source/Core/Common/ChunkFile.h +++ b/Source/Core/Common/ChunkFile.h @@ -127,17 +127,6 @@ class PointerWrap } } - template - void DoContainer(T& x) - { - u32 size = (u32)x.size(); - Do(size); - x.resize(size); - - for (auto& elem : x) - Do(elem); - } - template void Do(std::vector& x) { @@ -276,6 +265,17 @@ class PointerWrap } private: + template + void DoContainer(T& x) + { + u32 size = (u32)x.size(); + Do(size); + x.resize(size); + + for (auto& elem : x) + Do(elem); + } + __forceinline void DoByte(u8& x) { switch (mode) diff --git a/Source/Core/Common/ColorUtil.cpp b/Source/Core/Common/ColorUtil.cpp index 0930668..f0ff3b3 100644 --- a/Source/Core/Common/ColorUtil.cpp +++ b/Source/Core/Common/ColorUtil.cpp @@ -16,7 +16,7 @@ const int lut4to8[] = { 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77, 0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF }; const int lut3to8[] = { 0x00,0x24,0x48,0x6D,0x91,0xB6,0xDA,0xFF }; -u32 Decode5A3(u16 val) +static u32 Decode5A3(u16 val) { const u32 bg_color = 0x00000000; diff --git a/Source/Core/Common/Common.h b/Source/Core/Common/Common.h index 232acf5..fa1cece 100644 --- a/Source/Core/Common/Common.h +++ b/Source/Core/Common/Common.h @@ -15,7 +15,7 @@ #define __has_feature(x) 0 #endif -// SVN version number +// Git version number extern const char *scm_desc_str; extern const char *scm_branch_str; extern const char *scm_rev_str; @@ -37,6 +37,28 @@ extern const char *netplay_dolphin_ver; #define UNUSED #endif +#if defined(__GNUC__) || __clang__ + #define EXPECT(x, y) __builtin_expect(x, y) + #define LIKELY(x) __builtin_expect(!!(x), 1) + #define UNLIKELY(x) __builtin_expect(!!(x), 0) + // Careful, wrong assumptions result in undefined behavior! + #define UNREACHABLE __builtin_unreachable() + // Careful, wrong assumptions result in undefined behavior! + #define ASSUME(x) do { if (!x) __builtin_unreachable(); } while (0) +#else + #define EXPECT(x, y) (x) + #define LIKELY(x) (x) + #define UNLIKELY(x) (x) + // Careful, wrong assumptions result in undefined behavior! + #define UNREACHABLE ASSUME(0) + #if defined(_MSC_VER) + // Careful, wrong assumptions result in undefined behavior! + #define ASSUME(x) __assume(x) + #else + #define ASSUME(x) do { void(x); } while (0) + #endif +#endif + #define STACKALIGN #if __cplusplus >= 201103 || defined(_MSC_VER) || defined(__GXX_EXPERIMENTAL_CXX0X__) diff --git a/Source/Core/Common/Crypto/bn.cpp b/Source/Core/Common/Crypto/bn.cpp index 4f7c93e..425a9aa 100644 --- a/Source/Core/Common/Crypto/bn.cpp +++ b/Source/Core/Common/Crypto/bn.cpp @@ -6,6 +6,7 @@ #include #include "Common/Common.h" +#include "Common/Crypto/bn.h" static void bn_zero(u8 *d, u32 n) { diff --git a/Source/Core/Common/Crypto/ec.cpp b/Source/Core/Common/Crypto/ec.cpp index b324f1e..b75411b 100644 --- a/Source/Core/Common/Crypto/ec.cpp +++ b/Source/Core/Common/Crypto/ec.cpp @@ -297,7 +297,7 @@ static void point_add(u8 *r, const u8 *p, const u8 *q) elt_add(ry, s, rx); } -void point_mul(u8 *d, const u8 *a, const u8 *b) // a is bignum +static void point_mul(u8 *d, const u8 *a, const u8 *b) // a is bignum { u32 i; u8 mask; diff --git a/Source/Core/Common/Crypto/ec.h b/Source/Core/Common/Crypto/ec.h index 14329d4..efbc7e9 100644 --- a/Source/Core/Common/Crypto/ec.h +++ b/Source/Core/Common/Crypto/ec.h @@ -6,8 +6,6 @@ #include "Common/CommonTypes.h" -void point_mul(u8 *d, const u8 *a, const u8 *b); - void generate_ecdsa(u8 *R, u8 *S, const u8 *k, const u8 *hash); void ec_priv_to_pub(const u8 *k, u8 *Q); diff --git a/Source/Core/Common/ExtendedTrace.cpp b/Source/Core/Common/ExtendedTrace.cpp index 2262b6a..54594eb 100644 --- a/Source/Core/Common/ExtendedTrace.cpp +++ b/Source/Core/Common/ExtendedTrace.cpp @@ -411,8 +411,8 @@ void StackTrace(HANDLE hThread, const char* lpszMessage, FILE *file, DWORD eip, if (hThread != GetCurrentThread()) ResumeThread(hThread); } - -char g_uefbuf[2048]; +#define UEFBUFSIZE 2048 +static char g_uefbuf[UEFBUFSIZE]; void etfprintf(FILE *file, const char *format, ...) { diff --git a/Source/Core/Common/ExtendedTrace.h b/Source/Core/Common/ExtendedTrace.h index e0efd85..ea4ab86 100644 --- a/Source/Core/Common/ExtendedTrace.h +++ b/Source/Core/Common/ExtendedTrace.h @@ -36,8 +36,6 @@ void StackTrace(HANDLE, char const* msg, FILE *file, DWORD eip, DWORD esp, DWORD // functions by Masken void etfprintf(FILE *file, const char *format, ...); void etfprint(FILE *file, const std::string &text); -#define UEFBUFSIZE 2048 -extern char g_uefbuf[UEFBUFSIZE]; #else // not WIN32 diff --git a/Source/Core/Common/Logging/Log.h b/Source/Core/Common/Logging/Log.h index e7282e6..fa67058 100644 --- a/Source/Core/Common/Logging/Log.h +++ b/Source/Core/Common/Logging/Log.h @@ -77,12 +77,9 @@ enum LOG_LEVELS static const char LOG_LEVEL_TO_CHAR[7] = "-NEWID"; -#define LOGTYPES_LEVELS LogTypes::LOG_LEVELS -#define LOGTYPES_TYPE LogTypes::LOG_TYPE - } // namespace -void GenericLog(LOGTYPES_LEVELS level, LOGTYPES_TYPE type, +void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char *file, int line, const char *fmt, ...) #ifdef __GNUC__ __attribute__((format(printf, 5, 6))) diff --git a/Source/Core/Common/MathUtil.h b/Source/Core/Common/MathUtil.h index cec15f3..db35cbe 100644 --- a/Source/Core/Common/MathUtil.h +++ b/Source/Core/Common/MathUtil.h @@ -20,6 +20,14 @@ inline void Clamp(T* val, const T& min, const T& max) *val = max; } +template +inline T Clamp(const T val, const T& min, const T& max) +{ + T ret = val; + Clamp(&ret, min, max); + return ret; +} + // The most significant bit of the fraction is an is-quiet bit on all architectures we care about. static const u64 DOUBLE_SIGN = 0x8000000000000000ULL, diff --git a/Source/Core/Common/MemoryUtil.cpp b/Source/Core/Common/MemoryUtil.cpp index bb3ddf5..0ae08ce 100644 --- a/Source/Core/Common/MemoryUtil.cpp +++ b/Source/Core/Common/MemoryUtil.cpp @@ -7,6 +7,7 @@ #include #include "Common/Common.h" +#include "Common/MemoryUtil.h" #ifdef _WIN32 #include diff --git a/Source/Core/Common/MsgHandler.h b/Source/Core/Common/MsgHandler.h index 36032fe..079e960 100644 --- a/Source/Core/Common/MsgHandler.h +++ b/Source/Core/Common/MsgHandler.h @@ -22,7 +22,7 @@ typedef std::string (*StringTranslator)(const char* text); void RegisterMsgAlertHandler(MsgAlertHandler handler); void RegisterStringTranslator(StringTranslator translator); -extern bool MsgAlert(bool yes_no, int Style, const char* format, ...) +bool MsgAlert(bool yes_no, int Style, const char* format, ...) #ifdef __GNUC__ __attribute__((format(printf, 3, 4))) #endif diff --git a/Source/Core/Common/SysConf.cpp b/Source/Core/Common/SysConf.cpp index 6cd4f1b..46ced20 100644 --- a/Source/Core/Common/SysConf.cpp +++ b/Source/Core/Common/SysConf.cpp @@ -154,7 +154,7 @@ bool SysConf::LoadFromFileInternal(FILE *fh) } // Returns the size of the item in file -unsigned int create_item(SSysConfEntry &item, SysconfType type, const std::string &name, +static unsigned int create_item(SSysConfEntry &item, SysconfType type, const std::string &name, const int data_length, unsigned int offset) { item.offset = offset; diff --git a/Source/Core/Common/make_scmrev.h.js b/Source/Core/Common/make_scmrev.h.js index 501576e..17e59a2 100644 --- a/Source/Core/Common/make_scmrev.h.js +++ b/Source/Core/Common/make_scmrev.h.js @@ -8,6 +8,15 @@ var cmd_branch = " rev-parse --abbrev-ref HEAD"; function GetGitExe() { + try + { + gitexe = wshShell.RegRead("HKCU\\Software\\GitExtensions\\gitcommand"); + wshShell.Exec(gitexe); + return gitexe; + } + catch (e) + {} + for (var gitexe in {"git.cmd":1, "git":1, "git.bat":1}) { try @@ -56,7 +65,7 @@ var gitexe = GetGitExe(); var revision = GetFirstStdOutLine(gitexe + cmd_revision); var describe = GetFirstStdOutLine(gitexe + cmd_describe); var branch = GetFirstStdOutLine(gitexe + cmd_branch); -var isMaster = +("master" == branch); +var isMaster = +("master" == branch); // remove hash (and trailing "-0" if needed) from description describe = describe.replace(/(-0)?-[^-]+(-dirty)?$/, '$2'); diff --git a/Source/Core/Common/x64Emitter.cpp b/Source/Core/Common/x64Emitter.cpp index 59b7643..b4ec2bc 100644 --- a/Source/Core/Common/x64Emitter.cpp +++ b/Source/Core/Common/x64Emitter.cpp @@ -1405,6 +1405,7 @@ void XEmitter::CVTPS2DQ(X64Reg regOp, OpArg arg) {WriteSSEOp(64, 0x5B, true, reg void XEmitter::CVTTSS2SI(X64Reg xregdest, OpArg arg) {WriteSSEOp(32, 0x2C, false, xregdest, arg);} void XEmitter::CVTTPS2DQ(X64Reg xregdest, OpArg arg) {WriteSSEOp(32, 0x5B, false, xregdest, arg);} +void XEmitter::CVTTPD2DQ(X64Reg xregdest, OpArg arg) {WriteSSEOp(64, 0xE6, true, xregdest, arg);} void XEmitter::MASKMOVDQU(X64Reg dest, X64Reg src) {WriteSSEOp(64, sseMASKMOVDQU, true, dest, R(src));} diff --git a/Source/Core/Common/x64Emitter.h b/Source/Core/Common/x64Emitter.h index eac659b..8d7742d 100644 --- a/Source/Core/Common/x64Emitter.h +++ b/Source/Core/Common/x64Emitter.h @@ -576,6 +576,7 @@ class XEmitter void CVTTSS2SI(X64Reg xregdest, OpArg arg); // Yeah, destination really is a GPR like EAX! void CVTTPS2DQ(X64Reg regOp, OpArg arg); + void CVTTPD2DQ(X64Reg regOp, OpArg arg); // SSE2: Packed integer instructions void PACKSSDW(X64Reg dest, OpArg arg); diff --git a/Source/Core/Core/ARDecrypt.cpp b/Source/Core/Core/ARDecrypt.cpp index 7867e05..74814de 100644 --- a/Source/Core/Core/ARDecrypt.cpp +++ b/Source/Core/Core/ARDecrypt.cpp @@ -18,9 +18,9 @@ namespace ActionReplay { // Alphanumeric filter for text<->bin conversion -const char *filter = "0123456789ABCDEFGHJKMNPQRTUVWXYZILOS"; +static const char *filter = "0123456789ABCDEFGHJKMNPQRTUVWXYZILOS"; -u32 genseeds[0x20]; +static u32 genseeds[0x20]; const u8 gentable0[0x38] = { 0x39, 0x31, 0x29, 0x21, 0x19, 0x11, 0x09, 0x01, @@ -143,7 +143,7 @@ const u32 table7[0x40] = { }; -void generateseeds(u32 *seeds, const u8 *seedtable, u8 doreverse) +static void generateseeds(u32 *seeds, const u8 *seedtable, u8 doreverse) { u32 tmp3; u8 array0[0x38],array1[0x38],array2[0x08]; @@ -208,24 +208,24 @@ void generateseeds(u32 *seeds, const u8 *seedtable, u8 doreverse) } } -void buildseeds() +static void buildseeds() { generateseeds(genseeds,gensubtable,0); } -void getcode(u32 *src, u32 *addr, u32 *val) +static void getcode(u32 *src, u32 *addr, u32 *val) { *addr = Common::swap32(src[0]); *val = Common::swap32(src[1]); } -void setcode(u32 *dst, u32 addr, u32 val) +static void setcode(u32 *dst, u32 addr, u32 val) { dst[0] = Common::swap32(addr); dst[1] = Common::swap32(val); } -u16 gencrc16(u32 *codes, u16 size) +static u16 gencrc16(u32 *codes, u16 size) { u16 ret = 0; @@ -243,13 +243,13 @@ u16 gencrc16(u32 *codes, u16 size) return ret; } -u8 verifycode(u32 *codes, u16 size) +static u8 verifycode(u32 *codes, u16 size) { u16 tmp = gencrc16(codes,size); return (((tmp>>12)^(tmp>>8)^(tmp>>4)^tmp)&0x0F); } -void unscramble1(u32 *addr, u32 *val) +static void unscramble1(u32 *addr, u32 *val) { u32 tmp; @@ -276,7 +276,7 @@ void unscramble1(u32 *addr, u32 *val) *val ^= tmp; } -void unscramble2(u32 *addr, u32 *val) +static void unscramble2(u32 *addr, u32 *val) { u32 tmp; @@ -303,7 +303,7 @@ void unscramble2(u32 *addr, u32 *val) *addr = _rotr((*addr^tmp),4); } -void decryptcode(u32 *seeds, u32 *code) +static void decryptcode(u32 *seeds, u32 *code) { u32 addr,val; u32 tmp,tmp2; @@ -325,7 +325,7 @@ void decryptcode(u32 *seeds, u32 *code) setcode(code,val,addr); } -bool getbitstring(u32 *ctrl, u32 *out, u8 len) +static bool getbitstring(u32 *ctrl, u32 *out, u8 len) { u32 tmp=(ctrl[0]+(ctrl[1]<<2)); @@ -348,7 +348,7 @@ bool getbitstring(u32 *ctrl, u32 *out, u8 len) return true; } -bool batchdecrypt(u32 *codes, u16 size) +static bool batchdecrypt(u32 *codes, u16 size) { u32 tmp,*ptr=codes; u32 tmparray[4] = { 0 },tmparray2[8] = { 0 }; @@ -391,7 +391,7 @@ bool batchdecrypt(u32 *codes, u16 size) // Unfinished (so says Parasyte :p ) } -int GetVal(const char *flt, char chr) +static int GetVal(const char *flt, char chr) { int ret = (int)(strchr(flt,chr) - flt); switch (ret) @@ -410,7 +410,7 @@ int GetVal(const char *flt, char chr) return ret; } -int alphatobin(u32 *dst, std::vector alpha, int size) +static int alphatobin(u32 *dst, std::vector alpha, int size) { int j = 0; int ret = 0; diff --git a/Source/Core/Core/Boot/Boot.cpp b/Source/Core/Core/Boot/Boot.cpp index bd0bacc..fd6a9ac 100644 --- a/Source/Core/Core/Boot/Boot.cpp +++ b/Source/Core/Core/Boot/Boot.cpp @@ -241,6 +241,11 @@ bool CBoot::BootUp() // If we can't load the bootrom file we HLE it instead EmulatedBS2(_StartupPara.bWii); } + else + { + // Load patches if they weren't already + PatchEngine::LoadPatches(); + } // Scan for common HLE functions if (_StartupPara.bSkipIdle && !_StartupPara.bEnableDebugging) diff --git a/Source/Core/Core/Boot/Boot.h b/Source/Core/Core/Boot/Boot.h index 866d6b8..973e94c 100644 --- a/Source/Core/Core/Boot/Boot.h +++ b/Source/Core/Core/Boot/Boot.h @@ -12,13 +12,13 @@ #include "DiscIO/Volume.h" using DiscIO::IVolume; -typedef struct CountrySetting +struct CountrySetting { const std::string area; const std::string video; const std::string game; const std::string code; -} CountrySetting; +}; class CBoot { diff --git a/Source/Core/Core/Boot/ElfReader.cpp b/Source/Core/Core/Boot/ElfReader.cpp index 2621f84..8428d4e 100644 --- a/Source/Core/Core/Boot/ElfReader.cpp +++ b/Source/Core/Core/Boot/ElfReader.cpp @@ -11,8 +11,8 @@ #include "Core/HW/Memmap.h" #include "Core/PowerPC/PPCSymbolDB.h" -void bswap(Elf32_Word &w) {w = Common::swap32(w);} -void bswap(Elf32_Half &w) {w = Common::swap16(w);} +static void bswap(Elf32_Word &w) {w = Common::swap32(w);} +static void bswap(Elf32_Half &w) {w = Common::swap16(w);} static void byteswapHeader(Elf32_Ehdr &ELF_H) { diff --git a/Source/Core/Core/BootManager.cpp b/Source/Core/Core/BootManager.cpp index c3cc17e..7bf601a 100644 --- a/Source/Core/Core/BootManager.cpp +++ b/Source/Core/Core/BootManager.cpp @@ -219,10 +219,13 @@ bool BootCore(const std::string& _rFilename) StartUp.bFastDiscSpeed = Movie::IsFastDiscSpeed(); StartUp.iCPUCore = Movie::GetCPUMode(); StartUp.bSyncGPU = Movie::IsSyncGPU(); - if (Movie::IsUsingMemcard() && Movie::IsStartingFromClearSave() && !StartUp.bWii) + for (int i = 0; i < 2; ++i) { - if (File::Exists(File::GetUserPath(D_GCUSER_IDX) + "Movie.raw")) - File::Delete(File::GetUserPath(D_GCUSER_IDX) + "Movie.raw"); + if (Movie::IsUsingMemcard(i) && Movie::IsStartingFromClearSave() && !StartUp.bWii) + { + if (File::Exists(File::GetUserPath(D_GCUSER_IDX) + StringFromFormat("Movie%s.raw", (i == 0) ? "A" : "B"))) + File::Delete(File::GetUserPath(D_GCUSER_IDX) + StringFromFormat("Movie%s.raw", (i == 0) ? "A" : "B")); + } } } diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt index 4ef6cde..53b3881 100644 --- a/Source/Core/Core/CMakeLists.txt +++ b/Source/Core/Core/CMakeLists.txt @@ -148,7 +148,6 @@ set(SRCS ActionReplay.cpp IPC_HLE/WII_IPC_HLE_Device_usb_kbd.cpp IPC_HLE/WII_IPC_HLE_WiiMote.cpp IPC_HLE/WiiMote_HID_Attr.cpp - PowerPC/LUT_frsqrtex.cpp PowerPC/PowerPC.cpp PowerPC/PPCAnalyst.cpp PowerPC/PPCCache.cpp diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index d3b59ed..790aace 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -150,6 +150,7 @@ void SConfig::SaveSettings() SaveCoreSettings(ini); SaveMovieSettings(ini); SaveDSPSettings(ini); + SaveInputSettings(ini); SaveFifoPlayerSettings(ini); ini.Save(File::GetUserPath(F_DOLPHINCONFIG_IDX)); @@ -330,6 +331,13 @@ void SConfig::SaveDSPSettings(IniFile& ini) dsp->Set("CaptureLog", m_DSPCaptureLog); } +void SConfig::SaveInputSettings(IniFile& ini) +{ + IniFile::Section* input = ini.GetOrCreateSection("Input"); + + input->Set("BackgroundInput", m_BackgroundInput); +} + void SConfig::SaveFifoPlayerSettings(IniFile& ini) { IniFile::Section* fifoplayer = ini.GetOrCreateSection("FifoPlayer"); @@ -351,6 +359,7 @@ void SConfig::LoadSettings() LoadCoreSettings(ini); LoadMovieSettings(ini); LoadDSPSettings(ini); + LoadInputSettings(ini); LoadFifoPlayerSettings(ini); m_SYSCONF = new SysConf(); @@ -556,7 +565,14 @@ void SConfig::LoadDSPSettings(IniFile& ini) dsp->Get("Backend", &sBackend, BACKEND_NULLSOUND); #endif dsp->Get("Volume", &m_Volume, 100); - dsp->Get("CaptureLog", &m_DSPCaptureLog, false); + dsp->Get("CaptureLog", &m_DSPCaptureLog, false); +} + +void SConfig::LoadInputSettings(IniFile& ini) +{ + IniFile::Section* input = ini.GetOrCreateSection("Input"); + + input->Get("BackgroundInput", &m_BackgroundInput, false); } void SConfig::LoadFifoPlayerSettings(IniFile& ini) diff --git a/Source/Core/Core/ConfigManager.h b/Source/Core/Core/ConfigManager.h index a081ca8..d774907 100644 --- a/Source/Core/Core/ConfigManager.h +++ b/Source/Core/Core/ConfigManager.h @@ -98,6 +98,9 @@ struct SConfig : NonCopyable int m_Volume; std::string sBackend; + // Input settings + bool m_BackgroundInput; + SysConf* m_SYSCONF; // save settings @@ -123,6 +126,7 @@ struct SConfig : NonCopyable void SaveGameListSettings(IniFile& ini); void SaveCoreSettings(IniFile& ini); void SaveDSPSettings(IniFile& ini); + void SaveInputSettings(IniFile& ini); void SaveMovieSettings(IniFile& ini); void SaveFifoPlayerSettings(IniFile& ini); @@ -133,6 +137,7 @@ struct SConfig : NonCopyable void LoadGameListSettings(IniFile& ini); void LoadCoreSettings(IniFile& ini); void LoadDSPSettings(IniFile& ini); + void LoadInputSettings(IniFile& ini); void LoadMovieSettings(IniFile& ini); void LoadFifoPlayerSettings(IniFile& ini); diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp index 3fffedb..b7b1035 100644 --- a/Source/Core/Core/Core.cpp +++ b/Source/Core/Core/Core.cpp @@ -66,23 +66,23 @@ namespace Core { // Declarations and definitions -Common::Timer Timer; -volatile u32 DrawnFrame = 0; -u32 DrawnVideo = 0; +static Common::Timer Timer; +static volatile u32 DrawnFrame = 0; +static u32 DrawnVideo = 0; // Function forwarding -const char *Callback_ISOName(void); void Callback_WiimoteInterruptChannel(int _number, u16 _channelID, const void* _pData, u32 _Size); // Function declarations void EmuThread(); -bool g_bStopping = false; -bool g_bHwInit = false; -bool g_bStarted = false; -void *g_pWindowHandle = nullptr; -std::string g_stateFileName; -std::thread g_EmuThread; +static bool g_bStopping = false; +static bool g_bHwInit = false; +static bool g_bStarted = false; +static void *g_pWindowHandle = nullptr; +static std::string g_stateFileName; +static std::thread g_EmuThread; +static StoppedCallbackFunc s_onStoppedCb = nullptr; static std::thread g_cpu_thread; static bool g_requestRefreshInfo = false; @@ -138,11 +138,6 @@ void DisplayMessage(const std::string& message, int time_in_ms) } } -void Callback_DebuggerBreak() -{ - CCPU::Break(); -} - void *GetWindowHandle() { return g_pWindowHandle; @@ -155,7 +150,7 @@ bool IsRunning() bool IsRunningAndStarted() { - return g_bStarted; + return g_bStarted && !g_bStopping; } bool IsRunningInCurrentThread() @@ -191,8 +186,14 @@ bool Init() if (g_EmuThread.joinable()) { - PanicAlertT("Emu Thread already running"); - return false; + if (IsRunning()) + { + PanicAlertT("Emu Thread already running"); + return false; + } + + // The Emu Thread was stopped, synchronize with it. + g_EmuThread.join(); } g_CoreStartupParameter = _CoreParameter; @@ -226,12 +227,8 @@ bool Init() // Called from GUI thread void Stop() // - Hammertime! { - if (PowerPC::GetState() == PowerPC::CPU_POWERDOWN) - { - if (g_EmuThread.joinable()) - g_EmuThread.join(); + if (GetState() == CORE_STOPPING) return; - } const SCoreStartupParameter& _CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter; @@ -258,32 +255,10 @@ void Stop() // - Hammertime! g_video_backend->Video_ExitLoop(); } - - INFO_LOG(CONSOLE, "%s", StopMessage(true, "Stopping Emu thread ...").c_str()); - - g_EmuThread.join(); // Wait for emuthread to close. - - INFO_LOG(CONSOLE, "%s", StopMessage(true, "Main Emu thread stopped").c_str()); - - // Clear on screen messages that haven't expired - g_video_backend->Video_ClearMessages(); - - // Close the trace file - Core::StopTrace(); - - // Reload sysconf file in order to see changes committed during emulation - if (_CoreParameter.bWii) - SConfig::GetInstance().m_SYSCONF->Reload(); - - INFO_LOG(CONSOLE, "Stop [Main Thread]\t\t---- Shutdown complete ----"); - Movie::Shutdown(); - PatchEngine::Shutdown(); - - g_bStopping = false; } // Create the CPU thread, which is a CPU + Video thread in Single Core mode. -void CpuThread() +static void CpuThread() { const SCoreStartupParameter& _CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter; @@ -329,7 +304,7 @@ void CpuThread() return; } -void FifoPlayerThread() +static void FifoPlayerThread() { const SCoreStartupParameter& _CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter; @@ -478,6 +453,8 @@ void EmuThread() } } + INFO_LOG(CONSOLE, "%s", StopMessage(true, "Stopping Emu thread ...").c_str()); + // Wait for g_cpu_thread to exit INFO_LOG(CONSOLE, "%s", StopMessage(true, "Stopping CPU-GPU thread ...").c_str()); @@ -510,6 +487,27 @@ void EmuThread() Wiimote::Shutdown(); g_video_backend->Shutdown(); AudioCommon::ShutdownSoundStream(); + + INFO_LOG(CONSOLE, "%s", StopMessage(true, "Main Emu thread stopped").c_str()); + + // Clear on screen messages that haven't expired + g_video_backend->Video_ClearMessages(); + + // Close the trace file + Core::StopTrace(); + + // Reload sysconf file in order to see changes committed during emulation + if (_CoreParameter.bWii) + SConfig::GetInstance().m_SYSCONF->Reload(); + + INFO_LOG(CONSOLE, "Stop [Video Thread]\t\t---- Shutdown complete ----"); + Movie::Shutdown(); + PatchEngine::Shutdown(); + + g_bStopping = false; + + if (s_onStoppedCb) + s_onStoppedCb(); } // Set or get the running state @@ -534,15 +532,17 @@ void SetState(EState _State) EState GetState() { + if (g_bStopping) + return CORE_STOPPING; + if (g_bHwInit) { if (CCPU::IsStepping()) return CORE_PAUSE; - else if (g_bStopping) - return CORE_STOPPING; else return CORE_RUN; } + return CORE_UNINITIALIZED; } @@ -649,18 +649,6 @@ void Callback_VideoCopiedToXFB(bool video_update) Movie::FrameUpdate(); } -// Callback_ISOName: Let the DSP emulator get the game name -// -const char *Callback_ISOName() -{ - SCoreStartupParameter& params = - SConfig::GetInstance().m_LocalCoreStartupParameter; - if (params.m_strName.length() > 0) - return params.m_strName.c_str(); - else - return ""; -} - void UpdateTitle() { u32 ElapseTime = (u32)Timer.GetTimeDifference(); @@ -740,4 +728,15 @@ void UpdateTitle() } } +void Shutdown() +{ + if (g_EmuThread.joinable()) + g_EmuThread.join(); +} + +void SetOnStoppedCallback(StoppedCallbackFunc callback) +{ + s_onStoppedCb = callback; +} + } // Core diff --git a/Source/Core/Core/Core.h b/Source/Core/Core/Core.h index 862160d..de16154 100644 --- a/Source/Core/Core/Core.h +++ b/Source/Core/Core/Core.h @@ -17,6 +17,9 @@ #include "Common/CommonTypes.h" #include "Core/CoreParameter.h" +// TODO: ugly, remove +extern bool g_aspect_wide; + namespace Core { @@ -39,6 +42,7 @@ enum EState bool Init(); void Stop(); +void Shutdown(); std::string StopMessage(bool, std::string); @@ -81,4 +85,8 @@ void UpdateTitle(); // the return value of the first call should be passed in as the second argument of the second call. bool PauseAndLock(bool doLock, bool unpauseOnUnlock=true); +// for calling back into UI code without introducing a dependency on it in core +typedef void(*StoppedCallbackFunc)(void); +void SetOnStoppedCallback(StoppedCallbackFunc callback); + } // namespace diff --git a/Source/Core/Core/Core.vcxproj b/Source/Core/Core/Core.vcxproj index c0fdd8d..66926be 100644 --- a/Source/Core/Core/Core.vcxproj +++ b/Source/Core/Core/Core.vcxproj @@ -1,4 +1,4 @@ - + @@ -223,7 +223,6 @@ - @@ -358,7 +357,6 @@ - @@ -409,7 +407,6 @@ - @@ -466,4 +463,4 @@ - \ No newline at end of file + diff --git a/Source/Core/Core/Core.vcxproj.filters b/Source/Core/Core/Core.vcxproj.filters index 45d94d4..789f44a 100644 --- a/Source/Core/Core/Core.vcxproj.filters +++ b/Source/Core/Core/Core.vcxproj.filters @@ -1,4 +1,4 @@ - + @@ -602,9 +602,6 @@ PowerPC - - PowerPC - PowerPC @@ -1008,9 +1005,6 @@ HW %28Flipper/Hollywood%29\Wiimote\Emu - - HW %28Flipper/Hollywood%29\Wiimote\Emu - HW %28Flipper/Hollywood%29\Wiimote\Emu @@ -1161,9 +1155,6 @@ PowerPC - - PowerPC - PowerPC diff --git a/Source/Core/Core/CoreTiming.cpp b/Source/Core/Core/CoreTiming.cpp index 73dfd86..01e6f17 100644 --- a/Source/Core/Core/CoreTiming.cpp +++ b/Source/Core/Core/CoreTiming.cpp @@ -27,7 +27,7 @@ struct EventType std::string name; }; -std::vector event_types; +static std::vector event_types; struct BaseEvent { @@ -41,28 +41,28 @@ typedef LinkedListItem Event; // STATE_TO_SAVE static Event *first; static std::mutex tsWriteLock; -Common::FifoQueue tsQueue; +static Common::FifoQueue tsQueue; // event pools -Event *eventPool = nullptr; +static Event *eventPool = nullptr; int slicelength; -int maxSliceLength = MAX_SLICE_LENGTH; +static int maxSliceLength = MAX_SLICE_LENGTH; -s64 globalTimer; -s64 idledCycles; +static s64 globalTimer; +static s64 idledCycles; -u32 fakeDecStartValue; -u64 fakeDecStartTicks; -u64 fakeTBStartValue; -u64 fakeTBStartTicks; +static u32 fakeDecStartValue; +static u64 fakeDecStartTicks; +static u64 fakeTBStartValue; +static u64 fakeTBStartTicks; -int ev_lost; +static int ev_lost; -void (*advanceCallback)(int cyclesExecuted) = nullptr; +static void (*advanceCallback)(int cyclesExecuted) = nullptr; -Event* GetNewEvent() +static Event* GetNewEvent() { if (!eventPool) return new Event; @@ -72,7 +72,7 @@ Event* GetNewEvent() return ev; } -void FreeEvent(Event* ev) +static void FreeEvent(Event* ev) { ev->next = eventPool; eventPool = ev; @@ -136,7 +136,7 @@ void Shutdown() } } -void EventDoState(PointerWrap &p, BaseEvent* ev) +static void EventDoState(PointerWrap &p, BaseEvent* ev) { p.Do(ev->time); @@ -234,7 +234,7 @@ void ClearPendingEvents() } } -void AddEventToQueue(Event* ne) +static void AddEventToQueue(Event* ne) { Event* prev = nullptr; Event** pNext = &first; diff --git a/Source/Core/Core/DSP/DSPAccelerator.cpp b/Source/Core/Core/DSP/DSPAccelerator.cpp index 9bac980..c330d40 100644 --- a/Source/Core/Core/DSP/DSPAccelerator.cpp +++ b/Source/Core/Core/DSP/DSPAccelerator.cpp @@ -5,11 +5,11 @@ #include "Common/Common.h" #include "Common/MathUtil.h" +#include "Core/DSP/DSPAccelerator.h" #include "Core/DSP/DSPCore.h" #include "Core/DSP/DSPHost.h" #include "Core/DSP/DSPHWInterface.h" #include "Core/DSP/DSPInterpreter.h" - // The hardware adpcm decoder :) static s16 ADPCM_Step(u32& _rSamplePos) { diff --git a/Source/Core/Core/DSP/DSPAnalyzer.cpp b/Source/Core/Core/DSP/DSPAnalyzer.cpp index 919d815..14cbbc1 100644 --- a/Source/Core/Core/DSP/DSPAnalyzer.cpp +++ b/Source/Core/Core/DSP/DSPAnalyzer.cpp @@ -60,12 +60,12 @@ const u16 idle_skip_sigs[NUM_IDLE_SIGS][MAX_IDLE_SIG_SIZE + 1] = 0, 0 } }; -void Reset() +static void Reset() { memset(code_flags, 0, sizeof(code_flags)); } -void AnalyzeRange(int start_addr, int end_addr) +static void AnalyzeRange(int start_addr, int end_addr) { // First we run an extremely simplified version of a disassembler to find // where all instructions start. diff --git a/Source/Core/Core/DSP/DSPAssembler.cpp b/Source/Core/Core/DSP/DSPAssembler.cpp index 0ac98bf..af68723 100644 --- a/Source/Core/Core/DSP/DSPAssembler.cpp +++ b/Source/Core/Core/DSP/DSPAssembler.cpp @@ -160,14 +160,7 @@ void DSPAssembler::ShowError(err_t err_code, const char *extra_info) last_error = err_code; } -char *skip_spaces(char *ptr) -{ - while (*ptr == ' ') - ptr++; - return ptr; -} - -const char *skip_spaces(const char *ptr) +static char *skip_spaces(char *ptr) { while (*ptr == ' ') ptr++; @@ -510,7 +503,7 @@ const opc_t *DSPAssembler::FindOpcode(const char *opcode, u32 par_count, const o } // weird... -u16 get_mask_shifted_down(u16 mask) +static u16 get_mask_shifted_down(u16 mask) { while (!(mask & 1)) mask >>= 1; diff --git a/Source/Core/Core/DSP/DSPCodeUtil.cpp b/Source/Core/Core/DSP/DSPCodeUtil.cpp index 3d4050d..977e9bd 100644 --- a/Source/Core/Core/DSP/DSPCodeUtil.cpp +++ b/Source/Core/Core/DSP/DSPCodeUtil.cpp @@ -2,6 +2,7 @@ // Licensed under GPLv2 // Refer to the license.txt file included. +#include #include #include #include @@ -59,7 +60,7 @@ bool Compare(const std::vector &code1, const std::vector &code2) if (code1.size() != code2.size()) printf("Size difference! 1=%i 2=%i\n", (int)code1.size(), (int)code2.size()); u32 count_equal = 0; - const int min_size = (int)std::min(code1.size(), code2.size()); + const int min_size = std::min(code1.size(), code2.size()); AssemblerSettings settings; DSPDisassembler disassembler(settings); @@ -73,9 +74,9 @@ bool Compare(const std::vector &code1, const std::vector &code2) { std::string line1, line2; u16 pc = i; - disassembler.DisOpcode(&code1[0], 0x0000, 2, &pc, line1); + disassembler.DisassembleOpcode(&code1[0], 0x0000, 2, &pc, line1); pc = i; - disassembler.DisOpcode(&code2[0], 0x0000, 2, &pc, line2); + disassembler.DisassembleOpcode(&code2[0], 0x0000, 2, &pc, line2); printf("!! %04x : %04x vs %04x - %s vs %s\n", i, code1[i], code2[i], line1.c_str(), line2.c_str()); } } @@ -87,7 +88,7 @@ bool Compare(const std::vector &code1, const std::vector &code2) { u16 pc = i; std::string line; - disassembler.DisOpcode(&longest[0], 0x0000, 2, &pc, line); + disassembler.DisassembleOpcode(&longest[0], 0x0000, 2, &pc, line); printf("!! %s\n", line.c_str()); } } diff --git a/Source/Core/Core/DSP/DSPCore.cpp b/Source/Core/Core/DSP/DSPCore.cpp index dfa483c..c85fde7 100644 --- a/Source/Core/Core/DSP/DSPCore.cpp +++ b/Source/Core/Core/DSP/DSPCore.cpp @@ -38,12 +38,12 @@ SDSP g_dsp; DSPBreakpoints dsp_breakpoints; -DSPCoreState core_state = DSPCORE_STOP; +static DSPCoreState core_state = DSPCORE_STOP; u16 cyclesLeft = 0; bool init_hax = false; DSPEmitter *dspjit = nullptr; std::unique_ptr g_dsp_cap; -Common::Event step_event; +static Common::Event step_event; // Returns false if the hash fails and the user hits "Yes" static bool VerifyRoms() diff --git a/Source/Core/Core/DSP/DSPDisassembler.cpp b/Source/Core/Core/DSP/DSPDisassembler.cpp index fa0bf1c..7243cfd 100644 --- a/Source/Core/Core/DSP/DSPDisassembler.cpp +++ b/Source/Core/Core/DSP/DSPDisassembler.cpp @@ -23,26 +23,18 @@ ====================================================================*/ -#include +#include #include +#include #include #include "Common/Common.h" #include "Common/FileUtil.h" +#include "Common/StringUtil.h" #include "Core/DSP/DSPDisassembler.h" #include "Core/DSP/DSPTables.h" -#ifdef _MSC_VER -#pragma warning(disable:4996) -#endif - -#ifndef MAX_PATH -#include // For MAX_PATH -#endif - -extern void nop(const UDSPInstruction opc); - DSPDisassembler::DSPDisassembler(const AssemblerSettings &settings) : settings_(settings) { @@ -52,7 +44,7 @@ DSPDisassembler::~DSPDisassembler() { // Some old code for logging unknown ops. std::string filename = File::GetUserPath(D_DUMPDSP_IDX) + "UnkOps.txt"; - File::IOFile uo(filename, "w"); + std::ofstream uo(filename); if (!uo) return; @@ -62,17 +54,20 @@ DSPDisassembler::~DSPDisassembler() if (entry.second > 0) { count++; - fprintf(uo.GetHandle(), "OP%04x\t%d", entry.first, entry.second); + uo << StringFromFormat("OP%04x\t%d", entry.first, entry.second); for (int j = 15; j >= 0; j--) // print op bits { if ((j & 0x3) == 3) - fprintf(uo.GetHandle(), "\tb"); - fprintf(uo.GetHandle(), "%d", (entry.first >> j) & 0x1); + uo << "\tb"; + + uo << StringFromFormat("%d", (entry.first >> j) & 0x1); } - fprintf(uo.GetHandle(), "\n"); + + uo << "\n"; } } - fprintf(uo.GetHandle(), "Unknown opcodes count: %d\n", count); + + uo << StringFromFormat("Unknown opcodes count: %d\n", count); } bool DSPDisassembler::Disassemble(int start_pc, const std::vector &code, int base_addr, std::string &text) @@ -86,16 +81,17 @@ bool DSPDisassembler::Disassemble(int start_pc, const std::vector &code, in } // Run the two passes. - return DisFile(tmp1, base_addr, 1, text) && DisFile(tmp1, base_addr, 2, text); + return DisassembleFile(tmp1, base_addr, 1, text) && DisassembleFile(tmp1, base_addr, 2, text); } -char *DSPDisassembler::DisParams(const DSPOPCTemplate& opc, u16 op1, u16 op2, char *strbuf) +std::string DSPDisassembler::DisassembleParameters(const DSPOPCTemplate& opc, u16 op1, u16 op2) { - char *buf = strbuf; + std::string buf; + for (int j = 0; j < opc.param_count; j++) { if (j > 0) - buf += sprintf(buf, ", "); + buf += ", "; u32 val = (opc.params[j].loc >= 1) ? op2 : op1; val &= opc.params[j].mask; @@ -122,16 +118,16 @@ char *DSPDisassembler::DisParams(const DSPOPCTemplate& opc, u16 op1, u16 op2, ch { case P_REG: if (settings_.decode_registers) - sprintf(buf, "$%s", pdregname(val)); + buf += StringFromFormat("$%s", pdregname(val)); else - sprintf(buf, "$%d", val); + buf += StringFromFormat("$%d", val); break; case P_PRG: if (settings_.decode_registers) - sprintf(buf, "@$%s", pdregname(val)); + buf += StringFromFormat("@$%s", pdregname(val)); else - sprintf(buf, "@$%d", val); + buf += StringFromFormat("@$%d", val); break; case P_VAL: @@ -139,23 +135,25 @@ char *DSPDisassembler::DisParams(const DSPOPCTemplate& opc, u16 op1, u16 op2, ch case P_ADDR_D: if (settings_.decode_names) { - sprintf(buf, "%s", pdname(val)); + buf += pdname(val); } else - sprintf(buf, "0x%04x", val); + { + buf += StringFromFormat("0x%04x", val); + } break; case P_IMM: if (opc.params[j].size != 2) { if (opc.params[j].mask == 0x003f) // LSL, LSR, ASL, ASR - sprintf(buf, "#%d", (val & 0x20) ? (val | 0xFFFFFFC0) : val); // 6-bit sign extension + buf += StringFromFormat("#%d", (val & 0x20) ? (val | 0xFFFFFFC0) : val); // 6-bit sign extension else - sprintf(buf, "#0x%02x", val); + buf += StringFromFormat("#0x%02x", val); } else { - sprintf(buf, "#0x%04x", val); + buf += StringFromFormat("#0x%04x", val); } break; @@ -164,41 +162,30 @@ char *DSPDisassembler::DisParams(const DSPOPCTemplate& opc, u16 op1, u16 op2, ch val = (u16)(s16)(s8)val; if (settings_.decode_names) - sprintf(buf, "@%s", pdname(val)); + buf += StringFromFormat("@%s", pdname(val)); else - sprintf(buf, "@0x%04x", val); + buf += StringFromFormat("@0x%04x", val); break; default: ERROR_LOG(DSPLLE, "Unknown parameter type: %x", opc.params[j].type); break; } - - buf += strlen(buf); } - return strbuf; + return buf; } -static void MakeLowerCase(char *ptr) +static std::string MakeLowerCase(std::string in) { - int i = 0; - while (ptr[i]) - { - ptr[i] = tolower(ptr[i]); - i++; - } + std::transform(in.begin(), in.end(), in.begin(), ::tolower); + + return in; } -bool DSPDisassembler::DisOpcode(const u16 *binbuf, int base_addr, int pass, u16 *pc, std::string &dest) +bool DSPDisassembler::DisassembleOpcode(const u16 *binbuf, int base_addr, int pass, u16 *pc, std::string &dest) { - char buffer[256]; - char *buf = buffer; - - // Start with 8 spaces, if there's no label. - buf[0] = ' '; - buf[1] = '\0'; - buf++; + std::string buf(" "); if ((*pc & 0x7fff) >= 0x1000) { @@ -230,14 +217,15 @@ bool DSPDisassembler::DisOpcode(const u16 *binbuf, int base_addr, int pass, u16 bool extended = false; bool only7bitext = false; - if (((opc->opcode >> 12) == 0x3) && (op1 & 0x007f)) { + if (((opc->opcode >> 12) == 0x3) && (op1 & 0x007f)) + { extended = true; only7bitext = true; } else if (((opc->opcode >> 12) > 0x3) && (op1 & 0x00ff)) + { extended = true; - else - extended = false; + } if (extended) { @@ -245,14 +233,16 @@ bool DSPDisassembler::DisOpcode(const u16 *binbuf, int base_addr, int pass, u16 // find opcode for (int j = 0; j < opcodes_ext_size; j++) { - if (only7bitext) { + if (only7bitext) + { if (((op1 & 0x7f) & opcodes_ext[j].opcode_mask) == opcodes_ext[j].opcode) { opc_ext = &opcodes_ext[j]; break; } } - else { + else + { if ((op1 & opcodes_ext[j].opcode_mask) == opcodes_ext[j].opcode) { opc_ext = &opcodes_ext[j]; @@ -265,7 +255,7 @@ bool DSPDisassembler::DisOpcode(const u16 *binbuf, int base_addr, int pass, u16 // printing if (settings_.show_pc) - buf += sprintf(buf, "%04x ", *pc); + buf += StringFromFormat("%04x ", *pc); u32 op2; @@ -274,54 +264,52 @@ bool DSPDisassembler::DisOpcode(const u16 *binbuf, int base_addr, int pass, u16 { op2 = binbuf[(*pc + 1) & 0x0fff]; if (settings_.show_hex) - buf += sprintf(buf, "%04x %04x ", op1, op2); + buf += StringFromFormat("%04x %04x ", op1, op2); } else { op2 = 0; if (settings_.show_hex) - buf += sprintf(buf, "%04x ", op1); + buf += StringFromFormat("%04x ", op1); } - char opname[20]; - strcpy(opname, opc->name); + std::string opname = opc->name; if (settings_.lower_case_ops) - MakeLowerCase(opname); - char ext_buf[20]; + opname = MakeLowerCase(opname); + + std::string ext_buf; if (extended) - sprintf(ext_buf, "%s%c%s", opname, settings_.ext_separator, opc_ext->name); + ext_buf = StringFromFormat("%s%c%s", opname.c_str(), settings_.ext_separator, opc_ext->name); else - sprintf(ext_buf, "%s", opname); + ext_buf = opname; if (settings_.lower_case_ops) - MakeLowerCase(ext_buf); + ext_buf = MakeLowerCase(ext_buf); if (settings_.print_tabs) - buf += sprintf(buf, "%s\t", ext_buf); + buf += StringFromFormat("%s\t", ext_buf.c_str()); else - buf += sprintf(buf, "%-12s", ext_buf); + buf += StringFromFormat("%-12s", ext_buf.c_str()); if (opc->param_count > 0) - DisParams(*opc, op1, op2, buf); - - buf += strlen(buf); + buf += DisassembleParameters(*opc, op1, op2); // Handle opcode extension. if (extended) { if (opc->param_count > 0) - buf += sprintf(buf, " "); - buf += sprintf(buf, ": "); - if (opc_ext->param_count > 0) - DisParams(*opc_ext, op1, op2, buf); + buf += " "; + + buf += ": "; - buf += strlen(buf); + if (opc_ext->param_count > 0) + buf += DisassembleParameters(*opc_ext, op1, op2); } if (opc->opcode_mask == 0) { // unknown opcode unk_opcodes[op1]++; - sprintf(buf, "\t\t; *** UNKNOWN OPCODE ***"); + buf += "\t\t; *** UNKNOWN OPCODE ***"; } if (extended) @@ -330,11 +318,12 @@ bool DSPDisassembler::DisOpcode(const u16 *binbuf, int base_addr, int pass, u16 *pc += opc->size; if (pass == 2) - dest.append(buffer); + dest.append(buf); + return true; } -bool DSPDisassembler::DisFile(const std::string& name, int base_addr, int pass, std::string &output) +bool DSPDisassembler::DisassembleFile(const std::string& name, int base_addr, int pass, std::string &output) { File::IOFile in(name, "rb"); if (!in) @@ -344,17 +333,17 @@ bool DSPDisassembler::DisFile(const std::string& name, int base_addr, int pass, } const int size = ((int)in.GetSize() & ~1) / 2; - u16 *const binbuf = new u16[size]; - in.ReadArray(binbuf, size); + std::vector binbuf(size); + in.ReadArray(binbuf.data(), size); in.Close(); // Actually do the disassembly. for (u16 pc = 0; pc < size;) { - DisOpcode(binbuf, base_addr, pass, &pc, output); + DisassembleOpcode(binbuf.data(), base_addr, pass, &pc, output); if (pass == 2) output.append("\n"); } - delete[] binbuf; + return true; } diff --git a/Source/Core/Core/DSP/DSPDisassembler.h b/Source/Core/Core/DSP/DSPDisassembler.h index d5c1522..3bc0c30 100644 --- a/Source/Core/Core/DSP/DSPDisassembler.h +++ b/Source/Core/Core/DSP/DSPDisassembler.h @@ -70,13 +70,13 @@ class DSPDisassembler // Warning - this one is trickier to use right. // Use pass == 2 if you're just using it by itself. - bool DisOpcode(const u16 *binbuf, int base_addr, int pass, u16 *pc, std::string &dest); + bool DisassembleOpcode(const u16 *binbuf, int base_addr, int pass, u16 *pc, std::string &dest); private: // Moves PC forward and writes the result to dest. - bool DisFile(const std::string& name, int base_addr, int pass, std::string &output); + bool DisassembleFile(const std::string& name, int base_addr, int pass, std::string &output); - char* DisParams(const DSPOPCTemplate& opc, u16 op1, u16 op2, char* strbuf); + std::string DisassembleParameters(const DSPOPCTemplate& opc, u16 op1, u16 op2); std::map unk_opcodes; const AssemblerSettings settings_; diff --git a/Source/Core/Core/DSP/DSPInterpreter.cpp b/Source/Core/Core/DSP/DSPInterpreter.cpp index 4898dbe..89b300c 100644 --- a/Source/Core/Core/DSP/DSPInterpreter.cpp +++ b/Source/Core/Core/DSP/DSPInterpreter.cpp @@ -31,7 +31,7 @@ namespace DSPInterpreter { -volatile u32 gdsp_running; +static volatile u32 gdsp_running; // NOTE: These have nothing to do with g_dsp.r.cr ! diff --git a/Source/Core/Core/DSP/DSPTables.h b/Source/Core/Core/DSP/DSPTables.h index 49e3ac9..04255f6 100644 --- a/Source/Core/Core/DSP/DSPTables.h +++ b/Source/Core/Core/DSP/DSPTables.h @@ -54,6 +54,8 @@ enum partype_t #define OPTABLE_SIZE 0xffff + 1 #define EXT_OPTABLE_SIZE 0xff + 1 +void nop(const UDSPInstruction opc); + typedef void (*dspIntFunc)(const UDSPInstruction); typedef void (DSPEmitter::*dspJitFunc)(const UDSPInstruction); diff --git a/Source/Core/Core/DSP/Jit/DSPJitBranch.cpp b/Source/Core/Core/DSP/Jit/DSPJitBranch.cpp index 2086183..abf9e70 100644 --- a/Source/Core/Core/DSP/Jit/DSPJitBranch.cpp +++ b/Source/Core/Core/DSP/Jit/DSPJitBranch.cpp @@ -117,7 +117,7 @@ static void WriteBlockLink(DSPEmitter& emitter, u16 dest) } } -void r_jcc(const UDSPInstruction opc, DSPEmitter& emitter) +static void r_jcc(const UDSPInstruction opc, DSPEmitter& emitter) { u16 dest = dsp_imem_read(emitter.compilePC + 1); const DSPOPCTemplate *opcode = GetOpTemplate(opc); @@ -141,7 +141,7 @@ void DSPEmitter::jcc(const UDSPInstruction opc) ReJitConditional(opc, *this); } -void r_jmprcc(const UDSPInstruction opc, DSPEmitter& emitter) +static void r_jmprcc(const UDSPInstruction opc, DSPEmitter& emitter) { u8 reg = (opc >> 5) & 0x7; //reg can only be DSP_REG_ARx and DSP_REG_IXx now, @@ -161,7 +161,7 @@ void DSPEmitter::jmprcc(const UDSPInstruction opc) ReJitConditional(opc, *this); } -void r_call(const UDSPInstruction opc, DSPEmitter& emitter) +static void r_call(const UDSPInstruction opc, DSPEmitter& emitter) { emitter.MOV(16, R(DX), Imm16(emitter.compilePC + 2)); emitter.dsp_reg_store_stack(DSP_STACK_C); @@ -188,7 +188,7 @@ void DSPEmitter::call(const UDSPInstruction opc) ReJitConditional(opc, *this); } -void r_callr(const UDSPInstruction opc, DSPEmitter& emitter) +static void r_callr(const UDSPInstruction opc, DSPEmitter& emitter) { u8 reg = (opc >> 5) & 0x7; emitter.MOV(16, R(DX), Imm16(emitter.compilePC + 1)); @@ -210,7 +210,7 @@ void DSPEmitter::callr(const UDSPInstruction opc) ReJitConditional(opc, *this); } -void r_ifcc(const UDSPInstruction opc, DSPEmitter& emitter) +static void r_ifcc(const UDSPInstruction opc, DSPEmitter& emitter) { emitter.MOV(16, M(&g_dsp.pc), Imm16(emitter.compilePC + 1)); } @@ -226,7 +226,7 @@ void DSPEmitter::ifcc(const UDSPInstruction opc) WriteBranchExit(*this); } -void r_ret(const UDSPInstruction opc, DSPEmitter& emitter) +static void r_ret(const UDSPInstruction opc, DSPEmitter& emitter) { emitter.dsp_reg_load_stack(DSP_STACK_C); emitter.MOV(16, M(&g_dsp.pc), R(DX)); diff --git a/Source/Core/Core/Debugger/Debugger_SymbolMap.cpp b/Source/Core/Core/Debugger/Debugger_SymbolMap.cpp index 112c4c3..28ea593 100644 --- a/Source/Core/Core/Debugger/Debugger_SymbolMap.cpp +++ b/Source/Core/Core/Debugger/Debugger_SymbolMap.cpp @@ -37,12 +37,12 @@ void AddAutoBreakpoints() } // Returns true if the address is not a valid RAM address or NULL. -bool IsStackBottom(u32 addr) +static bool IsStackBottom(u32 addr) { return !addr || !Memory::IsRAMAddress(addr); } -void WalkTheStack(const std::function& stack_step) +static void WalkTheStack(const std::function& stack_step) { if (!IsStackBottom(PowerPC::ppcState.gpr[1])) { @@ -69,8 +69,7 @@ void WalkTheStack(const std::function& stack_step) // instead of "pointing ahead" bool GetCallstack(std::vector &output) { - if (Core::GetState() == Core::CORE_UNINITIALIZED || - !Memory::IsRAMAddress(PowerPC::ppcState.gpr[1])) + if (!Core::IsRunning() || !Memory::IsRAMAddress(PowerPC::ppcState.gpr[1])) return false; if (LR == 0) diff --git a/Source/Core/Core/GeckoCode.cpp b/Source/Core/Core/GeckoCode.cpp index df01a15..dd0c6c5 100644 --- a/Source/Core/Core/GeckoCode.cpp +++ b/Source/Core/Core/GeckoCode.cpp @@ -45,7 +45,7 @@ bool GeckoCode::Compare(GeckoCode compare) const static bool code_handler_installed = false; // the currently active codes -std::vector active_codes; +static std::vector active_codes; static std::mutex active_codes_lock; void SetActiveCodes(const std::vector& gcodes) @@ -68,7 +68,7 @@ void SetActiveCodes(const std::vector& gcodes) code_handler_installed = false; } -bool InstallCodeHandler() +static bool InstallCodeHandler() { u32 codelist_location = 0x800028B8; // Debugger on location (0x800022A8 = Debugger off, using codehandleronly.bin) std::string data; diff --git a/Source/Core/Core/GeckoCodeConfig.cpp b/Source/Core/Core/GeckoCodeConfig.cpp index c2a3f11..5c2a417 100644 --- a/Source/Core/Core/GeckoCodeConfig.cpp +++ b/Source/Core/Core/GeckoCodeConfig.cpp @@ -97,7 +97,7 @@ void LoadCodes(const IniFile& globalIni, const IniFile& localIni, std::vector& lines, std::vector& enabledLines, const GeckoCode& gcode) +static void SaveGeckoCode(std::vector& lines, std::vector& enabledLines, const GeckoCode& gcode) { if (gcode.enabled) enabledLines.push_back("$" + gcode.name); diff --git a/Source/Core/Core/HLE/HLE_Misc.cpp b/Source/Core/Core/HLE/HLE_Misc.cpp index 01648f8..633c4fc 100644 --- a/Source/Core/Core/HLE/HLE_Misc.cpp +++ b/Source/Core/Core/HLE/HLE_Misc.cpp @@ -11,6 +11,7 @@ #include "Core/Host.h" #include "Core/Boot/Boot_DOL.h" #include "Core/HLE/HLE.h" +#include "Core/HLE/HLE_Misc.h" #include "Core/HLE/HLE_OS.h" #include "Core/HW/Memmap.h" #include "Core/IPC_HLE/WII_IPC_HLE_Device_DI.h" @@ -29,8 +30,7 @@ namespace HLE_Misc { -std::string args; -u32 argsPtr; +static std::string args; // If you just want to kill a function, one of the three following are usually appropriate. // According to the PPC ABI, the return value is always in r3. diff --git a/Source/Core/Core/HLE/HLE_OS.cpp b/Source/Core/Core/HLE/HLE_OS.cpp index 9aef24d..1338d96 100644 --- a/Source/Core/Core/HLE/HLE_OS.cpp +++ b/Source/Core/Core/HLE/HLE_OS.cpp @@ -46,36 +46,6 @@ void HLE_GeneralDebugPrint() NOTICE_LOG(OSREPORT, "%08x->%08x| %s", LR, PC, ReportMessage.c_str()); } -void HLE_VPrintf() -{ - std::string ReportMessage; - u32 r4 = GPR(4); - u32 offset = Memory::Read_U32(r4+8); - u32 check = Memory::Read_U32(r4); - //NOTICE_LOG(OSREPORT, "Offset: %08X, Check %08X", offset, check); - for (int i = 4; i<= 10; i++) - { - GPR(i) = Memory::Read_U32(offset+(i-(check == 0x01000000? 3 : 2))*4); - //NOTICE_LOG(OSREPORT, "r%d: %08X",i, GPR(i)); - } - - GetStringVA(ReportMessage); - - NPC = LR; - - NOTICE_LOG(OSREPORT, "%08x->%08x| %s", LR, PC, ReportMessage.c_str()); -} -// Generalized func for just printing string pointed to by r3. -void HLE_GeneralDebugPrintWithInt() -{ - std::string ReportMessage; - GetStringVA(ReportMessage, 5); - NPC = LR; - - //PanicAlert("(%08x->%08x) %s", LR, PC, ReportMessage.c_str()); - NOTICE_LOG(OSREPORT, "%08x->%08x| %s", LR, PC, ReportMessage.c_str()); -} - // __write_console is slightly abnormal void HLE_write_console() { diff --git a/Source/Core/Core/HW/AudioInterface.cpp b/Source/Core/Core/HW/AudioInterface.cpp index 2b9746d..0b8b5ea 100644 --- a/Source/Core/Core/HW/AudioInterface.cpp +++ b/Source/Core/Core/HW/AudioInterface.cpp @@ -147,7 +147,7 @@ static void GenerateAudioInterrupt(); static void UpdateInterrupts(); static void IncreaseSampleCount(const u32 _uAmount); static u64 GetAIPeriod(); -int et_AI; +static int et_AI; void Init() { diff --git a/Source/Core/Core/HW/BBA-TAP/TAP_Unix.cpp b/Source/Core/Core/HW/BBA-TAP/TAP_Unix.cpp index de4bbe6..a8d1bfe 100644 --- a/Source/Core/Core/HW/BBA-TAP/TAP_Unix.cpp +++ b/Source/Core/Core/HW/BBA-TAP/TAP_Unix.cpp @@ -106,7 +106,7 @@ bool CEXIETHERNET::SendFrame(u8* frame, u32 size) #endif } -void ReadThreadHandler(CEXIETHERNET* self) +static void ReadThreadHandler(CEXIETHERNET* self) { while (true) { diff --git a/Source/Core/Core/HW/DSP.cpp b/Source/Core/Core/HW/DSP.cpp index 181ff65..cac9f3f 100644 --- a/Source/Core/Core/HW/DSP.cpp +++ b/Source/Core/Core/HW/DSP.cpp @@ -180,7 +180,7 @@ static ARAM_Info g_ARAM_Info; static u16 g_AR_MODE; static u16 g_AR_REFRESH; -DSPEmulator *dsp_emulator; +static DSPEmulator *dsp_emulator; static int dsp_slice = 0; static bool dsp_is_lle = false; @@ -210,9 +210,9 @@ void WriteARAM(u8 _iValue, u32 _iAddress); bool Update_DSP_ReadRegister(); void Update_DSP_WriteRegister(); -int et_GenerateDSPInterrupt; +static int et_GenerateDSPInterrupt; -void GenerateDSPInterrupt_Wrapper(u64 userdata, int cyclesLate) +static void GenerateDSPInterrupt_Wrapper(u64 userdata, int cyclesLate) { GenerateDSPInterrupt((DSPInterruptType)(userdata&0xFFFF), (bool)((userdata>>16) & 1)); } diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/UCodes.h b/Source/Core/Core/HW/DSPHLE/UCodes/UCodes.h index ae007a6..f952cb5 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/UCodes.h +++ b/Source/Core/Core/HW/DSPHLE/UCodes/UCodes.h @@ -136,4 +136,4 @@ class UCodeInterface bool m_needs_resume_mail; }; -extern UCodeInterface* UCodeFactory(u32 crc, DSPHLE *dsphle, bool wii); +UCodeInterface* UCodeFactory(u32 crc, DSPHLE *dsphle, bool wii); diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/ZeldaVoice.cpp b/Source/Core/Core/HW/DSPHLE/UCodes/ZeldaVoice.cpp index b173067..1aa91b9 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/ZeldaVoice.cpp +++ b/Source/Core/Core/HW/DSPHLE/UCodes/ZeldaVoice.cpp @@ -91,7 +91,7 @@ void ZeldaUCode::Resample(ZeldaVoicePB &PB, int size, s16 *in, s32 *out, bool do PB.CurSampleFrac = position & 0xFFFF; } -void UpdateSampleCounters10(ZeldaVoicePB &PB) +static void UpdateSampleCounters10(ZeldaVoicePB &PB) { PB.RemLength = PB.Length - PB.RestartPos; PB.CurAddr = PB.StartAddr + (PB.RestartPos << 1); @@ -149,7 +149,7 @@ void ZeldaUCode::RenderVoice_PCM16(ZeldaVoicePB &PB, s16 *_Buffer, int _Size) PB.CurAddr += rem_samples << 1; } -void UpdateSampleCounters8(ZeldaVoicePB &PB) +static void UpdateSampleCounters8(ZeldaVoicePB &PB) { PB.RemLength = PB.Length - PB.RestartPos; PB.CurAddr = PB.StartAddr + PB.RestartPos; diff --git a/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp b/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp index 6d8d322..26a12a9 100644 --- a/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp +++ b/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp @@ -37,8 +37,8 @@ DSPLLE::DSPLLE() m_cycle_count = 0; } -Common::Event dspEvent; -Common::Event ppcEvent; +static Common::Event dspEvent; +static Common::Event ppcEvent; void DSPLLE::DoState(PointerWrap &p) { diff --git a/Source/Core/Core/HW/DSPLLE/DSPSymbols.cpp b/Source/Core/Core/HW/DSPLLE/DSPSymbols.cpp index 3b92a35..78b6b34 100644 --- a/Source/Core/Core/HW/DSPLLE/DSPSymbols.cpp +++ b/Source/Core/Core/HW/DSPLLE/DSPSymbols.cpp @@ -20,11 +20,11 @@ namespace DSPSymbols DSPSymbolDB g_dsp_symbol_db; -std::map addr_to_line; -std::map line_to_addr; -std::map line_to_symbol; -std::vector lines; -int line_counter = 0; +static std::map addr_to_line; +static std::map line_to_addr; +static std::map line_to_symbol; +static std::vector lines; +static int line_counter = 0; int Addr2Line(u16 address) // -1 for not found { @@ -75,11 +75,6 @@ Symbol *DSPSymbolDB::GetSymbolFromAddr(u32 addr) return nullptr; } -void DisassembleRange(u16 start, u16 end) -{ - // TODO: ? -} - bool ReadAnnotatedAssembly(const std::string& filename) { File::IOFile f(filename, "r"); @@ -233,7 +228,7 @@ void AutoDisassembly(u16 start_addr, u16 end_addr) addr_to_line[addr] = line_counter; std::string buf; - if (!disasm.DisOpcode(ptr, 0, 2, &addr, buf)) + if (!disasm.DisassembleOpcode(ptr, 0, 2, &addr, buf)) { ERROR_LOG(DSPLLE, "disasm failed at %04x", addr); break; diff --git a/Source/Core/Core/HW/DVDInterface.cpp b/Source/Core/Core/HW/DVDInterface.cpp index 7507a63..7e4ebf5 100644 --- a/Source/Core/Core/HW/DVDInterface.cpp +++ b/Source/Core/Core/HW/DVDInterface.cpp @@ -206,11 +206,11 @@ static u32 CurrentStart; static u32 LoopLength; static u32 CurrentLength; -u32 g_ErrorCode = 0; -bool g_bDiscInside = false; +static u32 g_ErrorCode = 0; +static bool g_bDiscInside = false; bool g_bStream = false; -int tc = 0; -int dtk = 0; +static int tc = 0; +static int dtk = 0; static u64 g_last_read_offset; static u64 g_last_read_time; @@ -255,7 +255,7 @@ void DoState(PointerWrap &p) p.Do(g_last_read_time); } -void TransferComplete(u64 userdata, int cyclesLate) +static void TransferComplete(u64 userdata, int cyclesLate) { if (m_DICR.TSTART) FinishExecuteRead(); @@ -297,7 +297,7 @@ static u32 ProcessDTKSamples(short *tempPCM, u32 num_samples) return samples_processed; } -void DTKStreamingCallback(u64 userdata, int cyclesLate) +static void DTKStreamingCallback(u64 userdata, int cyclesLate) { // Send audio to the mixer. static const int NUM_SAMPLES = 48000 / 2000 * 7; // 3.5ms of 48kHz samples diff --git a/Source/Core/Core/HW/EXI.cpp b/Source/Core/Core/HW/EXI.cpp index 24846e8..a6bdcc3 100644 --- a/Source/Core/Core/HW/EXI.cpp +++ b/Source/Core/Core/HW/EXI.cpp @@ -21,22 +21,25 @@ namespace ExpansionInterface static int changeDevice; -CEXIChannel *g_Channels[MAX_EXI_CHANNELS]; +static CEXIChannel *g_Channels[MAX_EXI_CHANNELS]; void Init() { - initSRAM(); + InitSRAM(); for (u32 i = 0; i < MAX_EXI_CHANNELS; i++) g_Channels[i] = new CEXIChannel(i); - if (Movie::IsPlayingInput() && Movie::IsUsingMemcard() && Movie::IsConfigSaved()) - g_Channels[0]->AddDevice(EXIDEVICE_MEMORYCARD, 0); // SlotA - else if (Movie::IsPlayingInput() && !Movie::IsUsingMemcard() && Movie::IsConfigSaved()) - g_Channels[0]->AddDevice(EXIDEVICE_NONE, 0); // SlotA + if (Movie::IsPlayingInput() && Movie::IsConfigSaved()) + { + g_Channels[0]->AddDevice(Movie::IsUsingMemcard(0) ? EXIDEVICE_MEMORYCARD : EXIDEVICE_NONE, 0); // SlotA + g_Channels[1]->AddDevice(Movie::IsUsingMemcard(1) ? EXIDEVICE_MEMORYCARD : EXIDEVICE_NONE, 0); // SlotB + } else + { g_Channels[0]->AddDevice(SConfig::GetInstance().m_EXIDevice[0], 0); // SlotA + g_Channels[1]->AddDevice(SConfig::GetInstance().m_EXIDevice[1], 0); // SlotB + } g_Channels[0]->AddDevice(EXIDEVICE_MASKROM, 1); g_Channels[0]->AddDevice(SConfig::GetInstance().m_EXIDevice[2], 2); // Serial Port 1 - g_Channels[1]->AddDevice(SConfig::GetInstance().m_EXIDevice[1], 0); // SlotB g_Channels[2]->AddDevice(EXIDEVICE_AD16, 0); changeDevice = CoreTiming::RegisterEvent("ChangeEXIDevice", ChangeDeviceCallback); @@ -94,6 +97,11 @@ void ChangeDevice(const u8 channel, const TEXIDevices device_type, const u8 devi CoreTiming::ScheduleEvent_Threadsafe(500000000, changeDevice, ((u64)channel << 32) | ((u64)device_type << 16) | device_num); } +CEXIChannel* GetChannel(u32 index) +{ + return g_Channels[index]; +} + IEXIDevice* FindDevice(TEXIDevices device_type, int customIndex) { for (auto& channel : g_Channels) diff --git a/Source/Core/Core/HW/EXI.h b/Source/Core/Core/HW/EXI.h index 23cda91..c541187 100644 --- a/Source/Core/Core/HW/EXI.h +++ b/Source/Core/Core/HW/EXI.h @@ -31,6 +31,9 @@ void UpdateInterrupts(); void ChangeDeviceCallback(u64 userdata, int cyclesLate); void ChangeDevice(const u8 channel, const TEXIDevices device_type, const u8 device_num); + +CEXIChannel* GetChannel(u32 index); + IEXIDevice* FindDevice(TEXIDevices device_type, int customIndex=-1); } // end of namespace ExpansionInterface diff --git a/Source/Core/Core/HW/EXI_Channel.cpp b/Source/Core/Core/HW/EXI_Channel.cpp index 5e1a88c..4822aed 100644 --- a/Source/Core/Core/HW/EXI_Channel.cpp +++ b/Source/Core/Core/HW/EXI_Channel.cpp @@ -123,7 +123,6 @@ void CEXIChannel::RegisterMMIO(MMIO::Mapping* mmio, u32 base) case EXI_READWRITE: pDevice->ImmReadWrite(m_ImmData, m_Control.TLEN + 1); break; default: _dbg_assert_msg_(EXPANSIONINTERFACE,0,"EXI Imm: Unknown transfer type %i", m_Control.RW); } - m_Control.TSTART = 0; } else { @@ -134,14 +133,13 @@ void CEXIChannel::RegisterMMIO(MMIO::Mapping* mmio, u32 base) case EXI_WRITE: pDevice->DMAWrite(m_DMAMemoryAddress, m_DMALength); break; default: _dbg_assert_msg_(EXPANSIONINTERFACE,0,"EXI DMA: Unknown transfer type %i", m_Control.RW); } - m_Control.TSTART = 0; } - if (!m_Control.TSTART) // completed ! - { - m_Status.TCINT = 1; - CoreTiming::ScheduleEvent_Threadsafe_Immediate(updateInterrupts, 0); - } + m_Control.TSTART = 0; + + // Check if device needs specific timing, otherwise just complete transfer immediately + if (!pDevice->UseDelayedTransferCompletion()) + SendTransferComplete(); } }) ); @@ -152,6 +150,12 @@ void CEXIChannel::RegisterMMIO(MMIO::Mapping* mmio, u32 base) ); } +void CEXIChannel::SendTransferComplete() +{ + m_Status.TCINT = 1; + CoreTiming::ScheduleEvent_Threadsafe_Immediate(updateInterrupts, 0); +} + void CEXIChannel::RemoveDevices() { for (auto& device : m_pDevices) diff --git a/Source/Core/Core/HW/EXI_Channel.h b/Source/Core/Core/HW/EXI_Channel.h index 4156a40..c106a57 100644 --- a/Source/Core/Core/HW/EXI_Channel.h +++ b/Source/Core/Core/HW/EXI_Channel.h @@ -86,6 +86,7 @@ class CEXIChannel int updateInterrupts; static void UpdateInterrupts(u64 userdata, int cyclesLate); + public: // get device IEXIDevice* GetDevice(const u8 _CHIP_SELECT); @@ -96,6 +97,8 @@ class CEXIChannel void RegisterMMIO(MMIO::Mapping* mmio, u32 base); + void SendTransferComplete(); + void AddDevice(const TEXIDevices device_type, const int device_num); void AddDevice(IEXIDevice* pDevice, const int device_num, bool notifyPresenceChanged=true); diff --git a/Source/Core/Core/HW/EXI_Device.cpp b/Source/Core/Core/HW/EXI_Device.cpp index 53a79ed..dbd2807 100644 --- a/Source/Core/Core/HW/EXI_Device.cpp +++ b/Source/Core/Core/HW/EXI_Device.cpp @@ -103,7 +103,6 @@ IEXIDevice* EXIDevice_Create(TEXIDevices device_type, const int channel_num) { bool gci_folder = (device_type == EXIDEVICE_MEMORYCARDFOLDER); result = new CEXIMemoryCard(channel_num, gci_folder); - device_type = EXIDEVICE_MEMORYCARD; break; } case EXIDEVICE_MASKROM: diff --git a/Source/Core/Core/HW/EXI_Device.h b/Source/Core/Core/HW/EXI_Device.h index 01a77b9..b09732e 100644 --- a/Source/Core/Core/HW/EXI_Device.h +++ b/Source/Core/Core/HW/EXI_Device.h @@ -38,6 +38,8 @@ class IEXIDevice virtual void DMAWrite(u32 _uAddr, u32 _uSize); virtual void DMARead (u32 _uAddr, u32 _uSize); + virtual bool UseDelayedTransferCompletion() {return false;} + virtual bool IsPresent() {return false;} virtual void SetCS(int) {} virtual void DoState(PointerWrap&) {} @@ -53,4 +55,4 @@ class IEXIDevice TEXIDevices m_deviceType; }; -extern IEXIDevice* EXIDevice_Create(const TEXIDevices device_type, const int channel_num); +IEXIDevice* EXIDevice_Create(const TEXIDevices device_type, const int channel_num); diff --git a/Source/Core/Core/HW/EXI_DeviceEthernet.cpp b/Source/Core/Core/HW/EXI_DeviceEthernet.cpp index 3cb9bc4..aad43d9 100644 --- a/Source/Core/Core/HW/EXI_DeviceEthernet.cpp +++ b/Source/Core/Core/HW/EXI_DeviceEthernet.cpp @@ -53,9 +53,9 @@ CEXIETHERNET::~CEXIETHERNET() { Deactivate(); - delete tx_fifo; - delete mBbaMem; - delete mRecvBuffer; + delete[] tx_fifo; + delete[] mBbaMem; + delete[] mRecvBuffer; } void CEXIETHERNET::SetCS(int cs) diff --git a/Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp b/Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp index 84a32f1..bc903ed 100644 --- a/Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp +++ b/Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp @@ -11,6 +11,7 @@ #include "Core/CoreTiming.h" #include "Core/Movie.h" #include "Core/HW/EXI.h" +#include "Core/HW/EXI_Channel.h" #include "Core/HW/EXI_Device.h" #include "Core/HW/EXI_DeviceMemoryCard.h" #include "Core/HW/GCMemcard.h" @@ -18,6 +19,7 @@ #include "Core/HW/GCMemcardRaw.h" #include "Core/HW/Memmap.h" #include "Core/HW/Sram.h" +#include "Core/HW/SystemTimers.h" #include "DiscIO/NANDContentLoader.h" #define MC_STATUS_BUSY 0x80 @@ -28,11 +30,16 @@ #define MC_STATUS_READY 0x01 #define SIZE_TO_Mb (1024 * 8 * 16) +static const u32 MC_TRANSFER_RATE_READ = 512 * 1024; +static const u32 MC_TRANSFER_RATE_WRITE = (u32)(96.125f * 1024.0f); + void CEXIMemoryCard::FlushCallback(u64 userdata, int cyclesLate) { // note that userdata is forbidden to be a pointer, due to the implementation of EventDoState int card_index = (int)userdata; CEXIMemoryCard* pThis = (CEXIMemoryCard*)ExpansionInterface::FindDevice(EXIDEVICE_MEMORYCARD, card_index); + if (pThis == nullptr) + pThis = (CEXIMemoryCard*)ExpansionInterface::FindDevice(EXIDEVICE_MEMORYCARDFOLDER, card_index); if (pThis && pThis->memorycard) pThis->memorycard->Flush(); } @@ -41,10 +48,22 @@ void CEXIMemoryCard::CmdDoneCallback(u64 userdata, int cyclesLate) { int card_index = (int)userdata; CEXIMemoryCard* pThis = (CEXIMemoryCard*)ExpansionInterface::FindDevice(EXIDEVICE_MEMORYCARD, card_index); + if (pThis == nullptr) + pThis = (CEXIMemoryCard*)ExpansionInterface::FindDevice(EXIDEVICE_MEMORYCARDFOLDER, card_index); if (pThis) pThis->CmdDone(); } +void CEXIMemoryCard::TransferCompleteCallback(u64 userdata, int cyclesLate) +{ + int card_index = (int)userdata; + CEXIMemoryCard* pThis = (CEXIMemoryCard*)ExpansionInterface::FindDevice(EXIDEVICE_MEMORYCARD, card_index); + if (pThis == nullptr) + pThis = (CEXIMemoryCard*)ExpansionInterface::FindDevice(EXIDEVICE_MEMORYCARDFOLDER, card_index); + if (pThis) + pThis->TransferComplete(); +} + CEXIMemoryCard::CEXIMemoryCard(const int index, bool gciFolder) : card_index(index) , m_bDirty(false) @@ -52,6 +71,7 @@ CEXIMemoryCard::CEXIMemoryCard(const int index, bool gciFolder) // we're potentially leaking events here, since there's no UnregisterEvent until emu shutdown, but I guess it's inconsequential et_this_card = CoreTiming::RegisterEvent((index == 0) ? "memcardFlushA" : "memcardFlushB", FlushCallback); et_cmd_done = CoreTiming::RegisterEvent((index == 0) ? "memcardDoneA" : "memcardDoneB", CmdDoneCallback); + et_transfer_complete = CoreTiming::RegisterEvent((index == 0) ? "memcardTransferCompleteA" : "memcardTransferCompleteB", TransferCompleteCallback); interruptSwitch = 0; m_bInterruptSet = 0; @@ -84,11 +104,11 @@ CEXIMemoryCard::CEXIMemoryCard(const int index, bool gciFolder) if (gciFolder) { - setupGciFolder(sizeMb); + SetupGciFolder(sizeMb); } else { - setupRawMemcard(sizeMb); + SetupRawMemcard(sizeMb); } memory_card_size = memorycard->GetCardId() * SIZE_TO_Mb; @@ -97,7 +117,7 @@ CEXIMemoryCard::CEXIMemoryCard(const int index, bool gciFolder) SetCardFlashID(header, card_index); } -void CEXIMemoryCard::setupGciFolder(u16 sizeMb) +void CEXIMemoryCard::SetupGciFolder(u16 sizeMb) { DiscIO::IVolume::ECountry CountryCode = DiscIO::IVolume::COUNTRY_UNKNOWN; @@ -106,7 +126,7 @@ void CEXIMemoryCard::setupGciFolder(u16 sizeMb) u32 CurrentGameId = 0; if (strUniqueID == TITLEID_SYSMENU_STRING) { - const DiscIO::INANDContentLoader & SysMenu_Loader = DiscIO::CNANDContentManager::Access().GetNANDLoader(TITLEID_SYSMENU, true); + const DiscIO::INANDContentLoader & SysMenu_Loader = DiscIO::CNANDContentManager::Access().GetNANDLoader(TITLEID_SYSMENU, false); if (SysMenu_Loader.IsValid()) { CountryCode = DiscIO::CountrySwitch(SysMenu_Loader.GetCountryChar()); @@ -159,13 +179,13 @@ void CEXIMemoryCard::setupGciFolder(u16 sizeMb) CountryCode, CurrentGameId); } -void CEXIMemoryCard::setupRawMemcard(u16 sizeMb) +void CEXIMemoryCard::SetupRawMemcard(u16 sizeMb) { std::string filename = (card_index == 0) ? SConfig::GetInstance().m_strMemoryCardA : SConfig::GetInstance().m_strMemoryCardB; - if (Movie::IsPlayingInput() && Movie::IsConfigSaved() && Movie::IsUsingMemcard() && + if (Movie::IsPlayingInput() && Movie::IsConfigSaved() && Movie::IsUsingMemcard(card_index) && Movie::IsStartingFromClearSave()) - filename = File::GetUserPath(D_GCUSER_IDX) + "Movie.raw"; + filename = File::GetUserPath(D_GCUSER_IDX) + StringFromFormat("Movie%s.raw", (card_index == 0) ? "A" : "B"); if (sizeMb == MemCard251Mb) { @@ -178,7 +198,12 @@ CEXIMemoryCard::~CEXIMemoryCard() { CoreTiming::RemoveEvent(et_this_card); memorycard->Flush(true); - memorycard.release(); + memorycard.reset(); +} + +bool CEXIMemoryCard::UseDelayedTransferCompletion() +{ + return true; } bool CEXIMemoryCard::IsPresent() @@ -195,6 +220,12 @@ void CEXIMemoryCard::CmdDone() m_bDirty = true; } +void CEXIMemoryCard::TransferComplete() +{ + // Transfer complete, send interrupt + ExpansionInterface::GetChannel(card_index)->SendTransferComplete(); +} + void CEXIMemoryCard::CmdDoneLater(u64 cycles) { CoreTiming::RemoveEvent(et_cmd_done); @@ -204,7 +235,7 @@ void CEXIMemoryCard::CmdDoneLater(u64 cycles) void CEXIMemoryCard::SetCS(int cs) { // So that memory card won't be invalidated during flushing - memorycard->joinThread(); + memorycard->JoinThread(); if (cs) // not-selected to selected { @@ -253,11 +284,6 @@ void CEXIMemoryCard::SetCS(int cs) CmdDoneLater(5000); } - - // Page written to memory card, not just to buffer - let's schedule a flush 0.5b cycles into the future (1 sec) - // But first we unschedule already scheduled flushes - no point in flushing once per page for a large write. - CoreTiming::RemoveEvent(et_this_card); - CoreTiming::ScheduleEvent(500000000, et_this_card, (u64)card_index); break; } } @@ -433,7 +459,7 @@ void CEXIMemoryCard::PauseAndLock(bool doLock, bool unpauseOnUnlock) { // we don't exactly have anything to pause, // but let's make sure the flush thread isn't running. - memorycard->joinThread(); + memorycard->JoinThread(); } } @@ -474,6 +500,14 @@ IEXIDevice* CEXIMemoryCard::FindDevice(TEXIDevices device_type, int customIndex) void CEXIMemoryCard::DMARead(u32 _uAddr, u32 _uSize) { memorycard->Read(address, _uSize, Memory::GetPointer(_uAddr)); + +#ifdef _DEBUG + if ((address + _uSize) % BLOCK_SIZE == 0) + INFO_LOG(EXPANSIONINTERFACE, "reading from block: %x", address / BLOCK_SIZE); +#endif + + // Schedule transfer complete later based on read speed + CoreTiming::ScheduleEvent(_uSize * (SystemTimers::GetTicksPerSecond() / MC_TRANSFER_RATE_READ), et_transfer_complete, (u64)card_index); } // DMA write are preceded by all of the necessary setup via IMMWrite @@ -481,4 +515,22 @@ void CEXIMemoryCard::DMARead(u32 _uAddr, u32 _uSize) void CEXIMemoryCard::DMAWrite(u32 _uAddr, u32 _uSize) { memorycard->Write(address, _uSize, Memory::GetPointer(_uAddr)); + + // At the end of writing to a block flush to disk + // memory card blocks are always(?) written as a whole, + // but the dma calls are by page size (0x200) at a time + // just in case this is the last block that the game will be writing for a while + if (((address + _uSize) % BLOCK_SIZE) == 0) + { + INFO_LOG(EXPANSIONINTERFACE, "writing to block: %x", address / BLOCK_SIZE); + // Page written to memory card, not just to buffer - let's schedule a flush 0.5b cycles into the future (1 sec) + // But first we unschedule already scheduled flushes - no point in flushing once per page for a large write + // Scheduling event is mainly for raw memory cards as the flush the whole 16MB to disk + // Flushing the gci folder is free in comparison + CoreTiming::RemoveEvent(et_this_card); + CoreTiming::ScheduleEvent(500000000, et_this_card, (u64)card_index); + } + + // Schedule transfer complete later based on write speed + CoreTiming::ScheduleEvent(_uSize * (SystemTimers::GetTicksPerSecond() / MC_TRANSFER_RATE_WRITE), et_transfer_complete, (u64)card_index); } diff --git a/Source/Core/Core/HW/EXI_DeviceMemoryCard.h b/Source/Core/Core/HW/EXI_DeviceMemoryCard.h index 6f59bb4..02e5d4d 100644 --- a/Source/Core/Core/HW/EXI_DeviceMemoryCard.h +++ b/Source/Core/Core/HW/EXI_DeviceMemoryCard.h @@ -13,6 +13,7 @@ class CEXIMemoryCard : public IEXIDevice virtual ~CEXIMemoryCard(); void SetCS(int cs) override; bool IsInterruptSet() override; + bool UseDelayedTransferCompletion() override; bool IsPresent() override; void DoState(PointerWrap &p) override; void PauseAndLock(bool doLock, bool unpauseOnUnlock=true) override; @@ -21,8 +22,8 @@ class CEXIMemoryCard : public IEXIDevice void DMAWrite(u32 _uAddr, u32 _uSize) override; private: - void setupGciFolder(u16 sizeMb); - void setupRawMemcard(u16 sizeMb); + void SetupGciFolder(u16 sizeMb); + void SetupRawMemcard(u16 sizeMb); // This is scheduled whenever a page write is issued. The this pointer is passed // through the userdata parameter, so that it can then call Flush on the right card. static void FlushCallback(u64 userdata, int cyclesLate); @@ -30,12 +31,18 @@ class CEXIMemoryCard : public IEXIDevice // Scheduled when a command that required delayed end signaling is done. static void CmdDoneCallback(u64 userdata, int cyclesLate); + // Scheduled when memory card is done transferring data + static void TransferCompleteCallback(u64 userdata, int cyclesLate); + // Flushes the memory card contents to disk. void Flush(bool exiting = false); // Signals that the command that was previously executed is now done. void CmdDone(); + // Signals that the transfer that was previously executed is now done. + void TransferComplete(); + // Variant of CmdDone which schedules an event later in the future to complete the command. void CmdDoneLater(u64 cycles); @@ -59,7 +66,7 @@ class CEXIMemoryCard : public IEXIDevice }; int card_index; - int et_this_card, et_cmd_done; + int et_this_card, et_cmd_done, et_transfer_complete; //! memory card state // STATE_TO_SAVE diff --git a/Source/Core/Core/HW/GCMemcard.cpp b/Source/Core/Core/HW/GCMemcard.cpp index 83cb98c..a9fad20 100644 --- a/Source/Core/Core/HW/GCMemcard.cpp +++ b/Source/Core/Core/HW/GCMemcard.cpp @@ -188,10 +188,10 @@ GCMemcard::GCMemcard(const std::string &filename, bool forceCreation, bool ascii mcdFile.Close(); - initDirBatPointers(); + InitDirBatPointers(); } -void GCMemcard::initDirBatPointers() +void GCMemcard::InitDirBatPointers() { if (BE16(dir.UpdateCounter) > (BE16(dir_backup.UpdateCounter))) { @@ -366,7 +366,7 @@ u8 GCMemcard::TitlePresent(DEntry d) const bool GCMemcard::GCI_FileName(u8 index, std::string &filename) const { - if (!m_valid || index > DIRLEN || (BE32(CurrentDir->Dir[index].Gamecode) == 0xFFFFFFFF)) + if (!m_valid || index >= DIRLEN || (BE32(CurrentDir->Dir[index].Gamecode) == 0xFFFFFFFF)) return false; filename = CurrentDir->Dir[index].GCI_FileName(); @@ -378,7 +378,7 @@ bool GCMemcard::GCI_FileName(u8 index, std::string &filename) const std::string GCMemcard::DEntry_GameCode(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return ""; return std::string((const char*)CurrentDir->Dir[index].Gamecode, 4); @@ -386,14 +386,15 @@ std::string GCMemcard::DEntry_GameCode(u8 index) const std::string GCMemcard::DEntry_Makercode(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return ""; + return std::string((const char*)CurrentDir->Dir[index].Makercode, 2); } std::string GCMemcard::DEntry_BIFlags(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return ""; std::string flags; @@ -408,7 +409,7 @@ std::string GCMemcard::DEntry_BIFlags(u8 index) const std::string GCMemcard::DEntry_FileName(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return ""; return std::string((const char*)CurrentDir->Dir[index].Filename, DENTRY_STRLEN); @@ -416,7 +417,7 @@ std::string GCMemcard::DEntry_FileName(u8 index) const u32 GCMemcard::DEntry_ModTime(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return 0xFFFFFFFF; return BE32(CurrentDir->Dir[index].ModTime); @@ -424,7 +425,7 @@ u32 GCMemcard::DEntry_ModTime(u8 index) const u32 GCMemcard::DEntry_ImageOffset(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return 0xFFFFFFFF; return BE32(CurrentDir->Dir[index].ImageOffset); @@ -432,7 +433,7 @@ u32 GCMemcard::DEntry_ImageOffset(u8 index) const std::string GCMemcard::DEntry_IconFmt(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return ""; int x = CurrentDir->Dir[index].IconFmt[0]; @@ -448,7 +449,7 @@ std::string GCMemcard::DEntry_IconFmt(u8 index) const std::string GCMemcard::DEntry_AnimSpeed(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return ""; int x = CurrentDir->Dir[index].AnimSpeed[0]; @@ -464,7 +465,7 @@ std::string GCMemcard::DEntry_AnimSpeed(u8 index) const std::string GCMemcard::DEntry_Permissions(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return ""; u8 Permissions = CurrentDir->Dir[index].Permissions; @@ -477,7 +478,7 @@ std::string GCMemcard::DEntry_Permissions(u8 index) const u8 GCMemcard::DEntry_CopyCounter(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return 0xFF; return CurrentDir->Dir[index].CopyCounter; @@ -485,7 +486,7 @@ u8 GCMemcard::DEntry_CopyCounter(u8 index) const u16 GCMemcard::DEntry_FirstBlock(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return 0xFFFF; u16 block = BE16(CurrentDir->Dir[index].FirstBlock); @@ -495,7 +496,7 @@ u16 GCMemcard::DEntry_FirstBlock(u8 index) const u16 GCMemcard::DEntry_BlockCount(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return 0xFFFF; u16 blocks = BE16(CurrentDir->Dir[index].BlockCount); @@ -505,7 +506,7 @@ u16 GCMemcard::DEntry_BlockCount(u8 index) const u32 GCMemcard::DEntry_CommentsAddress(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return 0xFFFF; return BE32(CurrentDir->Dir[index].CommentsAddr); @@ -513,7 +514,7 @@ u32 GCMemcard::DEntry_CommentsAddress(u8 index) const std::string GCMemcard::GetSaveComment1(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return ""; u32 Comment1 = BE32(CurrentDir->Dir[index].CommentsAddr); @@ -527,7 +528,7 @@ std::string GCMemcard::GetSaveComment1(u8 index) const std::string GCMemcard::GetSaveComment2(u8 index) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return ""; u32 Comment1 = BE32(CurrentDir->Dir[index].CommentsAddr); @@ -542,7 +543,7 @@ std::string GCMemcard::GetSaveComment2(u8 index) const bool GCMemcard::GetDEntry(u8 index, DEntry &dest) const { - if (!m_valid || index > DIRLEN) + if (!m_valid || index >= DIRLEN) return false; dest = CurrentDir->Dir[index]; @@ -1028,7 +1029,7 @@ void GCMemcard::Gcs_SavConvert(DEntry &tempDEntry, int saveType, int length) bool GCMemcard::ReadBannerRGBA8(u8 index, u32* buffer) const { - if (!m_valid) + if (!m_valid || index >= DIRLEN) return false; int flags = CurrentDir->Dir[index].BIFlags; @@ -1069,7 +1070,7 @@ bool GCMemcard::ReadBannerRGBA8(u8 index, u32* buffer) const u32 GCMemcard::ReadAnimRGBA8(u8 index, u32* buffer, u8 *delays) const { - if (!m_valid) + if (!m_valid || index >= DIRLEN) return 0; // To ensure only one type of icon is used @@ -1237,7 +1238,7 @@ bool GCMemcard::Format(bool ascii, u16 SizeMb) mc_data_blocks.clear(); mc_data_blocks.resize(maxBlock - MC_FST_BLOCKS); - initDirBatPointers(); + InitDirBatPointers(); m_valid = true; return Save(); diff --git a/Source/Core/Core/HW/GCMemcard.h b/Source/Core/Core/HW/GCMemcard.h index 6921398..1b390f3 100644 --- a/Source/Core/Core/HW/GCMemcard.h +++ b/Source/Core/Core/HW/GCMemcard.h @@ -4,10 +4,12 @@ #pragma once +#include #include #include "Common/Common.h" #include "Common/CommonPaths.h" +#include "Common/NandPaths.h" #include "Common/StringUtil.h" #include "Core/HW/EXI_DeviceIPL.h" @@ -74,7 +76,7 @@ class MemoryCardBase virtual void ClearBlock(u32 address) = 0; virtual void ClearAll() = 0; virtual void DoState(PointerWrap &p) = 0; - virtual void joinThread() {}; + virtual void JoinThread() {}; u32 GetCardId() { return nintendo_card_id; } protected: @@ -85,8 +87,16 @@ class MemoryCardBase struct GCMBlock { - GCMBlock() { erase(); } - void erase() { memset(block, 0xFF, BLOCK_SIZE); } + GCMBlock() + { + Erase(); + } + + void Erase() + { + memset(block, 0xFF, BLOCK_SIZE); + } + u8 block[BLOCK_SIZE]; }; @@ -156,9 +166,29 @@ struct DEntry DEntry() { memset(this, 0xFF, DENTRY_SIZE); } std::string GCI_FileName() const { - return std::string((char *)Makercode, 2) + '-' + std::string((char *)Gamecode, 4) + '-' + (char *)Filename + - ".gci"; + std::string filename = std::string((char *)Makercode, 2) + '-' + std::string((char *)Gamecode, 4) + '-' + (char *)Filename + + ".gci"; + static Common::replace_v replacements; + if (replacements.size() == 0) + { + Common::ReadReplacements(replacements); + // Cannot add \r to replacements file due to it being a line ending char + // / might be ok, but we need to verify that this is only used on filenames + // as it is a dir_sep + replacements.push_back(std::make_pair('\r', std::string("__0d__"))); + replacements.push_back(std::make_pair('/', std::string("__2f__"))); + + } + + // Replaces chars that FAT32 can't support with strings defined in /sys/replace + for (auto& replacement : replacements) + { + for (size_t j = 0; (j = filename.find(replacement.first, j)) != filename.npos; ++j) + filename.replace(j, 1, replacement.second); + } + return filename; } + u8 Gamecode[4]; //0x00 0x04 Gamecode u8 Makercode[2]; //0x04 0x02 Makercode u8 Unused1; //0x06 0x01 reserved/unused (always 0xff, has no effect) @@ -303,7 +333,7 @@ class GCMemcard : NonCopyable std::vector mc_data_blocks; u32 ImportGciInternal(FILE* gcih, const std::string& inputFile, const std::string &outputFile); - void initDirBatPointers(); + void InitDirBatPointers(); public: diff --git a/Source/Core/Core/HW/GCMemcardDirectory.cpp b/Source/Core/Core/HW/GCMemcardDirectory.cpp index d223402..aa97291 100644 --- a/Source/Core/Core/HW/GCMemcardDirectory.cpp +++ b/Source/Core/Core/HW/GCMemcardDirectory.cpp @@ -10,8 +10,9 @@ #include "DiscIO/Volume.h" const int NO_INDEX = -1; -const char *MC_HDR = "MC_SYSTEM_AREA"; -int GCMemcardDirectory::LoadGCI(std::string fileName, int region) +static const char *MC_HDR = "MC_SYSTEM_AREA"; + +int GCMemcardDirectory::LoadGCI(std::string fileName, DiscIO::IVolume::ECountry card_region) { File::IOFile gcifile(fileName, "rb"); if (gcifile) @@ -25,38 +26,33 @@ int GCMemcardDirectory::LoadGCI(std::string fileName, int region) return NO_INDEX; } + DiscIO::IVolume::ECountry gci_region; // check region switch (gci.m_gci_header.Gamecode[3]) { case 'J': - if (region != DiscIO::IVolume::COUNTRY_JAPAN) - { - PanicAlertT("GCI save file was not loaded because it is the wrong region for this memory card:\n%s", - fileName.c_str()); - return NO_INDEX; - } + gci_region = DiscIO::IVolume::COUNTRY_JAPAN; break; case 'E': - if (region != DiscIO::IVolume::COUNTRY_USA) - { - PanicAlertT("GCI save file was not loaded because it is the wrong region for this memory card:\n%s", - fileName.c_str()); - return NO_INDEX; - } + gci_region = DiscIO::IVolume::COUNTRY_USA; break; case 'C': // Used by Datel Action Replay Save + // can be on any regions card + gci_region = card_region; break; default: - if (region != DiscIO::IVolume::COUNTRY_EUROPE) - { - PanicAlertT("GCI save file was not loaded because it is the wrong region for this memory card:\n%s", - fileName.c_str()); - return NO_INDEX; - } + gci_region = DiscIO::IVolume::COUNTRY_EUROPE; break; } + if (gci_region != card_region) + { + PanicAlertT("GCI save file was not loaded because it is the wrong region for this memory card:\n%s", + fileName.c_str()); + return NO_INDEX; + } + std::string gci_filename = gci.m_gci_header.GCI_FileName(); for (u16 i = 0; i < m_loaded_saves.size(); ++i) { @@ -117,7 +113,7 @@ int GCMemcardDirectory::LoadGCI(std::string fileName, int region) return NO_INDEX; } -GCMemcardDirectory::GCMemcardDirectory(std::string directory, int slot, u16 sizeMb, bool ascii, int region, int gameId) +GCMemcardDirectory::GCMemcardDirectory(std::string directory, int slot, u16 sizeMb, bool ascii, DiscIO::IVolume::ECountry card_region, int gameId) : MemoryCardBase(slot, sizeMb) , m_GameId(gameId) , m_LastBlock(-1) @@ -148,7 +144,7 @@ GCMemcardDirectory::GCMemcardDirectory(std::string directory, int slot, u16 size m_SaveDirectory.c_str()); break; } - int index = LoadGCI(FST_Temp.children[j].physicalName, region); + int index = LoadGCI(FST_Temp.children[j].physicalName, card_region); if (index != NO_INDEX) { m_loaded_saves.push_back(m_saves.at(index).m_gci_header.GCI_FileName()); @@ -222,7 +218,7 @@ s32 GCMemcardDirectory::Read(u32 address, s32 length, u8 *destaddress) s32 GCMemcardDirectory::Write(u32 destaddress, s32 length, u8 *srcaddress) { if (length != 0x80) - ERROR_LOG(EXPANSIONINTERFACE, "WRITING TO %x, len %x", destaddress, length); + INFO_LOG(EXPANSIONINTERFACE, "WRITING TO %x, len %x", destaddress, length); s32 block = destaddress / BLOCK_SIZE; u32 offset = destaddress % BLOCK_SIZE; s32 extra = 0; // used for write calls that are across multiple blocks @@ -292,6 +288,7 @@ void GCMemcardDirectory::ClearBlock(u32 address) } u32 block = address / BLOCK_SIZE; + INFO_LOG(EXPANSIONINTERFACE, "clearing block %d", block); switch (block) { case 0: @@ -319,7 +316,7 @@ void GCMemcardDirectory::ClearBlock(u32 address) if (m_LastBlock == -1) return; } - ((GCMBlock *)m_LastBlockAddress)->erase(); + ((GCMBlock *)m_LastBlockAddress)->Erase(); } inline void GCMemcardDirectory::SyncSaves() @@ -333,8 +330,9 @@ inline void GCMemcardDirectory::SyncSaves() for (u32 i = 0; i < DIRLEN; ++i) { - if (*(u32 *)&(current->Dir[i]) != 0xFFFFFFFF) + if (BE32(current->Dir[i].Gamecode) != 0xFFFFFFFF) { + INFO_LOG(EXPANSIONINTERFACE, "Syncing Save %x", *(u32 *)&(current->Dir[i].Gamecode)); bool added = false; while (i >= m_saves.size()) { @@ -346,12 +344,38 @@ inline void GCMemcardDirectory::SyncSaves() if (added || memcmp((u8 *)&(m_saves[i].m_gci_header), (u8 *)&(current->Dir[i]), DENTRY_SIZE)) { m_saves[i].m_dirty = true; + u32 gamecode = BE32(m_saves[i].m_gci_header.Gamecode); + u32 newGameCode = BE32(current->Dir[i].Gamecode); + u32 old_start = BE16(m_saves[i].m_gci_header.FirstBlock); + u32 new_start = BE16(current->Dir[i].FirstBlock); + + if ((gamecode != 0xFFFFFFFF) + && (gamecode != newGameCode)) + { + PanicAlertT("Game overwrote with another games save, data corruption ahead %x, %x ", + BE32(m_saves[i].m_gci_header.Gamecode), BE32(current->Dir[i].Gamecode)); + } memcpy((u8 *)&(m_saves[i].m_gci_header), (u8 *)&(current->Dir[i]), DENTRY_SIZE); + if (old_start != new_start) + { + INFO_LOG(EXPANSIONINTERFACE, "Save moved from %x to %x", old_start, new_start); + m_saves[i].m_used_blocks.clear(); + m_saves[i].m_save_data.clear(); + } + if (m_saves[i].m_used_blocks.size() == 0) + { + SetUsedBlocks(i); + } } } else if ((i < m_saves.size()) && (*(u32 *)&(m_saves[i].m_gci_header) != 0xFFFFFFFF)) { - *(u32 *)&(m_saves[i].m_gci_header.Gamecode) = 0xFFFFFFF; + INFO_LOG(EXPANSIONINTERFACE, "Clearing and/or Deleting Save %x", BE32(m_saves[i].m_gci_header.Gamecode)); + *(u32 *)&(m_saves[i].m_gci_header.Gamecode) = 0xFFFFFFFF; + m_saves[i].m_save_data.clear(); + m_saves[i].m_used_blocks.clear(); + m_saves[i].m_dirty = true; + } } } @@ -434,10 +458,10 @@ bool GCMemcardDirectory::SetUsedBlocks(int saveIndex) } u16 num_blocks = BE16(m_saves[saveIndex].m_gci_header.BlockCount); - - if (m_saves[saveIndex].m_used_blocks.size() != num_blocks) + u16 blocksFromBat = (u16)m_saves[saveIndex].m_used_blocks.size(); + if (blocksFromBat != num_blocks) { - PanicAlertT("Warning BAT number of blocks does not match file header"); + PanicAlertT("Warning BAT number of blocks %d does not match file header loaded %d", blocksFromBat, num_blocks); return false; } diff --git a/Source/Core/Core/HW/GCMemcardDirectory.h b/Source/Core/Core/HW/GCMemcardDirectory.h index add9cf6..463a60f 100644 --- a/Source/Core/Core/HW/GCMemcardDirectory.h +++ b/Source/Core/Core/HW/GCMemcardDirectory.h @@ -14,7 +14,7 @@ class GCMemcardDirectory : public MemoryCardBase, NonCopyable { public: GCMemcardDirectory(std::string directory, int slot = 0, u16 sizeMb = MemCard2043Mb, bool ascii = true, - int region = 0, int gameId = 0); + DiscIO::IVolume::ECountry card_region = DiscIO::IVolume::COUNTRY_EUROPE, int gameId = 0); ~GCMemcardDirectory() { Flush(true); } void Flush(bool exiting = false) override; @@ -25,7 +25,7 @@ class GCMemcardDirectory : public MemoryCardBase, NonCopyable void DoState(PointerWrap &p) override; private: - int LoadGCI(std::string fileName, int region); + int LoadGCI(std::string fileName, DiscIO::IVolume::ECountry card_region); inline s32 SaveAreaRW(u32 block, bool writing = false); // s32 DirectoryRead(u32 offset, u32 length, u8* destaddress); s32 DirectoryWrite(u32 destaddress, u32 length, u8 *srcaddress); diff --git a/Source/Core/Core/HW/GCMemcardRaw.cpp b/Source/Core/Core/HW/GCMemcardRaw.cpp index 9302806..8df0df5 100644 --- a/Source/Core/Core/HW/GCMemcardRaw.cpp +++ b/Source/Core/Core/HW/GCMemcardRaw.cpp @@ -7,7 +7,7 @@ #define SIZE_TO_Mb (1024 * 8 * 16) #define MC_HDR_SIZE 0xA000 -void innerFlush(FlushData *data) +static void innerFlush(FlushData *data) { File::IOFile pFile(data->filename, "r+b"); if (!pFile) @@ -69,7 +69,13 @@ MemoryCard::MemoryCard(std::string filename, int _card_index, u16 sizeMb) } } -void MemoryCard::joinThread() +MemoryCard::~MemoryCard() +{ + Flush(true); + delete[] memory_card_content; +} + +void MemoryCard::JoinThread() { if (flushThread.joinable()) { diff --git a/Source/Core/Core/HW/GCMemcardRaw.h b/Source/Core/Core/HW/GCMemcardRaw.h index 80cee42..11f1c01 100644 --- a/Source/Core/Core/HW/GCMemcardRaw.h +++ b/Source/Core/Core/HW/GCMemcardRaw.h @@ -21,7 +21,7 @@ class MemoryCard : public MemoryCardBase { public: MemoryCard(std::string filename, int _card_index, u16 sizeMb = MemCard2043Mb); - ~MemoryCard() { Flush(true); } + ~MemoryCard(); void Flush(bool exiting = false) override; s32 Read(u32 address, s32 length, u8 *destaddress) override; @@ -29,7 +29,7 @@ class MemoryCard : public MemoryCardBase void ClearBlock(u32 address) override; void ClearAll() override; void DoState(PointerWrap &p) override; - void joinThread() override; + void JoinThread() override; private: u8 *memory_card_content; diff --git a/Source/Core/Core/HW/GCPad.cpp b/Source/Core/Core/HW/GCPad.cpp index 6b6b968..7a6d333 100644 --- a/Source/Core/Core/HW/GCPad.cpp +++ b/Source/Core/Core/HW/GCPad.cpp @@ -5,8 +5,8 @@ #include "Common/Common.h" #include "Core/ConfigManager.h" +#include "Core/HW/GCPad.h" #include "Core/HW/GCPadEmu.h" - #include "InputCommon/GCPadStatus.h" #include "InputCommon/InputConfig.h" #include "InputCommon/ControllerInterface/ControllerInterface.h" @@ -47,7 +47,7 @@ void Initialize(void* const hwnd) g_plugin.LoadConfig(true); } -void GetStatus(u8 _numPAD, SPADStatus* _pPADStatus) +void GetStatus(u8 _numPAD, GCPadStatus* _pPADStatus) { memset(_pPADStatus, 0, sizeof(*_pPADStatus)); _pPADStatus->err = PAD_ERR_NONE; @@ -58,10 +58,10 @@ void GetStatus(u8 _numPAD, SPADStatus* _pPADStatus) { // if gui has lock (messing with controls), skip this input cycle // center axes and return - _pPADStatus->stickX = 0x80; - _pPADStatus->stickY = 0x80; - _pPADStatus->substickX = 0x80; - _pPADStatus->substickY = 0x80; + _pPADStatus->stickX = GCPadStatus::MAIN_STICK_CENTER_X; + _pPADStatus->stickY = GCPadStatus::MAIN_STICK_CENTER_Y; + _pPADStatus->substickX = GCPadStatus::C_STICK_CENTER_X; + _pPADStatus->substickY = GCPadStatus::C_STICK_CENTER_Y; return; } diff --git a/Source/Core/Core/HW/GCPad.h b/Source/Core/Core/HW/GCPad.h index ee03c3c..ccbfeb7 100644 --- a/Source/Core/Core/HW/GCPad.h +++ b/Source/Core/Core/HW/GCPad.h @@ -16,7 +16,7 @@ void Initialize(void* const hwnd); InputPlugin *GetPlugin(); -void GetStatus(u8 _numPAD, SPADStatus* _pPADStatus); +void GetStatus(u8 _numPAD, GCPadStatus* _pPADStatus); void Rumble(u8 _numPAD, unsigned int _uType, unsigned int _uStrength); void Motor(u8 _numPAD, unsigned int _uType, unsigned int _uStrength); diff --git a/Source/Core/Core/HW/GCPadEmu.cpp b/Source/Core/Core/HW/GCPadEmu.cpp index 0a36c72..67af7ca 100644 --- a/Source/Core/Core/HW/GCPadEmu.cpp +++ b/Source/Core/Core/HW/GCPadEmu.cpp @@ -79,7 +79,7 @@ GCPad::GCPad(const unsigned int index) : m_index(index) // options groups.emplace_back(m_options = new ControlGroup(_trans("Options"))); - m_options->settings.emplace_back(new ControlGroup::Setting(_trans("Background Input"), false)); + m_options->settings.emplace_back(new ControlGroup::BackgroundInputSetting(_trans("Background Input"))); } std::string GCPad::GetName() const @@ -87,36 +87,33 @@ std::string GCPad::GetName() const return std::string("GCPad") + char('1'+m_index); } -void GCPad::GetInput(SPADStatus* const pad) +void GCPad::GetInput(GCPadStatus* const pad) { - // if window has focus or background input enabled - if (Host_RendererHasFocus() || m_options[0].settings[0]->value) - { - // buttons - m_buttons->GetState(&pad->button, button_bitmasks); - - // set analog A/B analog to full or w/e, prolly not needed - if (pad->button & PAD_BUTTON_A) pad->analogA = 0xFF; - if (pad->button & PAD_BUTTON_B) pad->analogB = 0xFF; - - // dpad - m_dpad->GetState(&pad->button, dpad_bitmasks); - - // sticks - m_main_stick->GetState(&pad->stickX, &pad->stickY, 0x80, 127); - m_c_stick->GetState(&pad->substickX, &pad->substickY, 0x80, 127); - - // triggers - m_triggers->GetState(&pad->button, trigger_bitmasks, &pad->triggerLeft, 0xFF); - } - else - { - // center sticks - pad->stickX = 0x80; - pad->stickY = 0x80; - pad->substickX = 0x80; - pad->substickY = 0x80; - } + double x, y, triggers[2]; + + // buttons + m_buttons->GetState(&pad->button, button_bitmasks); + + // set analog A/B analog to full or w/e, prolly not needed + if (pad->button & PAD_BUTTON_A) pad->analogA = 0xFF; + if (pad->button & PAD_BUTTON_B) pad->analogB = 0xFF; + + // dpad + m_dpad->GetState(&pad->button, dpad_bitmasks); + + // sticks + m_main_stick->GetState(&x, &y); + pad->stickX = GCPadStatus::MAIN_STICK_CENTER_X + (x * GCPadStatus::MAIN_STICK_RADIUS); + pad->stickY = GCPadStatus::MAIN_STICK_CENTER_Y + (y * GCPadStatus::MAIN_STICK_RADIUS); + + m_c_stick->GetState(&x, &y); + pad->substickX = GCPadStatus::C_STICK_CENTER_X + (x * GCPadStatus::C_STICK_RADIUS); + pad->substickY = GCPadStatus::C_STICK_CENTER_Y + (y * GCPadStatus::C_STICK_RADIUS); + + // triggers + m_triggers->GetState(&pad->button, trigger_bitmasks, triggers); + pad->triggerLeft = triggers[0] * 0xFF; + pad->triggerRight = triggers[1] * 0xFF; } void GCPad::SetMotor(const u8 on) @@ -126,17 +123,12 @@ void GCPad::SetMotor(const u8 on) if (state < 0.5) force = -force; - // only rumble if window has focus or background input is enabled - if (Host_RendererHasFocus() || m_options[0].settings[0]->value) - m_rumble->controls[0]->control_ref->State(force); - else - m_rumble->controls[0]->control_ref->State(0); + m_rumble->controls[0]->control_ref->State(force); } void GCPad::SetOutput(const u8 on) { - // only rumble if window has focus or background input is enabled - m_rumble->controls[0]->control_ref->State(on && (Host_RendererHasFocus() || m_options[0].settings[0]->value)); + m_rumble->controls[0]->control_ref->State(on); } void GCPad::LoadDefaults(const ControllerInterface& ciface) diff --git a/Source/Core/Core/HW/GCPadEmu.h b/Source/Core/Core/HW/GCPadEmu.h index 150ef15..acc687e 100644 --- a/Source/Core/Core/HW/GCPadEmu.h +++ b/Source/Core/Core/HW/GCPadEmu.h @@ -13,7 +13,7 @@ class GCPad : public ControllerEmu public: GCPad(const unsigned int index); - void GetInput(SPADStatus* const pad); + void GetInput(GCPadStatus* const pad); void SetOutput(const u8 on); void SetMotor(const u8 on); diff --git a/Source/Core/Core/HW/GPFifo.cpp b/Source/Core/Core/HW/GPFifo.cpp index 512fea8..0b59007 100644 --- a/Source/Core/Core/HW/GPFifo.cpp +++ b/Source/Core/Core/HW/GPFifo.cpp @@ -155,9 +155,4 @@ void FastWrite64(const u64 _iValue) m_gatherPipeCount += 8; } -void FastWriteEnd() -{ - CheckGatherPipe(); -} - } // end of namespace GPFifo diff --git a/Source/Core/Core/HW/Memmap.cpp b/Source/Core/Core/HW/Memmap.cpp index 34e1a6b..707dac1 100644 --- a/Source/Core/Core/HW/Memmap.cpp +++ b/Source/Core/Core/HW/Memmap.cpp @@ -46,7 +46,7 @@ namespace Memory /* Enable the Translation Lookaside Buffer functions. TLBHack = 1 in Dolphin.ini or a .ini file will set this to true */ bool bFakeVMEM = false; -bool bMMU = false; +static bool bMMU = false; // ============== @@ -57,11 +57,11 @@ bool bMMU = false; u8* base = nullptr; // The MemArena class -MemArena g_arena; +static MemArena g_arena; // ============== // STATE_TO_SAVE -bool m_IsInitialized = false; // Save the Init(), Shutdown() state +static bool m_IsInitialized = false; // Save the Init(), Shutdown() state // END STATE_TO_SAVE // 64-bit: Pointers to low-mem (sub-0x10000000) mirror @@ -74,20 +74,20 @@ u8 *m_pFakeVMEM; // 64-bit: Pointers to high-mem mirrors // 32-bit: Same as above -u8 *m_pPhysicalRAM; -u8 *m_pVirtualCachedRAM; -u8 *m_pVirtualUncachedRAM; -u8 *m_pPhysicalEXRAM; // wii only -u8 *m_pVirtualCachedEXRAM; // wii only -u8 *m_pVirtualUncachedEXRAM; // wii only +static u8 *m_pPhysicalRAM; +static u8 *m_pVirtualCachedRAM; +static u8 *m_pVirtualUncachedRAM; +static u8 *m_pPhysicalEXRAM; // wii only +static u8 *m_pVirtualCachedEXRAM; // wii only +static u8 *m_pVirtualUncachedEXRAM; // wii only //u8 *m_pVirtualEFB; -u8 *m_pVirtualL1Cache; +static u8 *m_pVirtualL1Cache; u8 *m_pVirtualFakeVMEM; // MMIO mapping object. MMIO::Mapping* mmio_mapping; -void InitMMIO(MMIO::Mapping* mmio) +static void InitMMIO(MMIO::Mapping* mmio) { g_video_backend->RegisterCPMMIO(mmio, 0xCC000000); PixelEngine::RegisterMMIO(mmio, 0xCC001000); @@ -101,7 +101,7 @@ void InitMMIO(MMIO::Mapping* mmio) AudioInterface::RegisterMMIO(mmio, 0xCC006C00); } -void InitMMIOWii(MMIO::Mapping* mmio) +static void InitMMIOWii(MMIO::Mapping* mmio) { InitMMIO(mmio); diff --git a/Source/Core/Core/HW/Memmap.h b/Source/Core/Core/HW/Memmap.h index 084674d..c40d0b2 100644 --- a/Source/Core/Core/HW/Memmap.h +++ b/Source/Core/Core/HW/Memmap.h @@ -46,6 +46,8 @@ extern u8 *m_pRAM; extern u8 *m_pEXRAM; extern u8 *m_pL1Cache; extern u8 *m_pVirtualFakeVMEM; +extern u8 *m_pFakeVMEM; +extern bool bFakeVMEM; enum { diff --git a/Source/Core/Core/HW/MemmapFunctions.cpp b/Source/Core/Core/HW/MemmapFunctions.cpp index faf254e..cfcc064 100644 --- a/Source/Core/Core/HW/MemmapFunctions.cpp +++ b/Source/Core/Core/HW/MemmapFunctions.cpp @@ -53,15 +53,6 @@ GXPeekZ // From Memmap.cpp // ---------------- -// Pointers to low memory -extern u8 *m_pFakeVMEM; -extern u8 *m_pEXRAM; // Wii -extern u8 *m_pEFB; - -// Init -extern bool m_IsInitialized; -extern bool bFakeVMEM; - // Overloaded byteswap functions, for use within the templated functions below. inline u8 bswap(u8 val) {return val;} inline u16 bswap(u16 val) {return Common::swap16(val);} @@ -630,7 +621,7 @@ typedef struct tlb_entry static tlb_entry tlb[NUM_TLBS][TLB_SIZE/TLB_WAYS][TLB_WAYS]; #endif -u32 LookupTLBPageAddress(const XCheckTLBFlag _Flag, const u32 vpa, u32 *paddr) +static u32 LookupTLBPageAddress(const XCheckTLBFlag _Flag, const u32 vpa, u32 *paddr) { #ifdef FAST_TLB_CACHE tlb_entry *tlbe = tlb[_Flag == FLAG_OPCODE][(vpa>>HW_PAGE_INDEX_SHIFT)&HW_PAGE_INDEX_MASK]; @@ -679,7 +670,7 @@ u32 LookupTLBPageAddress(const XCheckTLBFlag _Flag, const u32 vpa, u32 *paddr) #endif } -void UpdateTLBEntry(const XCheckTLBFlag _Flag, UPTE2 PTE2, const u32 vpa) +static void UpdateTLBEntry(const XCheckTLBFlag _Flag, UPTE2 PTE2, const u32 vpa) { #ifdef FAST_TLB_CACHE tlb_entry *tlbe = tlb[_Flag == FLAG_OPCODE][(vpa>>HW_PAGE_INDEX_SHIFT)&HW_PAGE_INDEX_MASK]; @@ -757,7 +748,7 @@ void InvalidateTLBEntry(u32 vpa) } // Page Address Translation -u32 TranslatePageAddress(const u32 _Address, const XCheckTLBFlag _Flag) +static u32 TranslatePageAddress(const u32 _Address, const XCheckTLBFlag _Flag) { // TLB cache u32 translatedAddress = 0; @@ -851,7 +842,7 @@ u32 TranslatePageAddress(const u32 _Address, const XCheckTLBFlag _Flag) #define BAT_EA_4(v) ((v)&0xf0000000) // Block Address Translation -u32 TranslateBlockAddress(const u32 addr, const XCheckTLBFlag _Flag) +static u32 TranslateBlockAddress(const u32 addr, const XCheckTLBFlag _Flag) { u32 result = 0; UReg_MSR& m_MSR = ((UReg_MSR&)PowerPC::ppcState.msr); diff --git a/Source/Core/Core/HW/ProcessorInterface.cpp b/Source/Core/Core/HW/ProcessorInterface.cpp index 52547fd..46aac4e 100644 --- a/Source/Core/Core/HW/ProcessorInterface.cpp +++ b/Source/Core/Core/HW/ProcessorInterface.cpp @@ -43,10 +43,10 @@ u32 Fifo_CPUBase; u32 Fifo_CPUEnd; u32 Fifo_CPUWritePointer; -u32 m_Fifo_Reset; -u32 m_ResetCode; -u32 m_FlipperRev; -u32 m_Unknown; +static u32 m_Fifo_Reset; +static u32 m_ResetCode; +static u32 m_FlipperRev; +static u32 m_Unknown; // ID and callback for scheduling reset button presses/releases @@ -211,7 +211,7 @@ void SetInterrupt(u32 _causemask, bool _bSet) UpdateException(); } -void SetResetButton(bool _bSet) +static void SetResetButton(bool _bSet) { if (_bSet) Common::AtomicAnd(m_InterruptCause, ~INT_CAUSE_RST_BUTTON); diff --git a/Source/Core/Core/HW/SI.cpp b/Source/Core/Core/HW/SI.cpp index 8cfa27d..b36d402 100644 --- a/Source/Core/Core/HW/SI.cpp +++ b/Source/Core/Core/HW/SI.cpp @@ -458,7 +458,7 @@ void AddDevice(const SIDevices _device, int _iDeviceNumber) AddDevice(pDevice); } -void SetNoResponse(u32 channel) +static void SetNoResponse(u32 channel) { // raise the NO RESPONSE error switch (channel) diff --git a/Source/Core/Core/HW/SI_Device.h b/Source/Core/Core/HW/SI_Device.h index 5c819dc..66f85fb 100644 --- a/Source/Core/Core/HW/SI_Device.h +++ b/Source/Core/Core/HW/SI_Device.h @@ -95,4 +95,4 @@ class ISIDevice } }; -extern ISIDevice* SIDevice_Create(const SIDevices device, const int port_number); +ISIDevice* SIDevice_Create(const SIDevices device, const int port_number); diff --git a/Source/Core/Core/HW/SI_DeviceAMBaseboard.cpp b/Source/Core/Core/HW/SI_DeviceAMBaseboard.cpp index 456c765..8d20275 100644 --- a/Source/Core/Core/HW/SI_DeviceAMBaseboard.cpp +++ b/Source/Core/Core/HW/SI_DeviceAMBaseboard.cpp @@ -25,35 +25,35 @@ class JVSIOMessage m_last_start = 0; } - void start(int node) + void Start(int node) { m_last_start = m_ptr; unsigned char hdr[3] = {0xe0, (unsigned char)node, 0}; m_csum = 0; - addData(hdr, 3, 1); + AddData(hdr, 3, 1); } - void addData(const void *data, size_t len) + void AddData(const void *data, size_t len) { - addData((const unsigned char*)data, len); + AddData((const unsigned char*)data, len); } - void addData(const char *data) + void AddData(const char *data) { - addData(data, strlen(data)); + AddData(data, strlen(data)); } - void addData(int n) + void AddData(int n) { unsigned char cs = n; - addData(&cs, 1); + AddData(&cs, 1); } - void end() + void End() { int len = m_ptr - m_last_start; m_msg[m_last_start + 2] = len - 2; // assuming len <0xD0 - addData(m_csum + len - 2); + AddData(m_csum + len - 2); } - void addData(const unsigned char *dst, size_t len, int sync = 0) + void AddData(const unsigned char *dst, size_t len, int sync = 0) { while (len--) { @@ -134,7 +134,7 @@ int CSIDevice_AMBaseboard::RunBuffer(u8* _pBuffer, int _iLength) case 0x10: { DEBUG_LOG(AMBASEBOARDDEBUG, "GC-AM: Command 10, %02x (READ STATUS&SWITCHES)", ptr(1)); - SPADStatus PadStatus; + GCPadStatus PadStatus; memset(&PadStatus, 0 ,sizeof(PadStatus)); Pad::GetStatus(ISIDevice::m_iDeviceNumber, &PadStatus); res[resp++] = 0x10; @@ -236,8 +236,8 @@ int CSIDevice_AMBaseboard::RunBuffer(u8* _pBuffer, int _iLength) int pptr = 2; JVSIOMessage msg; - msg.start(0); - msg.addData(1); + msg.Start(0); + msg.AddData(1); unsigned char jvs_io_buffer[0x80]; int nr_bytes = ptr(pptr + 2); // byte after e0 xx @@ -257,49 +257,49 @@ int CSIDevice_AMBaseboard::RunBuffer(u8* _pBuffer, int _iLength) switch (cmd) { case 0x10: // get ID - msg.addData(1); + msg.AddData(1); { char buffer[12]; sprintf(buffer, "JVS-node %02x", node); //msg.addData(buffer); - msg.addData("JAMMA I/O CONTROLLER"); + msg.AddData("JAMMA I/O CONTROLLER"); } - msg.addData(0); + msg.AddData(0); break; case 0x11: // cmd revision - msg.addData(1); - msg.addData(0x11); + msg.AddData(1); + msg.AddData(0x11); break; case 0x12: // jvs revision - msg.addData(1); - msg.addData(0x12); + msg.AddData(1); + msg.AddData(0x12); break; case 0x13: // com revision - msg.addData(1); - msg.addData(0x13); + msg.AddData(1); + msg.AddData(0x13); break; case 0x14: // get features - msg.addData(1); - msg.addData((void *)"\x01\x02\x0a\x00", 4); // 2 player, 10 bit - msg.addData((void *)"\x02\x02\x00\x00", 4); // 2 coin slots + msg.AddData(1); + msg.AddData((void *)"\x01\x02\x0a\x00", 4); // 2 player, 10 bit + msg.AddData((void *)"\x02\x02\x00\x00", 4); // 2 coin slots //msg.addData((void *)"\x03\x02\x08\x00", 4); - msg.addData((void *)"\x00\x00\x00\x00", 4); + msg.AddData((void *)"\x00\x00\x00\x00", 4); break; case 0x15: while (*jvs_io++) {}; - msg.addData(1); + msg.AddData(1); break; case 0x20: { int nr_players = *jvs_io++; int bytes_per_player = *jvs_io++; /* ??? */ int j; - msg.addData(1); + msg.AddData(1); - msg.addData(0); // tilt + msg.AddData(0); // tilt for (i=0; i> 4) diff --git a/Source/Core/Core/HW/SystemTimers.cpp b/Source/Core/Core/HW/SystemTimers.cpp index 95b4684..9832b92 100644 --- a/Source/Core/Core/HW/SystemTimers.cpp +++ b/Source/Core/Core/HW/SystemTimers.cpp @@ -82,7 +82,7 @@ IPC_HLE_PERIOD: For the Wiimote this is the call schedule: namespace SystemTimers { -u32 CPU_CORE_CLOCK = 486000000u; // 486 mhz (its not 485, stop bugging me!) +static u32 CPU_CORE_CLOCK = 486000000u; // 486 mhz (its not 485, stop bugging me!) /* GameCube MHz @@ -109,19 +109,19 @@ enum TIMER_RATIO = 12 }; -int et_Dec; -int et_VI; -int et_SI; -int et_CP; -int et_AudioDMA; -int et_DSP; -int et_IPC_HLE; -int et_PatchEngine; // PatchEngine updates every 1/60th of a second by default -int et_Throttle; +static int et_Dec; +static int et_VI; +static int et_SI; +static int et_CP; +static int et_AudioDMA; +static int et_DSP; +static int et_IPC_HLE; +static int et_PatchEngine; // PatchEngine updates every 1/60th of a second by default +static int et_Throttle; // These are badly educated guesses // Feel free to experiment. Set these in Init below. -int +static int // This is a fixed value, don't change it AUDIO_DMA_PERIOD, @@ -139,13 +139,8 @@ u32 GetTicksPerSecond() return CPU_CORE_CLOCK; } -u32 ConvertMillisecondsToTicks(u32 _Milliseconds) -{ - return GetTicksPerSecond() / 1000 * _Milliseconds; -} - // DSP/CPU timeslicing. -void DSPCallback(u64 userdata, int cyclesLate) +static void DSPCallback(u64 userdata, int cyclesLate) { //splits up the cycle budget in case lle is used //for hle, just gives all of the slice to hle @@ -153,7 +148,7 @@ void DSPCallback(u64 userdata, int cyclesLate) CoreTiming::ScheduleEvent(DSP::GetDSPEmulator()->DSP_UpdateRate() - cyclesLate, et_DSP); } -void AudioDMACallback(u64 userdata, int cyclesLate) +static void AudioDMACallback(u64 userdata, int cyclesLate) { int fields = VideoInterface::GetNumFields(); int period = CPU_CORE_CLOCK / (AudioInterface::GetAIDSampleRate() * 4 / 32 * fields); @@ -161,7 +156,7 @@ void AudioDMACallback(u64 userdata, int cyclesLate) CoreTiming::ScheduleEvent(period - cyclesLate, et_AudioDMA); } -void IPC_HLE_UpdateCallback(u64 userdata, int cyclesLate) +static void IPC_HLE_UpdateCallback(u64 userdata, int cyclesLate) { if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) { @@ -170,25 +165,25 @@ void IPC_HLE_UpdateCallback(u64 userdata, int cyclesLate) } } -void VICallback(u64 userdata, int cyclesLate) +static void VICallback(u64 userdata, int cyclesLate) { VideoInterface::Update(); CoreTiming::ScheduleEvent(VideoInterface::GetTicksPerLine() - cyclesLate, et_VI); } -void SICallback(u64 userdata, int cyclesLate) +static void SICallback(u64 userdata, int cyclesLate) { SerialInterface::UpdateDevices(); CoreTiming::ScheduleEvent(SerialInterface::GetTicksToNextSIPoll() - cyclesLate, et_SI); } -void CPCallback(u64 userdata, int cyclesLate) +static void CPCallback(u64 userdata, int cyclesLate) { CommandProcessor::Update(); CoreTiming::ScheduleEvent(CP_PERIOD - cyclesLate, et_CP); } -void DecrementerCallback(u64 userdata, int cyclesLate) +static void DecrementerCallback(u64 userdata, int cyclesLate) { PowerPC::ppcState.spr[SPR_DEC] = 0xFFFFFFFF; Common::AtomicOr(PowerPC::ppcState.Exceptions, EXCEPTION_DECREMENTER); @@ -224,7 +219,7 @@ u64 GetFakeTimeBase() return CoreTiming::GetFakeTBStartValue() + ((CoreTiming::GetTicks() - CoreTiming::GetFakeTBStartTicks()) / TIMER_RATIO); } -void PatchEngineCallback(u64 userdata, int cyclesLate) +static void PatchEngineCallback(u64 userdata, int cyclesLate) { // Patch mem and run the Action Replay PatchEngine::ApplyFramePatches(); @@ -232,7 +227,7 @@ void PatchEngineCallback(u64 userdata, int cyclesLate) CoreTiming::ScheduleEvent(VideoInterface::GetTicksPerFrame() - cyclesLate, et_PatchEngine); } -void ThrottleCallback(u64 last_time, int cyclesLate) +static void ThrottleCallback(u64 last_time, int cyclesLate) { u32 time = Common::Timer::GetTimeMs(); diff --git a/Source/Core/Core/HW/VideoInterface.cpp b/Source/Core/Core/HW/VideoInterface.cpp index ee83dcb..8c88d3c 100644 --- a/Source/Core/Core/HW/VideoInterface.cpp +++ b/Source/Core/Core/HW/VideoInterface.cpp @@ -519,27 +519,26 @@ static void BeginField(FieldType field) u32 fbHeight = m_VerticalTimingRegister.ACV * (field == FIELD_PROGRESSIVE ? 1 : 2); u32 xfbAddr; - // NTSC and PAL have opposite field orders. - if (m_DisplayControlRegister.FMT == 1) // PAL + // Only the top field is valid in progressive mode. + if (field == FieldType::FIELD_PROGRESSIVE) { - // But the PAL ports of some games are poorly programmed and don't use correct ordering. - // Zelda: Wind Waker and Simpsons Hit & Run are exampes of this, there are probally more. - // PAL Wind Waker also runs at 30fps instead of 25. - if (field == FieldType::FIELD_PROGRESSIVE || GetXFBAddressBottom() != (GetXFBAddressTop() - 1280)) - { - WARN_LOG(VIDEOINTERFACE, "PAL game is trying to use incorrect (NTSC) field ordering"); - // Lets kindly fix this for them. - xfbAddr = GetXFBAddressTop(); + xfbAddr = GetXFBAddressTop(); + } + else + { + // If we are displaying an interlaced field, we convert it to a progressive field + // by simply using the whole XFB, which 99% of the time contains a whole progressive + // frame. - // TODO: PAL Simpsons Hit & Run now has a green line at the bottom when Real XFB is used. - // Might be a bug later on in our code, or a bug in the actual game. - } + // All known NTSC games use the top/odd field as the upper field but + // PAL games are known to whimsically arrange the fields in either order. + // So to work out which field is pointing to the top of the progressive XFB we check + // which field has the lower PRB value in the VBlank Timing Registers. + + if(m_VBlankTimingOdd.PRB < m_VBlankTimingEven.PRB) + xfbAddr = GetXFBAddressTop(); else - { xfbAddr = GetXFBAddressBottom(); - } - } else { - xfbAddr = GetXFBAddressTop(); } static const char* const fieldTypeNames[] = { "Progressive", "Upper", "Lower" }; diff --git a/Source/Core/Core/HW/WII_IPC.cpp b/Source/Core/Core/HW/WII_IPC.cpp index efbe44d..8b1c855 100644 --- a/Source/Core/Core/HW/WII_IPC.cpp +++ b/Source/Core/Core/HW/WII_IPC.cpp @@ -101,7 +101,7 @@ static u32 arm_irq_masks; static u32 sensorbar_power; // do we need to care about this? -int updateInterrupts; +static int updateInterrupts; void DoState(PointerWrap &p) { diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp index 40b22c4..07a20e3 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.cpp @@ -42,7 +42,7 @@ void Attachment::Reset() } -void ControllerEmu::Extension::GetState(u8* const data, const bool focus) +void ControllerEmu::Extension::GetState(u8* const data) { - ((WiimoteEmu::Attachment*)attachments[active_extension].get())->GetState(data, focus); + ((WiimoteEmu::Attachment*)attachments[active_extension].get())->GetState(data); } diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h index 01b7836..1cce7a7 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Attachment.h @@ -15,7 +15,7 @@ class Attachment : public ControllerEmu public: Attachment(const char* const _name, WiimoteEmu::ExtensionReg& _reg); - virtual void GetState(u8* const data, const bool focus = true) {} + virtual void GetState(u8* const data) {} void Reset(); std::string GetName() const override; diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.cpp index 915d051..80673c8 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.cpp @@ -80,7 +80,7 @@ Classic::Classic(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Classic"), memcpy(&id, classic_id, sizeof(classic_id)); } -void Classic::GetState(u8* const data, const bool focus) +void Classic::GetState(u8* const data) { wm_classic_extension* const ccdata = (wm_classic_extension*)data; ccdata->bt = 0; @@ -89,42 +89,47 @@ void Classic::GetState(u8* const data, const bool focus) // left stick { - u8 x, y; - m_left_stick->GetState(&x, &y, 0x20, focus ? 0x1F /*0x15*/ : 0); + double x, y; + m_left_stick->GetState(&x, &y); - ccdata->lx = x; - ccdata->ly = y; + ccdata->lx = (x * 0x1F) + 0x20; + ccdata->ly = (y * 0x1F) + 0x20; } // right stick { - u8 x, y; - m_right_stick->GetState(&x, &y, 0x10, focus ? 0x0F /*0x0C*/ : 0); + double x, y; + u8 x_, y_; + m_right_stick->GetState(&x, &y); - ccdata->rx1 = x; - ccdata->rx2 = x >> 1; - ccdata->rx3 = x >> 3; - ccdata->ry = y; + x_ = (x * 0x1F) + 0x20; + y_ = (y * 0x1F) + 0x20; + + ccdata->rx1 = x_; + ccdata->rx2 = x_ >> 1; + ccdata->rx3 = x_ >> 3; + ccdata->ry = y_; } //triggers { - u8 trigs[2]; - m_triggers->GetState(&ccdata->bt, classic_trigger_bitmasks, trigs, focus ? 0x1F : 0); + double trigs[2] = { 0, 0 }; + u8 lt, rt; + m_triggers->GetState(&ccdata->bt, classic_trigger_bitmasks, trigs); - ccdata->lt1 = trigs[0]; - ccdata->lt2 = trigs[0] >> 3; - ccdata->rt = trigs[1]; - } + lt = trigs[0] * 0x1F; + rt = trigs[1] * 0x1F; - if (focus) - { - // buttons - m_buttons->GetState(&ccdata->bt, classic_button_bitmasks); - // dpad - m_dpad->GetState(&ccdata->bt, classic_dpad_bitmasks); + ccdata->lt1 = lt; + ccdata->lt2 = lt >> 3; + ccdata->rt = rt; } + // buttons + m_buttons->GetState(&ccdata->bt, classic_button_bitmasks); + // dpad + m_dpad->GetState(&ccdata->bt, classic_dpad_bitmasks); + // flip button bits ccdata->bt ^= 0xFFFF; } diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h index 6094ecb..6b4701d 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Classic.h @@ -13,7 +13,7 @@ class Classic : public Attachment { public: Classic(WiimoteEmu::ExtensionReg& _reg); - void GetState(u8* const data, const bool focus) override; + void GetState(u8* const data) override; enum { diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.cpp index 35a1fe8..b648f14 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.cpp @@ -51,7 +51,7 @@ Drums::Drums(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Drums"), _reg) memcpy(&id, drums_id, sizeof(drums_id)); } -void Drums::GetState(u8* const data, const bool focus) +void Drums::GetState(u8* const data) { wm_drums_extension* const ddata = (wm_drums_extension*)data; ddata->bt = 0; @@ -60,24 +60,21 @@ void Drums::GetState(u8* const data, const bool focus) // stick { - u8 x, y; - m_stick->GetState(&x, &y, 0x20, focus ? 0x1F /*0x15*/ : 0); + double x, y; + m_stick->GetState(&x, &y); - ddata->sx = x; - ddata->sy = y; + ddata->sx = (x * 0x1F) + 0x20; + ddata->sx = (y * 0x1F) + 0x20; } // TODO: softness maybe data[2] = 0xFF; data[3] = 0xFF; - if (focus) - { - // buttons - m_buttons->GetState(&ddata->bt, drum_button_bitmasks); - // pads - m_pads->GetState(&ddata->bt, drum_pad_bitmasks); - } + // buttons + m_buttons->GetState(&ddata->bt, drum_button_bitmasks); + // pads + m_pads->GetState(&ddata->bt, drum_pad_bitmasks); // flip button bits ddata->bt ^= 0xFFFF; diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h index 8c2bbc1..e1de04c 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Drums.h @@ -13,7 +13,7 @@ class Drums : public Attachment { public: Drums(WiimoteEmu::ExtensionReg& _reg); - void GetState(u8* const data, const bool focus) override; + void GetState(u8* const data) override; enum { diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.cpp index 51c3224..7f1440b 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.cpp @@ -64,7 +64,7 @@ Guitar::Guitar(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Guitar"), _r memcpy(&id, guitar_id, sizeof(guitar_id)); } -void Guitar::GetState(u8* const data, const bool focus) +void Guitar::GetState(u8* const data) { wm_guitar_extension* const gdata = (wm_guitar_extension*)data; gdata->bt = 0; @@ -73,30 +73,27 @@ void Guitar::GetState(u8* const data, const bool focus) // stick { - u8 x, y; - m_stick->GetState(&x, &y, 0x20, focus ? 0x1F /*0x15*/ : 0); + double x, y; + m_stick->GetState(&x, &y); - gdata->sx = x; - gdata->sy = y; + gdata->sx = (x * 0x1F) + 0x20; + gdata->sy = (y * 0x1F) + 0x20; } // TODO: touch bar, probably not gdata->tb = 0x0F; // not touched // whammy bar - u8 whammy; - m_whammy->GetState(&whammy, 0x1F); - gdata->whammy = whammy; + double whammy; + m_whammy->GetState(&whammy); + gdata->whammy = whammy * 0x1F; - if (focus) - { - // buttons - m_buttons->GetState(&gdata->bt, guitar_button_bitmasks); - // frets - m_frets->GetState(&gdata->bt, guitar_fret_bitmasks); - // strum - m_strum->GetState(&gdata->bt, guitar_strum_bitmasks); - } + // buttons + m_buttons->GetState(&gdata->bt, guitar_button_bitmasks); + // frets + m_frets->GetState(&gdata->bt, guitar_fret_bitmasks); + // strum + m_strum->GetState(&gdata->bt, guitar_strum_bitmasks); // flip button bits gdata->bt ^= 0xFFFF; diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h index 379096c..bf25fe9 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Guitar.h @@ -13,7 +13,7 @@ class Guitar : public Attachment { public: Guitar(WiimoteEmu::ExtensionReg& _reg); - void GetState(u8* const data, const bool focus) override; + void GetState(u8* const data) override; enum { diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.cpp index 0bd5b65..578c3b9 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.cpp @@ -4,9 +4,6 @@ #include "Core/HW/WiimoteEmu/Attachment/Nunchuk.h" -#include "InputCommon/UDPWiimote.h" -#include "InputCommon/UDPWrapper.h" - namespace WiimoteEmu { @@ -31,8 +28,7 @@ static const u8 nunchuk_button_bitmasks[] = Nunchuk::BUTTON_Z, }; -Nunchuk::Nunchuk(UDPWrapper *wrp, WiimoteEmu::ExtensionReg& _reg) - : Attachment(_trans("Nunchuk"), _reg) , m_udpWrap(wrp) +Nunchuk::Nunchuk(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Nunchuk"), _reg) { // buttons groups.emplace_back(m_buttons = new Buttons("Buttons")); @@ -64,23 +60,23 @@ Nunchuk::Nunchuk(UDPWrapper *wrp, WiimoteEmu::ExtensionReg& _reg) memset(m_shake_step, 0, sizeof(m_shake_step)); } -void Nunchuk::GetState(u8* const data, const bool focus) +void Nunchuk::GetState(u8* const data) { wm_extension* const ncdata = (wm_extension*)data; ncdata->bt = 0; // stick - ControlState state[2]; - m_stick->GetState(&state[0], &state[1], 0, 1); + double state[2]; + m_stick->GetState(&state[0], &state[1]); nu_cal &cal = *(nu_cal*)®.calibration; nu_js cal_js[2]; - cal_js[0] = *&cal.jx; - cal_js[1] = *&cal.jy; + cal_js[0] = cal.jx; + cal_js[1] = cal.jy; for (int i = 0; i < 2; i++) { - ControlState &s = *&state[i]; - nu_js c = *&cal_js[i]; + double &s = state[i]; + nu_js c = cal_js[i]; if (s < 0) s = s * abs(c.min - c.center) + c.center; else if (s > 0) @@ -100,59 +96,21 @@ void Nunchuk::GetState(u8* const data, const bool focus) ncdata->jx = cal.jx.center + 1; } - if (!focus) - { - ncdata->jx = cal.jx.center; - ncdata->jy = cal.jy.center; - } - AccelData accel; // tilt - EmulateTilt(&accel, m_tilt, focus); + EmulateTilt(&accel, m_tilt); - if (focus) - { - // swing - EmulateSwing(&accel, m_swing); - // shake - EmulateShake(&accel, m_shake, m_shake_step); - // buttons - m_buttons->GetState(&ncdata->bt, nunchuk_button_bitmasks); - } + // swing + EmulateSwing(&accel, m_swing); + // shake + EmulateShake(&accel, m_shake, m_shake_step); + // buttons + m_buttons->GetState(&ncdata->bt, nunchuk_button_bitmasks); // flip the button bits :/ ncdata->bt ^= 0x03; - if (m_udpWrap->inst) - { - if (m_udpWrap->updNun) - { - u8 mask; - float x, y; - m_udpWrap->inst->getNunchuck(&x, &y, &mask); - // buttons - if (mask & UDPWM_NC) - ncdata->bt &= ~WiimoteEmu::Nunchuk::BUTTON_C; - if (mask & UDPWM_NZ) - ncdata->bt &= ~WiimoteEmu::Nunchuk::BUTTON_Z; - // stick - if (ncdata->jx == 0x80 && ncdata->jy == 0x80) - { - ncdata->jx = u8(0x80 + x*127); - ncdata->jy = u8(0x80 + y*127); - } - } - if (m_udpWrap->updNunAccel) - { - float x, y, z; - m_udpWrap->inst->getNunchuckAccel(&x, &y, &z); - accel.x = x; - accel.y = y; - accel.z = z; - } - } - FillRawAccelFromGForceData(*(wm_accel*)&ncdata->ax, *(accel_cal*)®.calibration, accel); } diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h index 83a7540..dbb91e3 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Nunchuk.h @@ -6,17 +6,15 @@ #include "Core/HW/WiimoteEmu/Attachment/Attachment.h" -class UDPWrapper; - namespace WiimoteEmu { class Nunchuk : public Attachment { public: - Nunchuk(UDPWrapper * wrp, WiimoteEmu::ExtensionReg& _reg); + Nunchuk(WiimoteEmu::ExtensionReg& _reg); - virtual void GetState(u8* const data, const bool focus) override; + virtual void GetState(u8* const data) override; enum { @@ -36,8 +34,6 @@ class Nunchuk : public Attachment AnalogStick* m_stick; u8 m_shake_step[3]; - - UDPWrapper* const m_udpWrap; }; } diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.cpp b/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.cpp index 650d5b6..b21c5cb 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.cpp @@ -55,63 +55,68 @@ Turntable::Turntable(WiimoteEmu::ExtensionReg& _reg) : Attachment(_trans("Turnta memcpy(&id, turntable_id, sizeof(turntable_id)); } -void Turntable::GetState(u8* const data, const bool focus) +void Turntable::GetState(u8* const data) { wm_turntable_extension* const ttdata = (wm_turntable_extension*)data; ttdata->bt = 0; // stick { - u8 x, y; - m_stick->GetState(&x, &y, 0x20, focus ? 0x1F /*0x15*/ : 0); + double x, y; + m_stick->GetState(&x, &y); - ttdata->sx = x; - ttdata->sy = y; + ttdata->sx = (x * 0x1F) + 0x20; + ttdata->sy = (y * 0x1F) + 0x20; } // left table { - s8 tt = 0; - m_left_table->GetState(&tt, focus ? 0x1F : 0); + double tt; + s8 tt_; + m_left_table->GetState(&tt); - ttdata->ltable1 = tt; - ttdata->ltable2 = tt >> 5; + tt_ = tt * 0x1F; + + ttdata->ltable1 = tt_; + ttdata->ltable2 = tt_ >> 5; } // right table { - s8 tt = 0; - m_right_table->GetState(&tt, focus ? 0x1F : 0); + double tt; + s8 tt_; + m_right_table->GetState(&tt); + + tt_ = tt * 0x1F; - ttdata->rtable1 = tt; - ttdata->rtable2 = tt >> 1; - ttdata->rtable3 = tt >> 3; - ttdata->rtable4 = tt >> 5; + ttdata->rtable1 = tt_; + ttdata->rtable2 = tt_ >> 1; + ttdata->rtable3 = tt_ >> 3; + ttdata->rtable4 = tt_ >> 5; } // effect dial { - u8 dial = 0; - m_effect_dial->GetState(&dial, focus ? 0xF : 0); + double dial; + u8 dial_; + m_effect_dial->GetState(&dial); + + dial_ = dial * 0x0F; - ttdata->dial1 = dial; - ttdata->dial2 = dial >> 3; + ttdata->dial1 = dial_; + ttdata->dial2 = dial_ >> 3; } // crossfade slider { - s8 cfs = 0; - m_crossfade->GetState(&cfs, focus ? 7 : 0); - cfs += 8; + double cfs; + m_crossfade->GetState(&cfs); - ttdata->slider = cfs; + ttdata->slider = (cfs * 0x07) + 0x08; } - if (focus) - { - // buttons - m_buttons->GetState(&ttdata->bt, turntable_button_bitmasks); - } + // buttons + m_buttons->GetState(&ttdata->bt, turntable_button_bitmasks); // flip button bits :/ ttdata->bt ^= ( diff --git a/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h b/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h index 48b3658..a3259a3 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h +++ b/Source/Core/Core/HW/WiimoteEmu/Attachment/Turntable.h @@ -13,7 +13,7 @@ class Turntable : public Attachment { public: Turntable(WiimoteEmu::ExtensionReg& _reg); - void GetState(u8* const data, const bool focus) override; + void GetState(u8* const data) override; enum { diff --git a/Source/Core/Core/HW/WiimoteEmu/EmuSubroutines.cpp b/Source/Core/Core/HW/WiimoteEmu/EmuSubroutines.cpp index 6cdd65c..2dd5326 100644 --- a/Source/Core/Core/HW/WiimoteEmu/EmuSubroutines.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/EmuSubroutines.cpp @@ -174,7 +174,7 @@ void Spy(Wiimote* wm_, const void* data_, size_t size_) // save key if (region_offset >= 0x40 && region_offset <= 0x4c) { if (!emu) - wiimote_gen_key(&wm->m_ext_key, wm->m_reg_ext.encryption_key); + WiimoteGenerateKey(&wm->m_ext_key, wm->m_reg_ext.encryption_key); INFO_LOG(CONSOLE, "Writing key: %s", ArrayToString((u8*)&wm->m_ext_key, sizeof(wm->m_ext_key), 0, 30).c_str()); } if (data[3] == 0xa4 || data[3] == 0xa6) { @@ -347,7 +347,7 @@ void Spy(Wiimote* wm_, const void* data_, size_t size_) if (!emu && rdr->address>>8 == 0x40) { memcpy(((u8*)&wm->m_reg_ext.encryption_key), rdr->data, rdr->size+1); - wiimote_gen_key(&wm->m_ext_key, wm->m_reg_ext.encryption_key); + WiimoteGenerateKey(&wm->m_ext_key, wm->m_reg_ext.encryption_key); NOTICE_LOG(CONSOLE, "Reading key: %s", ArrayToString(((u8*)&wm->m_ext_key), sizeof(wm->m_ext_key), 0, 30).c_str()); } @@ -362,7 +362,7 @@ void Spy(Wiimote* wm_, const void* data_, size_t size_) // SWARN_LOG(CONSOLE, "key %s", ArrayToString(((u8*)&wm->m_ext_key), sizeof(wm->m_ext_key), 0, 30).c_str()); // SWARN_LOG(CONSOLE, "decrypt %s", ArrayToString(rdr->data, rdr->size+1, 0, 30).c_str()); - // wiimote_decrypt(&wm->m_ext_key, rdr->data, dataReply[2]&0xffff, rdr->size+1); + // WiimoteDecrypt(&wm->m_ext_key, rdr->data, dataReply[2]&0xffff, rdr->size+1); // SWARN_LOG(CONSOLE, "decrypt %s", ArrayToString(rdr->data, rdr->size+1, 0, 30).c_str()); // decrypted = true; //} @@ -394,7 +394,7 @@ void Spy(Wiimote* wm_, const void* data_, size_t size_) // decrypt //if(((u8*)&wm->m_reg_ext)[0xf0] == 0xaa) { - // wiimote_decrypt(&wm->m_ext_key, &data[0x07], 0x00, (data[4] >> 0x04) + 1); + // WiimoteDecrypt(&wm->m_ext_key, &data[0x07], 0x00, (data[4] >> 0x04) + 1); //if (wm->m_extension->name == "NUNCHUCK") //{ @@ -542,9 +542,9 @@ void Spy(Wiimote* wm_, const void* data_, size_t size_) // decrypt extension data //if (data[1] == 0x37 && !wm->GetMotionPlusActive()) //if (data[1] == 0x37) - // wiimote_decrypt(&wm->m_ext_key, &data[17], 0x00, 0x06); + // WiimoteDecrypt(&wm->m_ext_key, &data[17], 0x00, 0x06); //if (data[1] == 0x35) - // wiimote_decrypt(&wm->m_ext_key, &data[7], 0x00, 0x06); + // WiimoteDecrypt(&wm->m_ext_key, &data[7], 0x00, 0x06); //if (data[1] == 0x35 || data[1] == 0x37) //{ @@ -1004,7 +1004,7 @@ void Wiimote::WriteData(const wm_write_data* const wd) // Run the key generation on all writes in the key area, it doesn't matter // that we send it parts of a key, only the last full key will have an effect if (address >= 0xa40040 && address <= 0xa4004c) - wiimote_gen_key(&m_ext_key, m_reg_ext.encryption_key); + WiimoteGenerateKey(&m_ext_key, m_reg_ext.encryption_key); } else if (&m_reg_motion_plus == region_ptr) { @@ -1139,7 +1139,7 @@ void Wiimote::ReadData(const wm_read_data* const rd) // Encrypt data read from extension register // Check if encrypted reads is on if (0xaa == m_reg_ext.encryption) - wiimote_encrypt(&m_ext_key, block, address & 0xffff, (u8)size); + WiimoteEncrypt(&m_ext_key, block, address & 0xffff, (u8)size); } } break; diff --git a/Source/Core/Core/HW/WiimoteEmu/Encryption.cpp b/Source/Core/Core/HW/WiimoteEmu/Encryption.cpp index 89454b4..4d142f8 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Encryption.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/Encryption.cpp @@ -186,13 +186,13 @@ static const u8 sboxes[8][256] = { }; -static inline u8 ror8(const u8 a, const u8 b) +static inline u8 ROR8(const u8 a, const u8 b) { return (a>>b) | ((a<<(8-b))&0xff); } -void genkey(const u8* const rand, const u8 idx, u8* const key) +static void GenerateKey(const u8* const rand, const u8 idx, u8* const key) { const u8* const ans = ans_tbl[idx]; u8 t0[10]; @@ -200,16 +200,16 @@ void genkey(const u8* const rand, const u8 idx, u8* const key) for (int i=0; i<10; ++i) t0[i] = tsbox[rand[i]]; - key[0] = ((ror8((ans[0]^t0[5]),(t0[2]%8)) - t0[9]) ^ t0[4]); - key[1] = ((ror8((ans[1]^t0[1]),(t0[0]%8)) - t0[5]) ^ t0[7]); - key[2] = ((ror8((ans[2]^t0[6]),(t0[8]%8)) - t0[2]) ^ t0[0]); - key[3] = ((ror8((ans[3]^t0[4]),(t0[7]%8)) - t0[3]) ^ t0[2]); - key[4] = ((ror8((ans[4]^t0[1]),(t0[6]%8)) - t0[3]) ^ t0[4]); - key[5] = ((ror8((ans[5]^t0[7]),(t0[8]%8)) - t0[5]) ^ t0[9]); + key[0] = ((ROR8((ans[0]^t0[5]),(t0[2]%8)) - t0[9]) ^ t0[4]); + key[1] = ((ROR8((ans[1]^t0[1]),(t0[0]%8)) - t0[5]) ^ t0[7]); + key[2] = ((ROR8((ans[2]^t0[6]),(t0[8]%8)) - t0[2]) ^ t0[0]); + key[3] = ((ROR8((ans[3]^t0[4]),(t0[7]%8)) - t0[3]) ^ t0[2]); + key[4] = ((ROR8((ans[4]^t0[1]),(t0[6]%8)) - t0[3]) ^ t0[4]); + key[5] = ((ROR8((ans[5]^t0[7]),(t0[8]%8)) - t0[5]) ^ t0[9]); } -void gentabs(const u8* const rand, const u8* const key, const u8 idx, u8* const ft, u8* const sb) +static void GenerateTables(const u8* const rand, const u8* const key, const u8 idx, u8* const ft, u8* const sb) { ft[0] = sboxes[idx][key[4]] ^ sboxes[(idx+1)%8][rand[3]]; ft[1] = sboxes[idx][key[2]] ^ sboxes[(idx+1)%8][rand[5]]; @@ -234,7 +234,7 @@ void gentabs(const u8* const rand, const u8* const key, const u8 idx, u8* const /* Generate key from the 0x40-0x4c data in g_RegExt */ -void wiimote_gen_key(wiimote_key* const key, const u8* const keydata) +void WiimoteGenerateKey(wiimote_key* const key, const u8* const keydata) { u8 rand[10]; u8 skey[6]; @@ -251,14 +251,14 @@ void wiimote_gen_key(wiimote_key* const key, const u8* const keydata) for (idx = 0; idx < 7; ++idx) { - genkey(rand, idx, testkey); + GenerateKey(rand, idx, testkey); if (0 == memcmp(testkey, skey, 6)) break; } // default case is idx = 7 which is valid (homebrew uses it for the 0x17 case) //DEBUG_LOG(WIIMOTE, "idx: %d", idx); - gentabs(rand, skey, idx, key->ft, key->sb); + GenerateTables(rand, skey, idx, key->ft, key->sb); //DEBUG_LOG(WIIMOTE, "ft: %02x %02x %02x %02x %02x %02x %02x %02x", key->ft[0], key->ft[1], key->ft[2], key->ft[3], key->ft[4], key->ft[5], key->ft[6], key->ft[7]); //DEBUG_LOG(WIIMOTE, "sb: %02x %02x %02x %02x %02x %02x %02x %02x", key->sb[0], key->sb[1], key->sb[2], key->sb[3], key->sb[4], key->sb[5], key->sb[6], key->sb[7]); @@ -268,7 +268,7 @@ void wiimote_gen_key(wiimote_key* const key, const u8* const keydata) // TODO: is there a reason these can only handle a length of 255? /* Encrypt data */ -void wiimote_encrypt(const wiimote_key* const key, u8* const data, int addr, const u8 len) +void WiimoteEncrypt(const wiimote_key* const key, u8* const data, int addr, const u8 len) { for (int i = 0; i < len; ++i, ++addr) data[i] = (data[i] - key->ft[addr % 8]) ^ key->sb[addr % 8]; @@ -276,7 +276,7 @@ void wiimote_encrypt(const wiimote_key* const key, u8* const data, int addr, con /* Decrypt data */ -void wiimote_decrypt(const wiimote_key* const key, u8* const data, int addr, const u8 len) +void WiimoteDecrypt(const wiimote_key* const key, u8* const data, int addr, const u8 len) { for (int i = 0; i < len; ++i, ++addr) data[i] = (data[i] ^ key->sb[addr % 8]) + key->ft[addr % 8]; diff --git a/Source/Core/Core/HW/WiimoteEmu/Encryption.h b/Source/Core/Core/HW/WiimoteEmu/Encryption.h index 828433d..3b111e2 100644 --- a/Source/Core/Core/HW/WiimoteEmu/Encryption.h +++ b/Source/Core/Core/HW/WiimoteEmu/Encryption.h @@ -6,9 +6,7 @@ #pragma once -// =================================================== -/* They key structure to use with wiimote_gen_key() */ -// ---------------- +// The key structure to use with WiimoteGenerateKey() struct wiimote_key { u8 ft[8]; @@ -16,7 +14,7 @@ struct wiimote_key }; -void wiimote_encrypt(const wiimote_key* const key, u8* const data, int addr, const u8 len); -void wiimote_decrypt(const wiimote_key* const key, u8* const data, int addr, const u8 len); +void WiimoteEncrypt(const wiimote_key* const key, u8* const data, int addr, const u8 len); +void WiimoteDecrypt(const wiimote_key* const key, u8* const data, int addr, const u8 len); -void wiimote_gen_key(wiimote_key* const key, const u8* const keydata); +void WiimoteGenerateKey(wiimote_key* const key, const u8* const keydata); diff --git a/Source/Core/Core/HW/WiimoteEmu/UDPTLayer.h b/Source/Core/Core/HW/WiimoteEmu/UDPTLayer.h deleted file mode 100644 index 003cc90..0000000 --- a/Source/Core/Core/HW/WiimoteEmu/UDPTLayer.h +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2013 Dolphin Emulator Project -// Licensed under GPLv2 -// Refer to the license.txt file included. - -//UDP Wiimote Translation Layer - -#pragma once - -#include "Core/HW/WiimoteEmu/WiimoteEmu.h" -#include "InputCommon/UDPWiimote.h" - -namespace UDPTLayer -{ - void GetButtons(UDPWrapper * m , wm_core * butt) - { - if (!(m->inst)) return; - if (!(m->updButt)) return; - u32 mask = m->inst->getButtons(); - *butt |= (mask & UDPWM_BA) ? WiimoteEmu::Wiimote::BUTTON_A : 0; - *butt |= (mask & UDPWM_BB) ? WiimoteEmu::Wiimote::BUTTON_B : 0; - *butt |= (mask & UDPWM_B1) ? WiimoteEmu::Wiimote::BUTTON_ONE : 0; - *butt |= (mask & UDPWM_B2) ? WiimoteEmu::Wiimote::BUTTON_TWO : 0; - *butt |= (mask & UDPWM_BP) ? WiimoteEmu::Wiimote::BUTTON_PLUS : 0; - *butt |= (mask & UDPWM_BM) ? WiimoteEmu::Wiimote::BUTTON_MINUS : 0; - *butt |= (mask & UDPWM_BH) ? WiimoteEmu::Wiimote::BUTTON_HOME : 0; - *butt |= (mask & UDPWM_BU) ? WiimoteEmu::Wiimote::PAD_UP : 0; - *butt |= (mask & UDPWM_BD) ? WiimoteEmu::Wiimote::PAD_DOWN : 0; - *butt |= (mask & UDPWM_BL) ? WiimoteEmu::Wiimote::PAD_LEFT : 0; - *butt |= (mask & UDPWM_BR) ? WiimoteEmu::Wiimote::PAD_RIGHT : 0; - } - - void GetAcceleration(UDPWrapper * m , WiimoteEmu::AccelData * const data) - { - if (!(m->inst)) return; - if (!(m->updAccel)) return; - float x, y, z; - m->inst->getAccel(&x, &y, &z); - data->x = x; - data->y = y; - data->z = z; - } - - void GetIR( UDPWrapper * m, float * x, float * y, float * z) - { - if (!(m->inst)) return; - if (!(m->updIR)) return; - if ((*x >= -0.999) && (*x <= 0.999) && (*y >= -0.999) && (*y <= 0.999)) return; //the received values are used ONLY when the normal pointer is offscreen - float _x, _y; - m->inst->getIR(&_x, &_y); - *x = _x * 2 - 1; - *y = -(_y * 2 - 1); - *z = 0; - } -} diff --git a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp index 0b32f52..e6c3e00 100644 --- a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp @@ -13,7 +13,6 @@ #include "Core/NetPlayClient.h" #include "Core/HW/WiimoteEmu/MatrixMath.h" -#include "Core/HW/WiimoteEmu/UDPTLayer.h" #include "Core/HW/WiimoteEmu/WiimoteEmu.h" #include "Core/HW/WiimoteEmu/WiimoteHid.h" #include "Core/HW/WiimoteEmu/Attachment/Classic.h" @@ -54,7 +53,7 @@ static const u8 eeprom_data_16D0[] = { 0x77, 0x88, 0x00, 0x00, 0x2B, 0x01, 0xE8, 0x13 }; -const ReportFeatures reporting_mode_features[] = +static const ReportFeatures reporting_mode_features[] = { //0x30: Core Buttons { 2, 0, 0, 0, 4 }, @@ -119,11 +118,14 @@ void EmulateShake(AccelData* const accel void EmulateTilt(AccelData* const accel , ControllerEmu::Tilt* const tilt_group - , const bool focus, const bool sideways, const bool upright) + , const bool sideways, const bool upright) { - float roll, pitch; + double roll, pitch; // 180 degrees - tilt_group->GetState(&roll, &pitch, 0, focus ? PI : 0); + tilt_group->GetState(&roll, &pitch); + + roll *= PI; + pitch *= PI; unsigned int ud = 0, lr = 0, fb = 0; @@ -145,7 +147,7 @@ void EmulateTilt(AccelData* const accel if (!sideways && upright) sgn[ud] *= -1; - (&accel->x)[ud] = (sin((PI / 2) - std::max(fabsf(roll), fabsf(pitch))))*sgn[ud]; + (&accel->x)[ud] = (sin((PI / 2) - std::max(fabs(roll), fabs(pitch))))*sgn[ud]; (&accel->x)[lr] = -sin(roll)*sgn[lr]; (&accel->x)[fb] = sin(pitch)*sgn[fb]; } @@ -156,8 +158,8 @@ void EmulateSwing(AccelData* const accel , ControllerEmu::Force* const swing_group , const bool sideways, const bool upright) { - float swing[3]; - swing_group->GetState(swing, 0, SWING_INTENSITY); + double swing[3]; + swing_group->GetState(swing); s8 g_dir[3] = {-1, -1, -1}; u8 axis_map[3]; @@ -175,7 +177,7 @@ void EmulateSwing(AccelData* const accel g_dir[axis_map[0]] *= -1; for (unsigned int i=0; i<3; ++i) - (&accel->x)[axis_map[i]] += swing[i] * g_dir[i]; + (&accel->x)[axis_map[i]] += swing[i] * g_dir[i] * SWING_INTENSITY; } const u16 button_bitmasks[] = @@ -266,9 +268,6 @@ Wiimote::Wiimote( const unsigned int index ) for (auto& named_button : named_buttons) m_buttons->controls.emplace_back(new ControlGroup::Input( named_button)); - // udp - groups.emplace_back(m_udp = new UDPWrapper(m_index, _trans("UDP Wiimote"))); - // ir groups.emplace_back(m_ir = new Cursor(_trans("IR"))); @@ -287,7 +286,7 @@ Wiimote::Wiimote( const unsigned int index ) // extension groups.emplace_back(m_extension = new Extension(_trans("Extension"))); m_extension->attachments.emplace_back(new WiimoteEmu::None(m_reg_ext)); - m_extension->attachments.emplace_back(new WiimoteEmu::Nunchuk(m_udp, m_reg_ext)); + m_extension->attachments.emplace_back(new WiimoteEmu::Nunchuk(m_reg_ext)); m_extension->attachments.emplace_back(new WiimoteEmu::Classic(m_reg_ext)); m_extension->attachments.emplace_back(new WiimoteEmu::Guitar(m_reg_ext)); m_extension->attachments.emplace_back(new WiimoteEmu::Drums(m_reg_ext)); @@ -306,7 +305,7 @@ Wiimote::Wiimote( const unsigned int index ) // options groups.emplace_back( m_options = new ControlGroup(_trans("Options"))); - m_options->settings.emplace_back(new ControlGroup::Setting(_trans("Background Input"), false)); + m_options->settings.emplace_back(new ControlGroup::BackgroundInputSetting(_trans("Background Input"))); m_options->settings.emplace_back(new ControlGroup::Setting(_trans("Sideways Wiimote"), false)); m_options->settings.emplace_back(new ControlGroup::Setting(_trans("Upright Wiimote"), false)); @@ -322,26 +321,17 @@ std::string Wiimote::GetName() const return std::string("Wiimote") + char('1'+m_index); } -// if windows is focused or background input is enabled -#define HAS_FOCUS (Host_RendererHasFocus() || (m_options->settings[0]->value != 0)) - bool Wiimote::Step() { - const bool has_focus = HAS_FOCUS; - // TODO: change this a bit m_motion_plus_present = m_extension->settings[0]->value != 0; - // no rumble if no focus - if (false == has_focus) - m_rumble_on = false; - m_rumble->controls[0]->control_ref->State(m_rumble_on); // when a movie is active, this button status update is disabled (moved), because movies only record data reports. if (!(Movie::IsPlayingInput() || Movie::IsRecordingInput()) || NetPlay::IsNetPlayRunning()) { - UpdateButtonsStatus(has_focus); + UpdateButtonsStatus(); } // check if there is a read data request @@ -381,17 +371,13 @@ bool Wiimote::Step() return false; } -void Wiimote::UpdateButtonsStatus(bool has_focus) +void Wiimote::UpdateButtonsStatus() { // update buttons in status struct m_status.buttons = 0; - if (has_focus) - { - const bool is_sideways = m_options->settings[1]->value != 0; - m_buttons->GetState(&m_status.buttons, button_bitmasks); - m_dpad->GetState(&m_status.buttons, is_sideways ? dpad_sideways_bitmasks : dpad_bitmasks); - UDPTLayer::GetButtons(m_udp, &m_status.buttons); - } + const bool is_sideways = m_options->settings[1]->value != 0; + m_buttons->GetState(&m_status.buttons, button_bitmasks); + m_dpad->GetState(&m_status.buttons, is_sideways ? dpad_sideways_bitmasks : dpad_bitmasks); } void Wiimote::GetCoreData(u8* const data) @@ -399,7 +385,7 @@ void Wiimote::GetCoreData(u8* const data) // when a movie is active, the button update happens here instead of Wiimote::Step, to avoid potential desync issues. if (Movie::IsPlayingInput() || Movie::IsRecordingInput() || NetPlay::IsNetPlayRunning()) { - UpdateButtonsStatus(HAS_FOCUS); + UpdateButtonsStatus(); } *(wm_core*)data |= m_status.buttons; @@ -407,21 +393,16 @@ void Wiimote::GetCoreData(u8* const data) void Wiimote::GetAccelData(u8* const data) { - const bool has_focus = HAS_FOCUS; const bool is_sideways = m_options->settings[1]->value != 0; const bool is_upright = m_options->settings[2]->value != 0; // ----TILT---- - EmulateTilt(&m_accel, m_tilt, has_focus, is_sideways, is_upright); + EmulateTilt(&m_accel, m_tilt, is_sideways, is_upright); // ----SWING---- // ----SHAKE---- - if (has_focus) - { - EmulateSwing(&m_accel, m_swing, is_sideways, is_upright); - EmulateShake(&m_accel, m_shake, m_shake_step); - UDPTLayer::GetAcceleration(m_udp, &m_accel); - } + EmulateSwing(&m_accel, m_swing, is_sideways, is_upright); + EmulateShake(&m_accel, m_shake, m_shake_step); FillRawAccelFromGForceData(*(wm_accel*)data, *(accel_cal*)&m_eeprom[0x16], m_accel); } @@ -435,94 +416,89 @@ inline void LowPassFilter(double & var, double newval, double period) void Wiimote::GetIRData(u8* const data, bool use_accel) { - const bool has_focus = HAS_FOCUS; - u16 x[4], y[4]; memset(x, 0xFF, sizeof(x)); - if (has_focus) - { - float xx = 10000, yy = 0, zz = 0; - double nsin,ncos; + double xx = 10000, yy = 0, zz = 0; + double nsin,ncos; - if (use_accel) + if (use_accel) + { + double ax,az,len; + ax=m_accel.x; + az=m_accel.z; + len=sqrt(ax*ax+az*az); + if (len) { - double ax,az,len; - ax=m_accel.x; - az=m_accel.z; - len=sqrt(ax*ax+az*az); - if (len) - { - ax/=len; - az/=len; //normalizing the vector - nsin=ax; - ncos=az; - } - else - { - nsin=0; - ncos=1; - } - // PanicAlert("%d %d %d\nx:%f\nz:%f\nsin:%f\ncos:%f",accel->x,accel->y,accel->z,ax,az,sin,cos); - // PanicAlert("%d %d %d\n%d %d %d\n%d %d %d",accel->x,accel->y,accel->z,calib->zero_g.x,calib->zero_g.y,calib->zero_g.z, calib->one_g.x,calib->one_g.y,calib->one_g.z); + ax/=len; + az/=len; //normalizing the vector + nsin=ax; + ncos=az; } else { - nsin=0; //m_tilt stuff here (can't figure it out yet....) + nsin=0; ncos=1; } + // PanicAlert("%d %d %d\nx:%f\nz:%f\nsin:%f\ncos:%f",accel->x,accel->y,accel->z,ax,az,sin,cos); + // PanicAlert("%d %d %d\n%d %d %d\n%d %d %d",accel->x,accel->y,accel->z,calib->zero_g.x,calib->zero_g.y,calib->zero_g.z, calib->one_g.x,calib->one_g.y,calib->one_g.z); + } + else + { + nsin=0; //m_tilt stuff here (can't figure it out yet....) + ncos=1; + } - LowPassFilter(ir_sin,nsin,1.0f/60); - LowPassFilter(ir_cos,ncos,1.0f/60); + LowPassFilter(ir_sin,nsin,1.0f/60); + LowPassFilter(ir_cos,ncos,1.0f/60); - m_ir->GetState(&xx, &yy, &zz, true); - UDPTLayer::GetIR(m_udp, &xx, &yy, &zz); + m_ir->GetState(&xx, &yy, &zz, true); - Vertex v[4]; + Vertex v[4]; - static const int camWidth=1024; - static const int camHeight=768; - static const double bndup=-0.315447; - static const double bnddown=0.85; - static const double bndleft=0.443364; - static const double bndright=-0.443364; - static const double dist1=100.f/camWidth; //this seems the optimal distance for zelda - static const double dist2=1.2f*dist1; + static const int camWidth=1024; + static const int camHeight=768; + static const double bndup=-0.315447; + static const double bnddown=0.85; + static const double bndleft=0.443364; + static const double bndright=-0.443364; + static const double dist1=100.f/camWidth; //this seems the optimal distance for zelda + static const double dist2=1.2f*dist1; - for (auto& vtx : v) - { - vtx.x=xx*(bndright-bndleft)/2+(bndleft+bndright)/2; - if (m_sensor_bar_on_top) vtx.y=yy*(bndup-bnddown)/2+(bndup+bnddown)/2; - else vtx.y=yy*(bndup-bnddown)/2-(bndup+bnddown)/2; - vtx.z=0; - } + for (auto& vtx : v) + { + vtx.x=xx*(bndright-bndleft)/2+(bndleft+bndright)/2; + if (m_sensor_bar_on_top) vtx.y=yy*(bndup-bnddown)/2+(bndup+bnddown)/2; + else vtx.y=yy*(bndup-bnddown)/2-(bndup+bnddown)/2; + vtx.z=0; + } - v[0].x-=(zz*0.5+1)*dist1; - v[1].x+=(zz*0.5+1)*dist1; - v[2].x-=(zz*0.5+1)*dist2; - v[3].x+=(zz*0.5+1)*dist2; + v[0].x-=(zz*0.5+1)*dist1; + v[1].x+=(zz*0.5+1)*dist1; + v[2].x-=(zz*0.5+1)*dist2; + v[3].x+=(zz*0.5+1)*dist2; #define printmatrix(m) PanicAlert("%f %f %f %f\n%f %f %f %f\n%f %f %f %f\n%f %f %f %f\n",m[0][0],m[0][1],m[0][2],m[0][3],m[1][0],m[1][1],m[1][2],m[1][3],m[2][0],m[2][1],m[2][2],m[2][3],m[3][0],m[3][1],m[3][2],m[3][3]) - Matrix rot,tot; - static Matrix scale; - MatrixScale(scale,1,camWidth/camHeight,1); - //MatrixIdentity(scale); - MatrixRotationByZ(rot,ir_sin,ir_cos); - //MatrixIdentity(rot); - MatrixMultiply(tot,scale,rot); - - for (int i=0; i<4; i++) - { - MatrixTransformVertex(tot,v[i]); - if ((v[i].x<-1)||(v[i].x>1)||(v[i].y<-1)||(v[i].y>1)) - continue; - x[i] = (u16)lround((v[i].x+1)/2*(camWidth-1)); - y[i] = (u16)lround((v[i].y+1)/2*(camHeight-1)); - } - // PanicAlert("%f %f\n%f %f\n%f %f\n%f %f\n%d %d\n%d %d\n%d %d\n%d %d", - // v[0].x,v[0].y,v[1].x,v[1].y,v[2].x,v[2].y,v[3].x,v[3].y, - // x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[38]); + Matrix rot,tot; + static Matrix scale; + MatrixScale(scale,1,camWidth/camHeight,1); + //MatrixIdentity(scale); + MatrixRotationByZ(rot,ir_sin,ir_cos); + //MatrixIdentity(rot); + MatrixMultiply(tot,scale,rot); + + for (int i=0; i<4; i++) + { + MatrixTransformVertex(tot,v[i]); + if ((v[i].x<-1)||(v[i].x>1)||(v[i].y<-1)||(v[i].y>1)) + continue; + x[i] = (u16)lround((v[i].x+1)/2*(camWidth-1)); + y[i] = (u16)lround((v[i].y+1)/2*(camHeight-1)); } + // PanicAlert("%f %f\n%f %f\n%f %f\n%f %f\n%d %d\n%d %d\n%d %d\n%d %d", + // v[0].x,v[0].y,v[1].x,v[1].y,v[2].x,v[2].y,v[3].x,v[3].y, + // x[0],y[0],x[1],y[1],x[2],y[2],x[3],y[38]); + // Fill report with valid data when full handshake was done if (m_reg_ir.data[0x30]) // ir mode @@ -582,7 +558,7 @@ void Wiimote::GetIRData(u8* const data, bool use_accel) void Wiimote::GetExtData(u8* const data) { - m_extension->GetState(data, HAS_FOCUS); + m_extension->GetState(data); // i dont think anything accesses the extension data like this, but ill support it. Indeed, commercial games don't do this. // i think it should be unencrpyted in the register, encrypted when read. @@ -626,7 +602,7 @@ void Wiimote::GetExtData(u8* const data) } if (0xAA == m_reg_ext.encryption) - wiimote_encrypt(&m_ext_key, data, 0x00, sizeof(wm_extension)); + WiimoteEncrypt(&m_ext_key, data, 0x00, sizeof(wm_extension)); } void Wiimote::Update() diff --git a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h index cda9401..43133ab 100644 --- a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h +++ b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.h @@ -12,7 +12,6 @@ #include "Core/HW/WiimoteEmu/Encryption.h" #include "Core/HW/WiimoteEmu/WiimoteHid.h" #include "InputCommon/ControllerEmu.h" -#include "InputCommon/UDPWrapper.h" // Registry sizes #define WIIMOTE_EEPROM_SIZE (16*1024) @@ -68,8 +67,6 @@ struct ExtensionReg u8 constant_id[6]; }; -extern const ReportFeatures reporting_mode_features[]; - void FillRawAccelFromGForceData(wm_accel& raw_accel, const accel_cal& calib, const WiimoteEmu::AccelData& accel); @@ -80,7 +77,7 @@ void EmulateShake(AccelData* const accel_data void EmulateTilt(AccelData* const accel , ControllerEmu::Tilt* const tilt_group - , const bool focus, const bool sideways = false, const bool upright = false); + , const bool sideways = false, const bool upright = false); void EmulateSwing(AccelData* const accel , ControllerEmu::Force* const tilt_group @@ -131,7 +128,7 @@ friend void Spy(Wiimote* wm_, const void* data_, size_t size_); bool Step(); void HidOutputReport(const wm_report* const sr, const bool send_ack = true); void HandleExtensionSwap(); - void UpdateButtonsStatus(bool has_focus); + void UpdateButtonsStatus(); void GetCoreData(u8* const data); void GetAccelData(u8* const data); @@ -177,8 +174,6 @@ friend void Spy(Wiimote* wm_, const void* data_, size_t size_); double ir_sin, ir_cos; //for the low pass filter - UDPWrapper* m_udp; - bool m_rumble_on; bool m_speaker_mute; bool m_motion_plus_present; diff --git a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp index f2736e0..177a0ee 100644 --- a/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp +++ b/Source/Core/Core/HW/WiimoteReal/WiimoteReal.cpp @@ -29,7 +29,7 @@ void TryToConnectWiimote(Wiimote*); void HandleWiimoteDisconnect(int index); void DoneWithWiimote(int index); -bool g_real_wiimotes_initialized = false; +static bool g_real_wiimotes_initialized = false; std::recursive_mutex g_refresh_lock; @@ -254,7 +254,7 @@ bool Wiimote::Write() return false; } -bool IsDataReport(const Report& rpt) +static bool IsDataReport(const Report& rpt) { return rpt.size() >= 2 && rpt[1] >= WM_REPORT_CORE; } @@ -373,7 +373,7 @@ void Wiimote::EmuPause() NOTICE_LOG(WIIMOTE, "Pausing Wiimote data reporting."); } -unsigned int CalculateConnectedWiimotes() +static unsigned int CalculateConnectedWiimotes() { unsigned int connected_wiimotes = 0; for (unsigned int i = 0; i < MAX_WIIMOTES; ++i) @@ -383,7 +383,7 @@ unsigned int CalculateConnectedWiimotes() return connected_wiimotes; } -unsigned int CalculateWantedWiimotes() +static unsigned int CalculateWantedWiimotes() { // Figure out how many real Wiimotes are required unsigned int wanted_wiimotes = 0; @@ -394,7 +394,7 @@ unsigned int CalculateWantedWiimotes() return wanted_wiimotes; } -unsigned int CalculateWantedBB() +static unsigned int CalculateWantedBB() { unsigned int wanted_bb = 0; if (WIIMOTE_SRC_REAL & g_wiimote_sources[WIIMOTE_BALANCE_BOARD] && !g_wiimotes[WIIMOTE_BALANCE_BOARD]) @@ -431,7 +431,7 @@ void WiimoteScanner::StopScanning() } } -void CheckForDisconnectedWiimotes() +static void CheckForDisconnectedWiimotes() { std::lock_guard lk(g_refresh_lock); diff --git a/Source/Core/Core/Host.h b/Source/Core/Core/Host.h index 0f68338..3206124 100644 --- a/Source/Core/Core/Host.h +++ b/Source/Core/Core/Host.h @@ -23,6 +23,7 @@ // The host can be just a command line app that opens a window, or a full blown debugger // interface. +bool Host_UIHasFocus(); bool Host_RendererHasFocus(); void Host_ConnectWiimote(int wm_idx, bool connect); void Host_GetRenderWindowSize(int& x, int& y, int& width, int& height); diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE.cpp b/Source/Core/Core/IPC_HLE/WII_IPC_HLE.cpp index 7e2e586..9c1fb76 100644 --- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE.cpp +++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE.cpp @@ -61,16 +61,16 @@ namespace WII_IPC_HLE_Interface { typedef std::map TDeviceMap; -TDeviceMap g_DeviceMap; +static TDeviceMap g_DeviceMap; // STATE_TO_SAVE typedef std::map TFileNameMap; #define IPC_MAX_FDS 0x18 #define ES_MAX_COUNT 2 -IWII_IPC_HLE_Device* g_FdMap[IPC_MAX_FDS]; -bool es_inuse[ES_MAX_COUNT]; -IWII_IPC_HLE_Device* es_handles[ES_MAX_COUNT]; +static IWII_IPC_HLE_Device* g_FdMap[IPC_MAX_FDS]; +static bool es_inuse[ES_MAX_COUNT]; +static IWII_IPC_HLE_Device* es_handles[ES_MAX_COUNT]; typedef std::deque ipc_msg_queue; diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net.cpp b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net.cpp index 344267f..b995111 100644 --- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net.cpp +++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net.cpp @@ -50,8 +50,6 @@ typedef struct pollfd pollfd_t; #include #endif -extern std::queue > g_ReplyQueueLater; - // ********************************************************************************** // Handle /dev/net/kd/request requests CWII_IPC_HLE_Device_net_kd_request::CWII_IPC_HLE_Device_net_kd_request(u32 _DeviceID, const std::string& _rDeviceName) @@ -113,10 +111,12 @@ bool CWII_IPC_HLE_Device_net_kd_request::IOCtl(u32 _CommandAddress) ReturnValue = 0; INFO_LOG(WII_IPC_WC24, "NET_KD_REQ: IOCTL_NWC24_STARTUP_SOCKET - NI"); break; + case IOCTL_NWC24_CLEANUP_SOCKET: Memory::Memset(BufferOut, 0, BufferOutSize); INFO_LOG(WII_IPC_WC24, "NET_KD_REQ: IOCTL_NWC24_CLEANUP_SOCKET - NI"); break; + case IOCTL_NWC24_LOCK_SOCKET: // WiiMenu INFO_LOG(WII_IPC_WC24, "NET_KD_REQ: IOCTL_NWC24_LOCK_SOCKET - NI"); break; @@ -150,7 +150,6 @@ bool CWII_IPC_HLE_Device_net_kd_request::IOCtl(u32 _CommandAddress) model = gen.GetValue("MODEL"); _GotSettings = true; } - } if (_GotSettings) { @@ -187,6 +186,7 @@ bool CWII_IPC_HLE_Device_net_kd_request::IOCtl(u32 _CommandAddress) Memory::Write_U64(config.Id(), BufferOut + 4); Memory::Write_U32(config.CreationStage(), BufferOut + 0xC); break; + case IOCTL_NWC24_GET_SCHEDULAR_STAT: INFO_LOG(WII_IPC_WC24, "NET_KD_REQ: IOCTL_NWC24_GET_SCHEDULAR_STAT - NI"); break; @@ -306,13 +306,13 @@ s32 CWII_IPC_HLE_Device_net_kd_request::NWC24MakeUserID(u64* nwc24_id, u32 holly return WC24_OK; } -void SaveMacAddress(u8* mac) +static void SaveMacAddress(u8* mac) { SConfig::GetInstance().m_WirelessMac = MacAddressToString(mac); SConfig::GetInstance().SaveSettings(); } -void GetMacAddress(u8* mac) +static void GetMacAddress(u8* mac) { // Parse MAC address from config, and generate a new one if it doesn't // exist or can't be parsed. @@ -371,6 +371,7 @@ bool CWII_IPC_HLE_Device_net_ncd_manage::IOCtlV(u32 _CommandAddress) { case IOCTLV_NCD_LOCKWIRELESSDRIVER: break; + case IOCTLV_NCD_UNLOCKWIRELESSDRIVER: //Memory::Read_U32(CommandBuffer.InBuffer.at(0).m_Address); break; @@ -402,8 +403,7 @@ bool CWII_IPC_HLE_Device_net_ncd_manage::IOCtlV(u32 _CommandAddress) case IOCTLV_NCD_GETLINKSTATUS: INFO_LOG(WII_IPC_NET, "NET_NCD_MANAGE: IOCTLV_NCD_GETLINKSTATUS"); // Always connected - Memory::Write_U32(netcfg_connection_t::LINK_WIRED, - CommandBuffer.PayloadBuffer.at(0).m_Address + 4); + Memory::Write_U32(netcfg_connection_t::LINK_WIRED, CommandBuffer.PayloadBuffer.at(0).m_Address + 4); break; case IOCTLV_NCD_GETWIRELESSMACADDRESS: @@ -411,9 +411,7 @@ bool CWII_IPC_HLE_Device_net_ncd_manage::IOCtlV(u32 _CommandAddress) u8 address[MAC_ADDRESS_SIZE]; GetMacAddress(address); - Memory::WriteBigEData(address, - CommandBuffer.PayloadBuffer.at(1).m_Address, - sizeof(address)); + Memory::WriteBigEData(address, CommandBuffer.PayloadBuffer.at(1).m_Address, sizeof(address)); break; default: @@ -421,12 +419,10 @@ bool CWII_IPC_HLE_Device_net_ncd_manage::IOCtlV(u32 _CommandAddress) break; } - Memory::Write_U32(common_result, - CommandBuffer.PayloadBuffer.at(common_vector).m_Address); + Memory::Write_U32(common_result, CommandBuffer.PayloadBuffer.at(common_vector).m_Address); if (common_vector == 1) { - Memory::Write_U32(common_result, - CommandBuffer.PayloadBuffer.at(common_vector).m_Address + 4); + Memory::Write_U32(common_result, CommandBuffer.PayloadBuffer.at(common_vector).m_Address + 4); } Memory::Write_U32(return_value, _CommandAddress + 4); return true; @@ -477,11 +473,11 @@ bool CWII_IPC_HLE_Device_net_wd_command::IOCtlV(u32 CommandAddress) // XXX - unused // ScanInfo *scan = (ScanInfo *)Memory::GetPointer(CommandBuffer.InBuffer.at(0).m_Address); - u16 *results = (u16 *)Memory::GetPointer(CommandBuffer.PayloadBuffer.at(0).m_Address); + u16* results = (u16*)Memory::GetPointer(CommandBuffer.PayloadBuffer.at(0).m_Address); // first u16 indicates number of BSSInfo following results[0] = Common::swap16(1); - BSSInfo *bss = (BSSInfo *)&results[1]; + BSSInfo* bss = (BSSInfo*)&results[1]; memset(bss, 0, sizeof(BSSInfo)); bss->length = Common::swap16(sizeof(BSSInfo)); @@ -490,8 +486,8 @@ bool CWII_IPC_HLE_Device_net_wd_command::IOCtlV(u32 CommandAddress) for (int i = 0; i < BSSID_SIZE; ++i) bss->bssid[i] = i; - const char *ssid = "dolphin-emu"; - strcpy((char *)bss->ssid, ssid); + const char* ssid = "dolphin-emu"; + strcpy((char*)bss->ssid, ssid); bss->ssid_length = Common::swap16((u16)strlen(ssid)); bss->channel = Common::swap16(2); @@ -500,7 +496,7 @@ bool CWII_IPC_HLE_Device_net_wd_command::IOCtlV(u32 CommandAddress) case IOCTLV_WD_GET_INFO: { - Info *info = (Info *)Memory::GetPointer(CommandBuffer.PayloadBuffer.at(0).m_Address); + Info* info = (Info*)Memory::GetPointer(CommandBuffer.PayloadBuffer.at(0).m_Address); memset(info, 0, sizeof(Info)); // Probably used to disallow certain channels? memcpy(info->country, "US", 2); @@ -588,7 +584,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::Close(u32 _CommandAddress, bool _bForce) return true; } -static int inet_pton(const char *src, unsigned char *dst) +static int inet_pton(const char* src, unsigned char* dst) { int saw_digit, octets; char ch; @@ -597,30 +593,38 @@ static int inet_pton(const char *src, unsigned char *dst) saw_digit = 0; octets = 0; *(tp = tmp) = 0; - while ((ch = *src++) != '\0') { - if (ch >= '0' && ch <= '9') { + while ((ch = *src++) != '\0') + { + if (ch >= '0' && ch <= '9') + { unsigned int newt = (*tp * 10) + (ch - '0'); if (newt > 255) - return (0); + return 0; *tp = newt; - if (! saw_digit) { + if (!saw_digit) + { if (++octets > 4) - return (0); + return 0; saw_digit = 1; } - } else if (ch == '.' && saw_digit) { + } + else if (ch == '.' && saw_digit) + { if (octets == 4) - return (0); + return 0; *++tp = 0; saw_digit = 0; - } else - return (0); + } + else + { + return 0; + } } if (octets < 4) - return (0); + return 0; memcpy(dst, tmp, 4); - return (1); + return 1; } // Maps SOCKOPT level from native to Wii @@ -749,12 +753,12 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) u8 optval[20]; u32 optlen = 4; - int ret = getsockopt (fd, nat_level, nat_optname, (char *) &optval, (socklen_t*)&optlen); + int ret = getsockopt (fd, nat_level, nat_optname, (char*) &optval, (socklen_t*)&optlen); ReturnValue = WiiSockMan::GetNetErrorCode(ret, "SO_GETSOCKOPT", false); Memory::Write_U32(optlen, BufferOut + 0xC); - Memory::WriteBigEData((u8 *) optval, BufferOut + 0x10, optlen); + Memory::WriteBigEData((u8*) optval, BufferOut + 0x10, optlen); if (optname == SO_ERROR) { @@ -778,7 +782,9 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) INFO_LOG(WII_IPC_NET, "IOCTL_SO_SETSOCKOPT(%08x, %08x, %08x, %08x) " "BufferIn: (%08x, %i), BufferOut: (%08x, %i)" "%02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx", - fd, level, optname, optlen, BufferIn, BufferInSize, BufferOut, BufferOutSize, optval[0], optval[1], optval[2], optval[3], optval[4], optval[5], optval[6], optval[7], optval[8], optval[9], optval[10], optval[11], optval[12], optval[13], optval[14], optval[15], optval[16], optval[17], optval[18], optval[19]); + fd, level, optname, optlen, BufferIn, BufferInSize, BufferOut, BufferOutSize, optval[0], optval[1], optval[2], optval[3], + optval[4], optval[5],optval[6], optval[7], optval[8], optval[9], optval[10], optval[11], optval[12], optval[13], optval[14], + optval[15], optval[16], optval[17], optval[18], optval[19]); //TODO: bug booto about this, 0x2005 most likely timeout related, default value on wii is , 0x2001 is most likely tcpnodelay if (level == 6 && (optname == 0x2005 || optname == 0x2001)){ @@ -877,7 +883,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) result = GetIpForwardTable(forwardTable.get(), &forwardTableSize, FALSE); while (result == NO_ERROR || result == ERROR_MORE_DATA) // can return ERROR_MORE_DATA on XP even after the first call { - for (DWORD i = 0; i < forwardTable->dwNumEntries; i++) + for (DWORD i = 0; i < forwardTable->dwNumEntries; ++i) { if (forwardTable->table[i].dwForwardDest == 0) { @@ -894,7 +900,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) if (ifIndex != -1 && GetIpAddrTable(ipTable.get(), &ipTableSize, FALSE) == NO_ERROR) { - for (DWORD i = 0; i < ipTable->dwNumEntries; i++) + for (DWORD i = 0; i < ipTable->dwNumEntries; ++i) { if (ipTable->table[i].dwIndex == ifIndex) { @@ -913,12 +919,12 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) case IOCTL_SO_INETATON: { - struct hostent *remoteHost = gethostbyname((char*)Memory::GetPointer(BufferIn)); + struct hostent* remoteHost = gethostbyname((char*)Memory::GetPointer(BufferIn)); - Memory::Write_U32(Common::swap32(*(u32 *)remoteHost->h_addr_list[0]), BufferOut); + Memory::Write_U32(Common::swap32(*(u32*)remoteHost->h_addr_list[0]), BufferOut); INFO_LOG(WII_IPC_NET, "IOCTL_SO_INETATON = %d " "%s, BufferIn: (%08x, %i), BufferOut: (%08x, %i), IP Found: %08X",remoteHost->h_addr_list[0] == nullptr ? -1 : 0, - (char*)Memory::GetPointer(BufferIn), BufferIn, BufferInSize, BufferOut, BufferOutSize, Common::swap32(*(u32 *)remoteHost->h_addr_list[0])); + (char*)Memory::GetPointer(BufferIn), BufferIn, BufferInSize, BufferOut, BufferOutSize, Common::swap32(*(u32*)remoteHost->h_addr_list[0])); ReturnValue = remoteHost->h_addr_list[0] == nullptr ? 0 : 1; break; } @@ -965,14 +971,14 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) if (nfds == 0) ERROR_LOG(WII_IPC_NET, "Hidden POLL"); - pollfd_t* ufds = (pollfd_t *)malloc(sizeof(pollfd_t) * nfds); + pollfd_t* ufds = (pollfd_t*)malloc(sizeof(pollfd_t) * nfds); if (ufds == nullptr) { ReturnValue = -1; break; } - for (int i = 0; i < nfds; i++) + for (int i = 0; i < nfds; ++i) { ufds[i].fd = Memory::Read_U32(BufferOut + 0xc*i); //fd int events = Memory::Read_U32(BufferOut + 0xc*i + 4); //events @@ -1001,7 +1007,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) int ret = poll(ufds, nfds, timeout); ret = WiiSockMan::GetNetErrorCode(ret, "SO_POLL", false); - for (int i = 0; ih_name) + 1; - Memory::WriteBigEData((const u8 *)remoteHost->h_name, wii_addr, name_length); + Memory::WriteBigEData((const u8*)remoteHost->h_name, wii_addr, name_length); Memory::Write_U32(wii_addr, BufferOut); wii_addr += (name_length + 4) & ~3; @@ -1083,7 +1089,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) Memory::Write_U32(0, wii_addr); wii_addr += sizeof(u32); // The actual IPs - for (int i = 0; remoteHost->h_addr_list[i]; i++) + for (int i = 0; remoteHost->h_addr_list[i]; ++i) { Memory::Write_U32_Swap(*(u32*)(remoteHost->h_addr_list[i]), wii_addr); wii_addr += sizeof(u32); @@ -1104,6 +1110,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) case IOCTL_SO_ICMPCANCEL: ERROR_LOG(WII_IPC_NET, "IOCTL_SO_ICMPCANCEL"); goto default_; + default: INFO_LOG(WII_IPC_NET,"0x%x " "BufferIn: (%08x, %i), BufferOut: (%08x, %i)", @@ -1112,9 +1119,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtl(u32 _CommandAddress) if (BufferInSize) { ERROR_LOG(WII_IPC_NET, "in addr %x size %x", BufferIn, BufferInSize); - ERROR_LOG(WII_IPC_NET, "\n%s", - ArrayToString(Memory::GetPointer(BufferIn), BufferInSize, 4).c_str() - ); + ERROR_LOG(WII_IPC_NET, "\n%s", ArrayToString(Memory::GetPointer(BufferIn), BufferInSize, 4).c_str()); } if (BufferOutSize) @@ -1198,7 +1203,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtlV(u32 CommandAddress) PIP_ADAPTER_ADDRESSES AdapterAddresses = nullptr; ULONG OutBufferLength = 0; ULONG RetVal = 0, i; - for (i = 0; i < 5; i++) + for (i = 0; i < 5; ++i) { RetVal = GetAdaptersAddresses( AF_INET, @@ -1207,16 +1212,19 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtlV(u32 CommandAddress) AdapterAddresses, &OutBufferLength); - if (RetVal != ERROR_BUFFER_OVERFLOW) { + if (RetVal != ERROR_BUFFER_OVERFLOW) + { break; } - if (AdapterAddresses != nullptr) { + if (AdapterAddresses != nullptr) + { FREE(AdapterAddresses); } AdapterAddresses = (PIP_ADAPTER_ADDRESSES)MALLOC(OutBufferLength); - if (AdapterAddresses == nullptr) { + if (AdapterAddresses == nullptr) + { RetVal = GetLastError(); break; } @@ -1248,7 +1256,8 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtlV(u32 CommandAddress) } } } - if (AdapterAddresses != nullptr) { + if (AdapterAddresses != nullptr) + { FREE(AdapterAddresses); } #endif @@ -1262,23 +1271,28 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtlV(u32 CommandAddress) case 0x1003: // error Memory::Write_U32(0, _BufferOut); break; + case 0x1004: // mac address u8 address[MAC_ADDRESS_SIZE]; GetMacAddress(address); Memory::WriteBigEData(address, _BufferOut, sizeof(address)); break; + case 0x1005: // link state Memory::Write_U32(1, _BufferOut); break; + case 0x4002: // ip addr number Memory::Write_U32(1, _BufferOut); break; + case 0x4003: // ip addr table Memory::Write_U32(0xC, _BufferOut2); Memory::Write_U32(10 << 24 | 1 << 8 | 30, _BufferOut); Memory::Write_U32(255 << 24 | 255 << 16 | 255 << 8 | 0, _BufferOut+4); Memory::Write_U32(10 << 24 | 0 << 16 | 255 << 8 | 255, _BufferOut+8); break; + default: ERROR_LOG(WII_IPC_NET, "Unknown param2: %08X", param2); break; @@ -1304,7 +1318,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtlV(u32 CommandAddress) case IOCTLV_SO_GETADDRINFO: { struct addrinfo hints; - struct addrinfo *result = nullptr; + struct addrinfo* result = nullptr; if (BufferInSize3) { @@ -1428,7 +1442,7 @@ bool CWII_IPC_HLE_Device_net_ip_top::IOCtlV(u32 CommandAddress) // TODO sequence number is incremented either statically, by // port, or by socket. Doesn't seem to matter, so we just leave // it 0 - ((u16 *)data)[0] = Common::swap16(ip_info.icmp_id); + ((u16*)data)[0] = Common::swap16(ip_info.icmp_id); icmp_length = 22; } diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net.h b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net.h index ce3b5d8..7f740c5 100644 --- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net.h +++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_net.h @@ -177,8 +177,6 @@ class NWC24Config void ResetConfig() { - int i; - if (File::Exists(path)) File::Delete(path); @@ -198,7 +196,7 @@ class NWC24Config SetEnableBooting(0); SetEmail("@wii.com"); - for (i=0; i + #include "Common/Common.h" #include "Common/SDCardUtil.h" @@ -396,14 +398,14 @@ u32 CWII_IPC_HLE_Device_sdio_slot0::ExecuteCommand(u32 _BufferIn, u32 _BufferInS if (!m_Card.Seek(req.arg, SEEK_SET)) ERROR_LOG(WII_IPC_SD, "Seek failed WTF"); - u8* const buffer = new u8[size]; + std::vector buffer(size); - if (m_Card.ReadBytes(buffer, req.bsize * req.blocks)) + if (m_Card.ReadBytes(buffer.data(), size)) { u32 i; for (i = 0; i < size; ++i) { - Memory::Write_U8((u8)buffer[i], req.addr++); + Memory::Write_U8(buffer[i], req.addr++); } DEBUG_LOG(WII_IPC_SD, "Outbuffer size %i got %i", _rwBufferSize, i); } @@ -413,8 +415,6 @@ u32 CWII_IPC_HLE_Device_sdio_slot0::ExecuteCommand(u32 _BufferIn, u32 _BufferInS ferror(m_Card.GetHandle()), feof(m_Card.GetHandle())); ret = RET_FAIL; } - - delete[] buffer; } } Memory::Write_U32(0x900, _BufferOut); @@ -434,21 +434,19 @@ u32 CWII_IPC_HLE_Device_sdio_slot0::ExecuteCommand(u32 _BufferIn, u32 _BufferInS if (!m_Card.Seek(req.arg, SEEK_SET)) ERROR_LOG(WII_IPC_SD, "fseeko failed WTF"); - u8* buffer = new u8[size]; + std::vector buffer(size); for (u32 i = 0; i < size; ++i) { buffer[i] = Memory::Read_U8(req.addr++); } - if (!m_Card.WriteBytes(buffer, req.bsize * req.blocks)) + if (!m_Card.WriteBytes(buffer.data(), size)) { ERROR_LOG(WII_IPC_SD, "Write Failed - error: %i, eof: %i", ferror(m_Card.GetHandle()), feof(m_Card.GetHandle())); ret = RET_FAIL; } - - delete[] buffer; } } Memory::Write_U32(0x900, _BufferOut); diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb.cpp b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb.cpp index b4b2e81..442197c 100644 --- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb.cpp +++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb.cpp @@ -1512,6 +1512,7 @@ void CWII_IPC_HLE_Device_usb_oh1_57e_305::CommandReadStoredLinkKey(u8* _Input) hci_read_stored_link_key_rp Reply; Reply.status = 0x00; + Reply.num_keys_read = 0; Reply.max_num_keys = 255; if (ReadStoredLinkKey->read_all == 1) diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_WiiMote.cpp b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_WiiMote.cpp index 928b766..6f58591 100644 --- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_WiiMote.cpp +++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_WiiMote.cpp @@ -700,7 +700,7 @@ static u32 ParseCont(u8* pCont) } -int ParseAttribList(u8* pAttribIDList, u16& _startID, u16& _endID) +static int ParseAttribList(u8* pAttribIDList, u16& _startID, u16& _endID) { u32 attribOffset = 0; CBigEndianBuffer attribList(pAttribIDList); diff --git a/Source/Core/Core/IPC_HLE/WII_Socket.cpp b/Source/Core/Core/IPC_HLE/WII_Socket.cpp index 3dc34d3..5418fb5 100644 --- a/Source/Core/Core/IPC_HLE/WII_Socket.cpp +++ b/Source/Core/Core/IPC_HLE/WII_Socket.cpp @@ -34,7 +34,7 @@ char* WiiSockMan::DecodeError(s32 ErrorCode) #endif } -s32 TranslateErrorCode(s32 native_error, bool isRW) +static s32 TranslateErrorCode(s32 native_error, bool isRW) { switch (native_error) { diff --git a/Source/Core/Core/IPC_HLE/fakepoll.h b/Source/Core/Core/IPC_HLE/fakepoll.h index 0a52148..2f77968 100644 --- a/Source/Core/Core/IPC_HLE/fakepoll.h +++ b/Source/Core/Core/IPC_HLE/fakepoll.h @@ -15,10 +15,9 @@ // * don't set POLLIN or POLLOUT in revents if it wasn't requested // in events (only happens when an fd is in the poll set twice) -#if (_WIN32_WINNT < _WIN32_WINNT_VISTA) +#pragma once -#ifndef _FAKE_POLL_H -#define _FAKE_POLL_H +#if (_WIN32_WINNT < _WIN32_WINNT_VISTA) #include #include @@ -158,8 +157,6 @@ inline int poll(struct pollfd *pollSet, int pollCount, int pollTimeout) return result; } -#endif - #else // (_WIN32_WINNT < _WIN32_WINNT_VISTA) typedef pollfd pollfd_t; diff --git a/Source/Core/Core/Movie.cpp b/Source/Core/Core/Movie.cpp index e6ef933..a3ccdc8 100644 --- a/Source/Core/Core/Movie.cpp +++ b/Source/Core/Core/Movie.cpp @@ -8,6 +8,7 @@ #include "Common/FileUtil.h" #include "Common/Hash.h" #include "Common/NandPaths.h" +#include "Common/StringUtil.h" #include "Common/Thread.h" #include "Common/Timer.h" @@ -34,54 +35,56 @@ // The chunk to allocate movie data in multiples of. #define DTM_BASE_LENGTH (1024) -std::mutex cs_frameSkip; +static std::mutex cs_frameSkip; namespace Movie { -bool g_bFrameStep = false; -bool g_bFrameStop = false; -bool g_bReadOnly = true; -u32 g_rerecords = 0; -PlayMode g_playMode = MODE_NONE; +static bool g_bFrameStep = false; +static bool g_bFrameStop = false; +static bool g_bReadOnly = true; +static u32 g_rerecords = 0; +static PlayMode g_playMode = MODE_NONE; -u32 g_framesToSkip = 0, g_frameSkipCounter = 0; +static u32 g_framesToSkip = 0, g_frameSkipCounter = 0; -u8 g_numPads = 0; -ControllerState g_padState; -DTMHeader tmpHeader; -u8* tmpInput = nullptr; -size_t tmpInputAllocated = 0; -u64 g_currentByte = 0, g_totalBytes = 0; +static u8 g_numPads = 0; +static ControllerState g_padState; +static DTMHeader tmpHeader; +static u8* tmpInput = nullptr; +static size_t tmpInputAllocated = 0; +static u64 g_currentByte = 0, g_totalBytes = 0; u64 g_currentFrame = 0, g_totalFrames = 0; // VI -u64 g_currentLagCount = 0, g_totalLagCount = 0; // just stats +u64 g_currentLagCount = 0; +static u64 g_totalLagCount = 0; // just stats u64 g_currentInputCount = 0, g_totalInputCount = 0; // just stats -u64 g_totalTickCount = 0, g_tickCountAtLastInput = 0; // just stats -u64 g_recordingStartTime; // seconds since 1970 that recording started -bool bSaveConfig = false, bSkipIdle = false, bDualCore = false, bProgressive = false, bDSPHLE = false, bFastDiscSpeed = false; -bool bMemcard = false, g_bClearSave = false, bSyncGPU = false, bNetPlay = false; -std::string videoBackend = "unknown"; -int iCPUCore = 1; +static u64 g_totalTickCount = 0, g_tickCountAtLastInput = 0; // just stats +static u64 g_recordingStartTime; // seconds since 1970 that recording started +static bool bSaveConfig = false, bSkipIdle = false, bDualCore = false, bProgressive = false, bDSPHLE = false, bFastDiscSpeed = false; +bool g_bClearSave = false; +static bool bSyncGPU = false, bNetPlay = false; +static std::string videoBackend = "unknown"; +static int iCPUCore = 1; bool g_bDiscChange = false; std::string g_discChange = ""; -std::string author = ""; +static std::string author = ""; u64 g_titleID = 0; -unsigned char MD5[16]; -u8 bongos; -u8 revision[20]; -u32 DSPiromHash = 0; -u32 DSPcoefHash = 0; +static unsigned char MD5[16]; +static u8 bongos, memcards; +static u8 revision[20]; +static u32 DSPiromHash = 0; +static u32 DSPcoefHash = 0; -bool g_bRecordingFromSaveState = false; -bool g_bPolled = false; -int g_currentSaveVersion = 0; +static bool g_bRecordingFromSaveState = false; +static bool g_bPolled = false; +static int g_currentSaveVersion = 0; -std::string tmpStateFilename = File::GetUserPath(D_STATESAVES_IDX) + "dtm.sav"; +static std::string tmpStateFilename = File::GetUserPath(D_STATESAVES_IDX) + "dtm.sav"; -std::string g_InputDisplay[8]; +static std::string g_InputDisplay[8]; -ManipFunction mfunc = nullptr; +static ManipFunction mfunc = nullptr; -void EnsureTmpInputSize(size_t bound) +static void EnsureTmpInputSize(size_t bound) { if (tmpInputAllocated >= bound) return; @@ -365,9 +368,9 @@ bool IsStartingFromClearSave() return g_bClearSave; } -bool IsUsingMemcard() +bool IsUsingMemcard(int memcard) { - return bMemcard; + return (memcards & (1 << memcard)) != 0; } bool IsSyncGPU() { @@ -381,7 +384,7 @@ bool IsNetPlayRecording() void ChangePads(bool instantly) { - if (Core::GetState() == Core::CORE_UNINITIALIZED) + if (!Core::IsRunning()) return; int controllers = 0; @@ -443,7 +446,7 @@ bool BeginRecordingInput(int controllers) if (SConfig::GetInstance().m_SIDevice[i] == SIDEVICE_GC_TARUKONGA) bongos |= (1 << i); - if (Core::IsRunning()) + if (Core::IsRunningAndStarted()) { if (File::Exists(tmpStateFilename)) File::Delete(tmpStateFilename); @@ -474,7 +477,7 @@ bool BeginRecordingInput(int controllers) return true; } -static void Analog2DToString(u8 x, u8 y, const char* prefix, char* str) +static std::string Analog2DToString(u8 x, u8 y, const std::string& prefix) { if ((x <= 1 || x == 128 || x >= 255) && (y <= 1 || y == 128 || y >= 255)) @@ -483,52 +486,50 @@ static void Analog2DToString(u8 x, u8 y, const char* prefix, char* str) { if (x != 128 && y != 128) { - sprintf(str, "%s:%s,%s", prefix, x<128?"LEFT":"RIGHT", y<128?"DOWN":"UP"); + return StringFromFormat("%s:%s,%s", prefix.c_str(), x<128?"LEFT":"RIGHT", y<128?"DOWN":"UP"); } else if (x != 128) { - sprintf(str, "%s:%s", prefix, x<128?"LEFT":"RIGHT"); + return StringFromFormat("%s:%s", prefix.c_str(), x<128?"LEFT":"RIGHT"); } else { - sprintf(str, "%s:%s", prefix, y<128?"DOWN":"UP"); + return StringFromFormat("%s:%s", prefix.c_str(), y<128?"DOWN":"UP"); } } else { - str[0] = '\0'; + return ""; } } else { - sprintf(str, "%s:%d,%d", prefix, x, y); + return StringFromFormat("%s:%d,%d", prefix.c_str(), x, y); } } -static void Analog1DToString(u8 v, const char* prefix, char* str) +static std::string Analog1DToString(u8 v, const std::string& prefix) { if (v > 0) { if (v == 255) { - strcpy(str, prefix); + return prefix; } else { - sprintf(str, "%s:%d", prefix, v); + return StringFromFormat("%s:%d", prefix.c_str(), v); } } else { - str[0] = '\0'; + return ""; } } -void SetInputDisplayString(ControllerState padState, int controllerID) +static void SetInputDisplayString(ControllerState padState, int controllerID) { - char inp[70]; - sprintf(inp, "P%d:", controllerID + 1); - g_InputDisplay[controllerID] = inp; + g_InputDisplay[controllerID] = StringFromFormat("P%d:", controllerID + 1); if (g_padState.A) g_InputDisplay[controllerID].append(" A"); @@ -552,28 +553,18 @@ void SetInputDisplayString(ControllerState padState, int controllerID) if (g_padState.DPadRight) g_InputDisplay[controllerID].append(" RIGHT"); - Analog1DToString(g_padState.TriggerL, " L", inp); - g_InputDisplay[controllerID].append(inp); - - Analog1DToString(g_padState.TriggerR, " R", inp); - g_InputDisplay[controllerID].append(inp); - - Analog2DToString(g_padState.AnalogStickX, g_padState.AnalogStickY, " ANA", inp); - g_InputDisplay[controllerID].append(inp); - - Analog2DToString(g_padState.CStickX, g_padState.CStickY, " C", inp); - g_InputDisplay[controllerID].append(inp); - + g_InputDisplay[controllerID].append(Analog1DToString(g_padState.TriggerL, " L")); + g_InputDisplay[controllerID].append(Analog1DToString(g_padState.TriggerR, " R")); + g_InputDisplay[controllerID].append(Analog2DToString(g_padState.AnalogStickX, g_padState.AnalogStickY, " ANA")); + g_InputDisplay[controllerID].append(Analog2DToString(g_padState.CStickX, g_padState.CStickY, " C")); g_InputDisplay[controllerID].append("\n"); } -void SetWiiInputDisplayString(int remoteID, u8* const coreData, u8* const accelData, u8* const irData) +static void SetWiiInputDisplayString(int remoteID, u8* const coreData, u8* const accelData, u8* const irData) { int controllerID = remoteID + 4; - char inp[70]; - sprintf(inp, "R%d:", remoteID + 1); - g_InputDisplay[controllerID] = inp; + g_InputDisplay[controllerID] = StringFromFormat("R%d:", remoteID + 1); if (coreData) { @@ -605,20 +596,20 @@ void SetWiiInputDisplayString(int remoteID, u8* const coreData, u8* const accelD if (accelData) { wm_accel* dt = (wm_accel*)accelData; - sprintf(inp, " ACC:%d,%d,%d", dt->x, dt->y, dt->z); - g_InputDisplay[controllerID].append(inp); + std::string accel = StringFromFormat(" ACC:%d,%d,%d", dt->x, dt->y, dt->z); + g_InputDisplay[controllerID].append(accel); } if (irData) // incomplete { - sprintf(inp, " IR:%d,%d", ((u8*)irData)[0], ((u8*)irData)[1]); - g_InputDisplay[controllerID].append(inp); + std::string ir = StringFromFormat(" IR:%d,%d", ((u8*)irData)[0], ((u8*)irData)[1]); + g_InputDisplay[controllerID].append(ir); } g_InputDisplay[controllerID].append("\n"); } -void CheckPadStatus(SPADStatus *PadStatus, int controllerID) +void CheckPadStatus(GCPadStatus* PadStatus, int controllerID) { g_padState.A = ((PadStatus->button & PAD_BUTTON_A) != 0); g_padState.B = ((PadStatus->button & PAD_BUTTON_B) != 0); @@ -646,7 +637,7 @@ void CheckPadStatus(SPADStatus *PadStatus, int controllerID) SetInputDisplayString(g_padState, controllerID); } -void RecordInput(SPADStatus *PadStatus, int controllerID) +void RecordInput(GCPadStatus* PadStatus, int controllerID) { if (!IsRecordingInput() || !IsUsingPad(controllerID)) return; @@ -707,7 +698,7 @@ void ReadHeader() bFastDiscSpeed = tmpHeader.bFastDiscSpeed; iCPUCore = tmpHeader.CPUCore; g_bClearSave = tmpHeader.bClearSave; - bMemcard = tmpHeader.bMemcard; + memcards = tmpHeader.memcards; bongos = tmpHeader.bongos; bSyncGPU = tmpHeader.bSyncGPU; bNetPlay = tmpHeader.bNetPlay; @@ -833,9 +824,10 @@ void LoadInput(const std::string& filename) u64 totalSavedBytes = t_record.GetSize() - 256; bool afterEnd = false; + // This can only happen if the user manually deletes data from the dtm. if (g_currentByte > totalSavedBytes) { - //PanicAlertT("Warning: You loaded a save whose movie ends before the current frame in the save (byte %u < %u) (frame %u < %u). You should load another save before continuing.", (u32)totalSavedBytes+256, (u32)g_currentByte+256, (u32)tmpHeader.frameCount, (u32)g_currentFrame); + PanicAlertT("Warning: You loaded a save whose movie ends before the current frame in the save (byte %u < %u) (frame %u < %u). You should load another save before continuing.", (u32)totalSavedBytes+256, (u32)g_currentByte+256, (u32)tmpHeader.frameCount, (u32)g_currentFrame); afterEnd = true; } @@ -857,6 +849,7 @@ void LoadInput(const std::string& filename) } else if (g_currentByte > g_totalBytes) { + afterEnd = true; PanicAlertT("Warning: You loaded a save that's after the end of the current movie. (byte %u > %u) (frame %u > %u). You should load another save before continuing, or load this state with read-only mode off.", (u32)g_currentByte+256, (u32)g_totalBytes+256, (u32)g_currentFrame, (u32)g_totalFrames); } else if (g_currentByte > 0 && g_totalBytes > 0) @@ -943,7 +936,7 @@ static void CheckInputEnd() } } -void PlayController(SPADStatus *PadStatus, int controllerID) +void PlayController(GCPadStatus* PadStatus, int controllerID) { // Correct playback is entirely dependent on the emulator polling the controllers // in the same order done during recording @@ -959,7 +952,7 @@ void PlayController(SPADStatus *PadStatus, int controllerID) // dtm files don't save the mic button or error bit. not sure if they're actually used, but better safe than sorry signed char e = PadStatus->err; - memset(PadStatus, 0, sizeof(SPADStatus)); + memset(PadStatus, 0, sizeof(GCPadStatus)); PadStatus->err = e; @@ -1143,7 +1136,7 @@ void SaveRecording(const std::string& filename) header.bEFBEmulateFormatChanges = g_ActiveConfig.bEFBEmulateFormatChanges; header.bUseXFB = g_ActiveConfig.bUseXFB; header.bUseRealXFB = g_ActiveConfig.bUseRealXFB; - header.bMemcard = bMemcard; + header.memcards = memcards; header.bClearSave = g_bClearSave; header.bSyncGPU = bSyncGPU; header.bNetPlay = bNetPlay; @@ -1181,7 +1174,7 @@ void SetInputManip(ManipFunction func) mfunc = func; } -void CallInputManip(SPADStatus *PadStatus, int controllerID) +void CallInputManip(GCPadStatus* PadStatus, int controllerID) { if (mfunc) (*mfunc)(PadStatus, controllerID); @@ -1212,7 +1205,8 @@ void GetSettings() bNetPlay = NetPlay::IsNetPlayRunning(); if (!Core::g_CoreStartupParameter.bWii) g_bClearSave = !File::Exists(SConfig::GetInstance().m_strMemoryCardA); - bMemcard = SConfig::GetInstance().m_EXIDevice[0] == EXIDEVICE_MEMORYCARD; + memcards |= (SConfig::GetInstance().m_EXIDevice[0] == EXIDEVICE_MEMORYCARD) << 0; + memcards |= (SConfig::GetInstance().m_EXIDevice[1] == EXIDEVICE_MEMORYCARD) << 1; unsigned int tmp; for (int i = 0; i < 20; ++i) { diff --git a/Source/Core/Core/Movie.h b/Source/Core/Core/Movie.h index 05ee86c..e761a9a 100644 --- a/Source/Core/Core/Movie.h +++ b/Source/Core/Core/Movie.h @@ -49,26 +49,14 @@ static_assert(sizeof(ControllerState) == 8, "ControllerState should be 8 bytes") #pragma pack(pop) // Global declarations -extern bool g_bFrameStep, g_bPolled, g_bReadOnly, g_bDiscChange, g_bClearSave; -extern PlayMode g_playMode; +extern bool g_bDiscChange, g_bClearSave; extern u64 g_titleID; -extern u32 g_framesToSkip, g_frameSkipCounter; - -extern u8 g_numPads; -extern ControllerState *g_padStates; -extern char g_playingFile[256]; -extern std::string g_recordFile; - -extern u64 g_currentByte, g_totalBytes; extern u64 g_currentFrame, g_totalFrames; -extern u64 g_currentLagCount, g_totalLagCount; +extern u64 g_currentLagCount; extern u64 g_currentInputCount, g_totalInputCount; -extern u64 g_totalTickCount, g_tickCountAtLastInput; extern std::string g_discChange; -extern u32 g_rerecords; - #pragma pack(push,1) struct DTMHeader { @@ -107,7 +95,7 @@ struct DTMHeader bool bEFBEmulateFormatChanges; bool bUseXFB; bool bUseRealXFB; - bool bMemcard; + u8 memcards; bool bClearSave; // Create a new memory card when playing back a movie if true u8 bongos; bool bSyncGPU; @@ -136,7 +124,7 @@ bool IsJustStartingRecordingInputFromSaveState(); bool IsJustStartingPlayingInputFromSaveState(); bool IsPlayingInput(); bool IsReadOnly(); -u64 GetRecordingStartTime(); +u64 GetRecordingStartTime(); bool IsConfigSaved(); bool IsDualCore(); @@ -144,9 +132,9 @@ bool IsProgressive(); bool IsSkipIdle(); bool IsDSPHLE(); bool IsFastDiscSpeed(); -int GetCPUMode(); +int GetCPUMode(); bool IsStartingFromClearSave(); -bool IsUsingMemcard(); +bool IsUsingMemcard(int memcard); bool IsSyncGPU(); void SetGraphicsConfig(); void GetSettings(); @@ -166,13 +154,13 @@ void SetFrameSkipping(unsigned int framesToSkip); void FrameSkipping(); bool BeginRecordingInput(int controllers); -void RecordInput(SPADStatus *PadStatus, int controllerID); +void RecordInput(GCPadStatus* PadStatus, int controllerID); void RecordWiimote(int wiimote, u8 *data, u8 size); bool PlayInput(const std::string& filename); void LoadInput(const std::string& filename); void ReadHeader(); -void PlayController(SPADStatus *PadStatus, int controllerID); +void PlayController(GCPadStatus* PadStatus, int controllerID); bool PlayWiimote(int wiimote, u8* data, const struct WiimoteEmu::ReportFeatures& rptf, int irMode); void EndPlayInput(bool cont); void SaveRecording(const std::string& filename); @@ -180,14 +168,14 @@ void DoState(PointerWrap &p); void CheckMD5(); void GetMD5(); void Shutdown(); -void CheckPadStatus(SPADStatus *PadStatus, int controllerID); +void CheckPadStatus(GCPadStatus* PadStatus, int controllerID); void CheckWiimoteStatus(int wiimote, u8* data, const struct WiimoteEmu::ReportFeatures& rptf, int irMode); std::string GetInputDisplay(); // Done this way to avoid mixing of core and gui code -typedef void(*ManipFunction)(SPADStatus *, int); +typedef void(*ManipFunction)(GCPadStatus*, int); void SetInputManip(ManipFunction); -void CallInputManip(SPADStatus *PadStatus, int controllerID); +void CallInputManip(GCPadStatus* PadStatus, int controllerID); }; diff --git a/Source/Core/Core/NetPlayClient.cpp b/Source/Core/Core/NetPlayClient.cpp index f158371..f6087db 100644 --- a/Source/Core/Core/NetPlayClient.cpp +++ b/Source/Core/Core/NetPlayClient.cpp @@ -17,7 +17,7 @@ #include "Core/IPC_HLE/WII_IPC_HLE_WiiMote.h" -std::mutex crit_netplay_client; +static std::mutex crit_netplay_client; static NetPlayClient * netplay_client = nullptr; NetSettings g_NetPlaySettings; @@ -29,7 +29,7 @@ NetPad::NetPad() nLo = 0x80800000; } -NetPad::NetPad(const SPADStatus* const pad_status) +NetPad::NetPad(const GCPadStatus* const pad_status) { nHi = (u32)((u8)pad_status->stickY); nHi |= (u32)((u8)pad_status->stickX << 8); @@ -558,7 +558,7 @@ void NetPlayClient::ClearBuffers() } // called from ---CPU--- thread -bool NetPlayClient::GetNetPads(const u8 pad_nb, const SPADStatus* const pad_status, NetPad* const netvalues) +bool NetPlayClient::GetNetPads(const u8 pad_nb, const GCPadStatus* const pad_status, NetPad* const netvalues) { // The interface for this is extremely silly. // @@ -618,7 +618,7 @@ bool NetPlayClient::GetNetPads(const u8 pad_nb, const SPADStatus* const pad_stat Common::SleepCurrentThread(1); } - SPADStatus tmp; + GCPadStatus tmp; tmp.stickY = ((u8*)&netvalues->nHi)[0]; tmp.stickX = ((u8*)&netvalues->nHi)[1]; tmp.button = ((u16*)&netvalues->nHi)[1]; @@ -846,7 +846,7 @@ u8 NetPlayClient::LocalWiimoteToInGameWiimote(u8 local_pad) // called from ---CPU--- thread // Actual Core function which is called on every frame -bool CSIDevice_GCController::NetPlay_GetInput(u8 numPAD, SPADStatus PadStatus, u32 *PADStatus) +bool CSIDevice_GCController::NetPlay_GetInput(u8 numPAD, GCPadStatus PadStatus, u32 *PADStatus) { std::lock_guard lk(crit_netplay_client); @@ -866,12 +866,12 @@ bool WiimoteEmu::Wiimote::NetPlay_GetWiimoteData(int wiimote, u8* data, u8 size) return false; } -bool CSIDevice_GCSteeringWheel::NetPlay_GetInput(u8 numPAD, SPADStatus PadStatus, u32 *PADStatus) +bool CSIDevice_GCSteeringWheel::NetPlay_GetInput(u8 numPAD, GCPadStatus PadStatus, u32 *PADStatus) { return CSIDevice_GCController::NetPlay_GetInput(numPAD, PadStatus, PADStatus); } -bool CSIDevice_DanceMat::NetPlay_GetInput(u8 numPAD, SPADStatus PadStatus, u32 *PADStatus) +bool CSIDevice_DanceMat::NetPlay_GetInput(u8 numPAD, GCPadStatus PadStatus, u32 *PADStatus) { return CSIDevice_GCController::NetPlay_GetInput(numPAD, PadStatus, PADStatus); } diff --git a/Source/Core/Core/NetPlayClient.h b/Source/Core/Core/NetPlayClient.h index 81562de..8a56ae9 100644 --- a/Source/Core/Core/NetPlayClient.h +++ b/Source/Core/Core/NetPlayClient.h @@ -25,7 +25,7 @@ class NetPad { public: NetPad(); - NetPad(const SPADStatus* const); + NetPad(const GCPadStatus* const); u32 nHi; u32 nLo; @@ -78,7 +78,7 @@ class NetPlayClient // Send and receive pads values bool WiimoteUpdate(int _number, u8* data, const u8 size); - bool GetNetPads(const u8 pad_nb, const SPADStatus* const, NetPad* const netvalues); + bool GetNetPads(const u8 pad_nb, const GCPadStatus* const, NetPad* const netvalues); u8 LocalPadToInGamePad(u8 localPad); u8 InGamePadToLocalPad(u8 localPad); diff --git a/Source/Core/Core/PatchEngine.cpp b/Source/Core/Core/PatchEngine.cpp index 652f58a..402c91c 100644 --- a/Source/Core/Core/PatchEngine.cpp +++ b/Source/Core/Core/PatchEngine.cpp @@ -43,8 +43,8 @@ const char *PatchTypeStrings[] = "dword", }; -std::vector onFrame; -std::map speedHacks; +static std::vector onFrame; +static std::map speedHacks; void LoadPatchSection(const std::string& section, std::vector& patches, IniFile& globalIni, IniFile& localIni) { @@ -174,7 +174,7 @@ void LoadPatches() LoadSpeedhacks("Speedhacks", merged); } -void ApplyPatches(const std::vector &patches) +static void ApplyPatches(const std::vector &patches) { for (const Patch& patch : patches) { diff --git a/Source/Core/Core/PatchEngine.h b/Source/Core/Core/PatchEngine.h index 2eb08fc..4c36bca 100644 --- a/Source/Core/Core/PatchEngine.h +++ b/Source/Core/Core/PatchEngine.h @@ -5,6 +5,8 @@ #pragma once #include +#include + #include "Common/IniFile.h" namespace PatchEngine @@ -65,3 +67,4 @@ inline int GetPatchTypeCharLength(PatchType type) } } // namespace +extern std::vector onFrame; diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp b/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp index 6b0c7db..a82d7bc 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter.cpp @@ -65,9 +65,9 @@ static void patches() }*/ } -int startTrace = 0; +static int startTrace = 0; -void Trace(UGeckoInstruction& instCode) +static void Trace(UGeckoInstruction& instCode) { std::string regs = ""; for (int i = 0; i < 32; i++) diff --git a/Source/Core/Core/PowerPC/Jit64/Jit.cpp b/Source/Core/Core/PowerPC/Jit64/Jit.cpp index 7dac00d..837b3c4 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit.cpp @@ -142,11 +142,6 @@ ps_adds1 static int CODE_SIZE = 1024*1024*32; -namespace CPUCompare -{ - extern u32 m_BlockStart; -} - void Jit64::Init() { jo.optimizeStack = true; diff --git a/Source/Core/Core/PowerPC/Jit64/Jit.h b/Source/Core/Core/PowerPC/Jit64/Jit.h index d273d32..58b38de 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit.h +++ b/Source/Core/Core/PowerPC/Jit64/Jit.h @@ -174,6 +174,7 @@ class Jit64 : public Jitx86Base void fp_arith(UGeckoInstruction inst); void fcmpx(UGeckoInstruction inst); + void fctiwx(UGeckoInstruction inst); void fmrx(UGeckoInstruction inst); void cmpXX(UGeckoInstruction inst); @@ -190,6 +191,7 @@ class Jit64 : public Jitx86Base void fmaddXX(UGeckoInstruction inst); void fsign(UGeckoInstruction inst); + void frsp(UGeckoInstruction inst); void stX(UGeckoInstruction inst); //stw sth stb void rlwinmx(UGeckoInstruction inst); void rlwimix(UGeckoInstruction inst); diff --git a/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.cpp b/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.cpp index 0184205..b82484e 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.cpp @@ -337,12 +337,12 @@ static GekkoOPTemplate table63[] = {264, &Jit64::fsign}, //"fabsx", OPTYPE_FPU, FL_RC_BIT_F}}, {32, &Jit64::fcmpx}, //"fcmpo", OPTYPE_FPU, FL_RC_BIT_F}}, {0, &Jit64::fcmpx}, //"fcmpu", OPTYPE_FPU, FL_RC_BIT_F}}, - {14, &Jit64::FallBackToInterpreter}, //"fctiwx", OPTYPE_FPU, FL_RC_BIT_F}}, - {15, &Jit64::FallBackToInterpreter}, //"fctiwzx", OPTYPE_FPU, FL_RC_BIT_F}}, + {14, &Jit64::fctiwx}, //"fctiwx", OPTYPE_FPU, FL_RC_BIT_F}}, + {15, &Jit64::fctiwx}, //"fctiwzx", OPTYPE_FPU, FL_RC_BIT_F}}, {72, &Jit64::fmrx}, //"fmrx", OPTYPE_FPU, FL_RC_BIT_F}}, {136, &Jit64::fsign}, //"fnabsx", OPTYPE_FPU, FL_RC_BIT_F}}, {40, &Jit64::fsign}, //"fnegx", OPTYPE_FPU, FL_RC_BIT_F}}, - {12, &Jit64::FallBackToInterpreter}, //"frspx", OPTYPE_FPU, FL_RC_BIT_F}}, + {12, &Jit64::frsp}, //"frspx", OPTYPE_FPU, FL_RC_BIT_F}}, {64, &Jit64::FallBackToInterpreter}, //"mcrfs", OPTYPE_SYSTEMFP, 0}}, {583, &Jit64::FallBackToInterpreter}, //"mffsx", OPTYPE_SYSTEMFP, 0}}, diff --git a/Source/Core/Core/PowerPC/Jit64/JitRegCache.cpp b/Source/Core/Core/PowerPC/Jit64/JitRegCache.cpp index fcf9e64..0742346 100644 --- a/Source/Core/Core/PowerPC/Jit64/JitRegCache.cpp +++ b/Source/Core/Core/PowerPC/Jit64/JitRegCache.cpp @@ -2,6 +2,8 @@ // Licensed under GPLv2 // Refer to the license.txt file included. +#include + #include "Core/PowerPC/Jit64/Jit.h" #include "Core/PowerPC/Jit64/JitAsm.h" #include "Core/PowerPC/Jit64/JitRegCache.h" @@ -20,7 +22,7 @@ void RegCache::Start() xreg.free = true; xreg.dirty = false; xreg.locked = false; - xreg.ppcReg = -1; + xreg.ppcReg = INVALID_REG; } for (size_t i = 0; i < regs.size(); i++) { @@ -81,9 +83,9 @@ void RegCache::UnlockAllX() X64Reg RegCache::GetFreeXReg() { - int aCount; - const int *aOrder = GetAllocationOrder(aCount); - for (int i = 0; i < aCount; i++) + size_t aCount; + const int* aOrder = GetAllocationOrder(aCount); + for (size_t i = 0; i < aCount; i++) { X64Reg xr = (X64Reg)aOrder[i]; if (!xregs[xr].locked && xregs[xr].free) @@ -94,12 +96,12 @@ X64Reg RegCache::GetFreeXReg() //Okay, not found :( Force grab one //TODO - add a pass to grab xregs whose ppcreg is not used in the next 3 instructions - for (int i = 0; i < aCount; i++) + for (size_t i = 0; i < aCount; i++) { X64Reg xr = (X64Reg)aOrder[i]; if (xregs[xr].locked) continue; - int preg = xregs[xr].ppcReg; + size_t preg = xregs[xr].ppcReg; if (!regs[preg].locked) { StoreFromRegister(preg); @@ -108,7 +110,7 @@ X64Reg RegCache::GetFreeXReg() } //Still no dice? Die! _assert_msg_(DYNA_REC, 0, "Regcache ran out of regs"); - return (X64Reg) -1; + return INVALID_REG; } void RegCache::FlushR(X64Reg reg) @@ -136,34 +138,36 @@ int RegCache::SanityCheck() const return 2; } else if (regs[i].location.IsImm()) + { return 3; + } } } return 0; } -void RegCache::DiscardRegContentsIfCached(int preg) +void RegCache::DiscardRegContentsIfCached(size_t preg) { if (IsBound(preg)) { X64Reg xr = regs[preg].location.GetSimpleReg(); xregs[xr].free = true; xregs[xr].dirty = false; - xregs[xr].ppcReg = -1; + xregs[xr].ppcReg = INVALID_REG; regs[preg].away = false; regs[preg].location = GetDefaultLocation(preg); } } -void GPRRegCache::SetImmediate32(int preg, u32 immValue) +void GPRRegCache::SetImmediate32(size_t preg, u32 immValue) { DiscardRegContentsIfCached(preg); regs[preg].away = true; regs[preg].location = Imm32(immValue); } -const int *GPRRegCache::GetAllocationOrder(int &count) +const int* GPRRegCache::GetAllocationOrder(size_t& count) { static const int allocationOrder[] = { @@ -182,7 +186,7 @@ const int *GPRRegCache::GetAllocationOrder(int &count) return allocationOrder; } -const int *FPURegCache::GetAllocationOrder(int &count) +const int* FPURegCache::GetAllocationOrder(size_t& count) { static const int allocationOrder[] = { @@ -196,17 +200,17 @@ const int *FPURegCache::GetAllocationOrder(int &count) return allocationOrder; } -OpArg GPRRegCache::GetDefaultLocation(int reg) const +OpArg GPRRegCache::GetDefaultLocation(size_t reg) const { return M(&ppcState.gpr[reg]); } -OpArg FPURegCache::GetDefaultLocation(int reg) const +OpArg FPURegCache::GetDefaultLocation(size_t reg) const { return M(&ppcState.ps[reg][0]); } -void RegCache::KillImmediate(int preg, bool doLoad, bool makeDirty) +void RegCache::KillImmediate(size_t preg, bool doLoad, bool makeDirty) { if (regs[preg].away) { @@ -217,7 +221,7 @@ void RegCache::KillImmediate(int preg, bool doLoad, bool makeDirty) } } -void RegCache::BindToRegister(int i, bool doLoad, bool makeDirty) +void RegCache::BindToRegister(size_t i, bool doLoad, bool makeDirty) { if (!regs[i].away && regs[i].location.IsImm()) PanicAlert("Bad immediate"); @@ -232,7 +236,7 @@ void RegCache::BindToRegister(int i, bool doLoad, bool makeDirty) xregs[xr].dirty = makeDirty || regs[i].location.IsImm(); if (doLoad) LoadRegister(i, xr); - for (int j = 0; j < (int)regs.size(); j++) + for (size_t j = 0; j < regs.size(); j++) { if (i != j && regs[j].location.IsSimpleReg() && regs[j].location.GetSimpleReg() == xr) { @@ -255,7 +259,7 @@ void RegCache::BindToRegister(int i, bool doLoad, bool makeDirty) } } -void RegCache::StoreFromRegister(int i, FlushMode mode) +void RegCache::StoreFromRegister(size_t i, FlushMode mode) { if (regs[i].away) { @@ -267,7 +271,7 @@ void RegCache::StoreFromRegister(int i, FlushMode mode) if (mode == FLUSH_ALL) { xregs[xr].free = true; - xregs[xr].ppcReg = -1; + xregs[xr].ppcReg = INVALID_REG; xregs[xr].dirty = false; } } @@ -287,17 +291,17 @@ void RegCache::StoreFromRegister(int i, FlushMode mode) } } -void GPRRegCache::LoadRegister(int preg, X64Reg newLoc) +void GPRRegCache::LoadRegister(size_t preg, X64Reg newLoc) { emit->MOV(32, ::Gen::R(newLoc), regs[preg].location); } -void GPRRegCache::StoreRegister(int preg, OpArg newLoc) +void GPRRegCache::StoreRegister(size_t preg, OpArg newLoc) { emit->MOV(32, newLoc, regs[preg].location); } -void FPURegCache::LoadRegister(int preg, X64Reg newLoc) +void FPURegCache::LoadRegister(size_t preg, X64Reg newLoc) { if (!regs[preg].location.IsImm() && (regs[preg].location.offset & 0xF)) { @@ -306,7 +310,7 @@ void FPURegCache::LoadRegister(int preg, X64Reg newLoc) emit->MOVAPD(newLoc, regs[preg].location); } -void FPURegCache::StoreRegister(int preg, OpArg newLoc) +void FPURegCache::StoreRegister(size_t preg, OpArg newLoc) { emit->MOVAPD(newLoc, regs[preg].location.GetSimpleReg()); } @@ -323,7 +327,7 @@ void RegCache::Flush(FlushMode mode) { if (regs[i].locked) { - PanicAlert("Someone forgot to unlock PPC reg %zu (X64 reg %i).", i, RX(i)); + PanicAlert("Someone forgot to unlock PPC reg %" PRIx64 " (X64 reg %i).", i, RX(i)); } if (regs[i].away) { @@ -333,7 +337,7 @@ void RegCache::Flush(FlushMode mode) } else { - _assert_msg_(DYNA_REC,0,"Jit64 - Flush unhandled case, reg %zu PC: %08x", i, PC); + _assert_msg_(DYNA_REC,0,"Jit64 - Flush unhandled case, reg %" PRIx64 " PC: %08x", i, PC); } } } diff --git a/Source/Core/Core/PowerPC/Jit64/JitRegCache.h b/Source/Core/Core/PowerPC/Jit64/JitRegCache.h index 62fca8d..563302c 100644 --- a/Source/Core/Core/PowerPC/Jit64/JitRegCache.h +++ b/Source/Core/Core/PowerPC/Jit64/JitRegCache.h @@ -25,7 +25,7 @@ struct PPCCachedReg struct X64CachedReg { - int ppcReg; + size_t ppcReg; bool dirty; bool free; bool locked; @@ -46,7 +46,7 @@ class RegCache std::array regs; std::array xregs; - virtual const int *GetAllocationOrder(int &count) = 0; + virtual const int *GetAllocationOrder(size_t& count) = 0; XEmitter *emit; @@ -56,7 +56,7 @@ class RegCache virtual ~RegCache() {} void Start(); - void DiscardRegContentsIfCached(int preg); + void DiscardRegContentsIfCached(size_t preg); void SetEmitter(XEmitter *emitter) {emit = emitter;} void FlushR(X64Reg reg); @@ -72,24 +72,24 @@ class RegCache void Flush(FlushMode mode = FLUSH_ALL); void Flush(PPCAnalyst::CodeOp *op) {Flush();} int SanityCheck() const; - void KillImmediate(int preg, bool doLoad, bool makeDirty); + void KillImmediate(size_t preg, bool doLoad, bool makeDirty); //TODO - instead of doload, use "read", "write" //read only will not set dirty flag - void BindToRegister(int preg, bool doLoad = true, bool makeDirty = true); - void StoreFromRegister(int preg, FlushMode mode = FLUSH_ALL); - virtual void StoreRegister(int preg, OpArg newLoc) = 0; - virtual void LoadRegister(int preg, X64Reg newLoc) = 0; + void BindToRegister(size_t preg, bool doLoad = true, bool makeDirty = true); + void StoreFromRegister(size_t preg, FlushMode mode = FLUSH_ALL); + virtual void StoreRegister(size_t preg, OpArg newLoc) = 0; + virtual void LoadRegister(size_t preg, X64Reg newLoc) = 0; - const OpArg &R(int preg) const {return regs[preg].location;} - X64Reg RX(int preg) const + const OpArg &R(size_t preg) const {return regs[preg].location;} + X64Reg RX(size_t preg) const { if (IsBound(preg)) return regs[preg].location.GetSimpleReg(); PanicAlert("Not so simple - %i", preg); return (X64Reg)-1; } - virtual OpArg GetDefaultLocation(int reg) const = 0; + virtual OpArg GetDefaultLocation(size_t reg) const = 0; // Register locking. void Lock(int p1, int p2=0xff, int p3=0xff, int p4=0xff); @@ -97,12 +97,12 @@ class RegCache void UnlockAll(); void UnlockAllX(); - bool IsFreeX(int xreg) const + bool IsFreeX(size_t xreg) const { return xregs[xreg].free && !xregs[xreg].locked; } - bool IsBound(int preg) const + bool IsBound(size_t preg) const { return regs[preg].away && regs[preg].location.IsSimpleReg(); } @@ -114,19 +114,19 @@ class RegCache class GPRRegCache : public RegCache { public: - void StoreRegister(int preg, OpArg newLoc) override; - void LoadRegister(int preg, X64Reg newLoc) override; - OpArg GetDefaultLocation(int reg) const override; - const int *GetAllocationOrder(int &count) override; - void SetImmediate32(int preg, u32 immValue); + void StoreRegister(size_t preg, OpArg newLoc) override; + void LoadRegister(size_t preg, X64Reg newLoc) override; + OpArg GetDefaultLocation(size_t reg) const override; + const int* GetAllocationOrder(size_t& count) override; + void SetImmediate32(size_t preg, u32 immValue); }; class FPURegCache : public RegCache { public: - void StoreRegister(int preg, OpArg newLoc) override; - void LoadRegister(int preg, X64Reg newLoc) override; - const int *GetAllocationOrder(int &count) override; - OpArg GetDefaultLocation(int reg) const override; + void StoreRegister(size_t preg, OpArg newLoc) override; + void LoadRegister(size_t preg, X64Reg newLoc) override; + const int* GetAllocationOrder(size_t& count) override; + OpArg GetDefaultLocation(size_t reg) const override; }; diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_FloatingPoint.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_FloatingPoint.cpp index 0552a2c..4d2ec1d 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit_FloatingPoint.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit_FloatingPoint.cpp @@ -10,6 +10,7 @@ static const u64 GC_ALIGNED16(psSignBits2[2]) = {0x8000000000000000ULL, 0x8000000000000000ULL}; static const u64 GC_ALIGNED16(psAbsMask2[2]) = {0x7FFFFFFFFFFFFFFFULL, 0x7FFFFFFFFFFFFFFFULL}; +static const double GC_ALIGNED16(half_qnan_and_s32_max[2]) = {0x7FFFFFFF, -0x80000}; void Jit64::fp_tri_op(int d, int a, int b, bool reversible, bool single, void (XEmitter::*op)(Gen::X64Reg, Gen::OpArg)) { @@ -174,6 +175,21 @@ void Jit64::fsign(UGeckoInstruction inst) fpr.UnlockAll(); } +void Jit64::frsp(UGeckoInstruction inst) +{ + INSTRUCTION_START + JITDISABLE(bJITFloatingPointOff); + FALLBACK_IF(inst.Rc); + + int d = inst.FD, b = inst.FB; + fpr.Lock(d, b); + fpr.BindToRegister(d, d == b); + CVTSD2SS(fpr.RX(d), fpr.R(b)); + CVTSS2SD(fpr.RX(d), fpr.R(d)); + UNPCKLPD(fpr.RX(d), fpr.R(d)); + fpr.UnlockAll(); +} + void Jit64::fmrx(UGeckoInstruction inst) { INSTRUCTION_START @@ -267,3 +283,44 @@ void Jit64::fcmpx(UGeckoInstruction inst) fpr.UnlockAll(); } + +void Jit64::fctiwx(UGeckoInstruction inst) +{ + INSTRUCTION_START + JITDISABLE(bJITFloatingPointOff); + FALLBACK_IF(inst.Rc); + + int d = inst.RD; + int b = inst.RB; + fpr.Lock(d, b); + fpr.BindToRegister(d, d == b); + + // Intel uses 0x80000000 as a generic error code while PowerPC uses clamping: + // + // input | output fctiw | output CVTPD2DQ + // ------------+--------------+---------------- + // > +2^31 - 1 | 0x7fffffff | 0x80000000 + // < -2^31 | 0x80000000 | 0x80000000 + // any NaN | 0x80000000 | 0x80000000 + // + // The upper 32 bits of the result are set to 0xfff80000, + // except for -0.0 where they are set to 0xfff80001 (TODO). + + MOVAPD(XMM0, M(&half_qnan_and_s32_max)); + MINSD(XMM0, fpr.R(b)); + switch (inst.SUBOP10) + { + // fctiwx + case 14: + CVTPD2DQ(XMM0, R(XMM0)); + break; + + // fctiwzx + case 15: + CVTTPD2DQ(XMM0, R(XMM0)); + break; + } + // d[64+] must not be modified + MOVSD(fpr.R(d), XMM0); + fpr.UnlockAll(); +} diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp index 389a636..67c5e96 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp @@ -170,10 +170,10 @@ void Jit64::ComputeRC(const Gen::OpArg & arg) } } -u32 Add(u32 a, u32 b) {return a + b;} -u32 Or (u32 a, u32 b) {return a | b;} -u32 And(u32 a, u32 b) {return a & b;} -u32 Xor(u32 a, u32 b) {return a ^ b;} +static u32 Add(u32 a, u32 b) {return a + b;} +static u32 Or (u32 a, u32 b) {return a | b;} +static u32 And(u32 a, u32 b) {return a & b;} +static u32 Xor(u32 a, u32 b) {return a ^ b;} void Jit64::regimmop(int d, int a, bool binary, u32 value, Operation doop, void (XEmitter::*op)(int, const Gen::OpArg&, const Gen::OpArg&), bool Rc, bool carry) { diff --git a/Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp b/Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp index 8c58ae6..a3cb619 100644 --- a/Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp +++ b/Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp @@ -221,7 +221,7 @@ namespace JitILProfiler } } }; - std::unique_ptr finalizer; + static std::unique_ptr finalizer; static void Init() { finalizer = std::make_unique(); @@ -234,11 +234,6 @@ namespace JitILProfiler static int CODE_SIZE = 1024*1024*32; -namespace CPUCompare -{ - extern u32 m_BlockStart; -} - void JitIL::Init() { jo.optimizeStack = true; diff --git a/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.h b/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.h index c1150ae..d1d65d8 100644 --- a/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.h +++ b/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.h @@ -2,8 +2,7 @@ // Licensed under GPLv2 // Refer to the license.txt file included. -#ifndef JITIL_TABLES_H -#define JITIL_TABLES_H +#pragma once #include "Core/PowerPC/Gekko.h" #include "Core/PowerPC/PPCTables.h" @@ -14,5 +13,3 @@ namespace JitILTables void CompileInstruction(PPCAnalyst::CodeOp & op); void InitTables(); } - -#endif diff --git a/Source/Core/Core/PowerPC/JitArm32/Jit.cpp b/Source/Core/Core/PowerPC/JitArm32/Jit.cpp index 5d814ce..afe4d49 100644 --- a/Source/Core/Core/PowerPC/JitArm32/Jit.cpp +++ b/Source/Core/Core/PowerPC/JitArm32/Jit.cpp @@ -26,10 +26,6 @@ using namespace ArmGen; using namespace PowerPC; static int CODE_SIZE = 1024*1024*32; -namespace CPUCompare -{ - extern u32 m_BlockStart; -} void JitArm::Init() { diff --git a/Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp b/Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp index 2708cd8..5f47aef 100644 --- a/Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp +++ b/Source/Core/Core/PowerPC/JitArm32/JitArm_Integer.cpp @@ -14,8 +14,6 @@ #include "Core/PowerPC/JitArm32/JitAsm.h" #include "Core/PowerPC/JitArm32/JitRegCache.h" -extern u32 Helper_Mask(u8 mb, u8 me); - // Assumes that Sign and Zero flags were set by the last operation. Preserves all flags and registers. // Jit64 ComputerRC is signed // JIT64 GenerateRC is unsigned diff --git a/Source/Core/Core/PowerPC/JitArmIL/JitIL.cpp b/Source/Core/Core/PowerPC/JitArmIL/JitIL.cpp index f47b6f2..e1a711e 100644 --- a/Source/Core/Core/PowerPC/JitArmIL/JitIL.cpp +++ b/Source/Core/Core/PowerPC/JitArmIL/JitIL.cpp @@ -25,10 +25,7 @@ using namespace ArmGen; using namespace PowerPC; static int CODE_SIZE = 1024*1024*32; -namespace CPUCompare -{ - extern u32 m_BlockStart; -} + void JitArmIL::Init() { AllocCodeSpace(CODE_SIZE); diff --git a/Source/Core/Core/PowerPC/JitArmIL/JitILAsm.cpp b/Source/Core/Core/PowerPC/JitArmIL/JitILAsm.cpp index 8749e01..c85bcf8 100644 --- a/Source/Core/Core/PowerPC/JitArmIL/JitILAsm.cpp +++ b/Source/Core/Core/PowerPC/JitArmIL/JitILAsm.cpp @@ -16,7 +16,6 @@ using namespace ArmGen; -JitArmILAsmRoutineManager armil_asm_routines; void JitArmILAsmRoutineManager::Generate() { enterCode = GetCodePtr(); diff --git a/Source/Core/Core/PowerPC/JitArmIL/JitILAsm.h b/Source/Core/Core/PowerPC/JitArmIL/JitILAsm.h index 1c2dbbd..a068ec8 100644 --- a/Source/Core/Core/PowerPC/JitArmIL/JitILAsm.h +++ b/Source/Core/Core/PowerPC/JitArmIL/JitILAsm.h @@ -25,4 +25,3 @@ class JitArmILAsmRoutineManager : public CommonAsmRoutinesBase, public ArmGen::A } }; -extern JitArmILAsmRoutineManager armil_asm_routines; diff --git a/Source/Core/Core/PowerPC/JitCommon/JitBackpatch.cpp b/Source/Core/Core/PowerPC/JitCommon/JitBackpatch.cpp index 53bc48c..6e98700 100644 --- a/Source/Core/Core/PowerPC/JitCommon/JitBackpatch.cpp +++ b/Source/Core/Core/PowerPC/JitCommon/JitBackpatch.cpp @@ -19,8 +19,6 @@ using namespace Gen; -extern u8 *trampolineCodePtr; - #if _M_X86_64 static void BackPatchError(const std::string &text, u8 *codePtr, u32 emAddress) { u64 code_addr = (u64)codePtr; diff --git a/Source/Core/Core/PowerPC/JitCommon/Jit_Util.cpp b/Source/Core/Core/PowerPC/JitCommon/Jit_Util.cpp index 58348d1..3c8eaba 100644 --- a/Source/Core/Core/PowerPC/JitCommon/Jit_Util.cpp +++ b/Source/Core/Core/PowerPC/JitCommon/Jit_Util.cpp @@ -13,9 +13,6 @@ using namespace Gen; -static const u8 GC_ALIGNED16(pbswapShuffle1x4[16]) = {3, 2, 1, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; -static u32 GC_ALIGNED16(float_buffer); - void EmuCodeBlock::LoadAndSwap(int size, Gen::X64Reg dst, const Gen::OpArg& src) { if (cpu_info.bMOVBE) diff --git a/Source/Core/Core/PowerPC/JitInterface.cpp b/Source/Core/Core/PowerPC/JitInterface.cpp index 46ccb6f..8dc6eae 100644 --- a/Source/Core/Core/PowerPC/JitInterface.cpp +++ b/Source/Core/Core/PowerPC/JitInterface.cpp @@ -31,7 +31,7 @@ #include "Core/PowerPC/JitArmIL/JitIL_Tables.h" #endif -bool bFakeVMEM = false; +static bool bFakeVMEM = false; bool bMMU = false; namespace JitInterface diff --git a/Source/Core/Core/PowerPC/JitInterface.h b/Source/Core/Core/PowerPC/JitInterface.h index 3843f4e..3cb5742 100644 --- a/Source/Core/Core/PowerPC/JitInterface.h +++ b/Source/Core/Core/PowerPC/JitInterface.h @@ -35,6 +35,5 @@ namespace JitInterface void Shutdown(); } -extern bool bFakeVMEM; extern bool bMMU; diff --git a/Source/Core/Core/PowerPC/LUT_frsqrtex.cpp b/Source/Core/Core/PowerPC/LUT_frsqrtex.cpp deleted file mode 100644 index 4f11bcf..0000000 --- a/Source/Core/Core/PowerPC/LUT_frsqrtex.cpp +++ /dev/null @@ -1,21857 +0,0 @@ -// Copyright 2013 Dolphin Emulator Project -// Licensed under GPLv2 -// Refer to the license.txt file included. - - -// Gekko related unions, structs, ... - -#include "Core/PowerPC/LUT_frsqrtex.h" - -const unsigned int frsqrtex_lut[65536] = { - 0x69FA0000, 0x69F8A600, 0x69F74C00, - 0x69F5F200, 0x69F49800, 0x69F33E00, - 0x69F1E400, 0x69F08A00, 0x69EF3000, - 0x69EDD600, 0x69EC7C00, 0x69EB2200, - 0x69E9C800, 0x69E86E00, 0x69E71400, - 0x69E5BA00, 0x69E46000, 0x69E30600, - 0x69E1AC00, 0x69E05200, 0x69DEF800, - 0x69DD9E00, 0x69DC4400, 0x69DAEA00, - 0x69D99000, 0x69D83600, 0x69D6DC00, - 0x69D58200, 0x69D42800, 0x69D2CE00, - 0x69D17400, 0x69D01A00, 0x69CEC000, - 0x69CD6600, 0x69CC0C00, 0x69CAB200, - 0x69C95800, 0x69C7FE00, 0x69C6A400, - 0x69C54A00, 0x69C3F000, 0x69C29600, - 0x69C13C00, 0x69BFE200, 0x69BE8800, - 0x69BD2E00, 0x69BBD400, 0x69BA7A00, - 0x69B92000, 0x69B7C600, 0x69B66C00, - 0x69B51200, 0x69B3B800, 0x69B25E00, - 0x69B10400, 0x69AFAA00, 0x69AE5000, - 0x69ACF600, 0x69AB9C00, 0x69AA4200, - 0x69A8E800, 0x69A78E00, 0x69A63400, - 0x69A4DA00, 0x69A38000, 0x69A22600, - 0x69A0CC00, 0x699F7200, 0x699E1800, - 0x699CBE00, 0x699B6400, 0x699A0A00, - 0x6998B000, 0x69975600, 0x6995FC00, - 0x6994A200, 0x69934800, 0x6991EE00, - 0x69909400, 0x698F3A00, 0x698DE000, - 0x698C8600, 0x698B2C00, 0x6989D200, - 0x69887800, 0x69871E00, 0x6985C400, - 0x69846A00, 0x69831000, 0x6981B600, - 0x69805C00, 0x697F0200, 0x697DA800, - 0x697C4E00, 0x697AF400, 0x69799A00, - 0x69784000, 0x6976E600, 0x69758C00, - 0x69743200, 0x6972D800, 0x69717E00, - 0x69702400, 0x696ECA00, 0x696D7000, - 0x696C1600, 0x696ABC00, 0x69696200, - 0x69680800, 0x6966AE00, 0x69655400, - 0x6963FA00, 0x6962A000, 0x69614600, - 0x695FEC00, 0x695E9200, 0x695D3800, - 0x695BDE00, 0x695A8400, 0x69592A00, - 0x6957D000, 0x69567600, 0x69551C00, - 0x6953C200, 0x69526800, 0x69510E00, - 0x694FB400, 0x694E5A00, 0x694D0000, - 0x694BA600, 0x694A4C00, 0x6948F200, - 0x69479800, 0x69463E00, 0x6944E400, - 0x69438A00, 0x69423000, 0x6940D600, - 0x693F7C00, 0x693E2200, 0x693CC800, - 0x693B6E00, 0x693A1400, 0x6938BA00, - 0x69376000, 0x69360600, 0x6934AC00, - 0x69335200, 0x6931F800, 0x69309E00, - 0x692F4400, 0x692DEA00, 0x692C9000, - 0x692B3600, 0x6929DC00, 0x69288200, - 0x69272800, 0x6925CE00, 0x69247400, - 0x69231A00, 0x6921C000, 0x69206600, - 0x691F0C00, 0x691DB200, 0x691C5800, - 0x691AFE00, 0x6919A400, 0x69184A00, - 0x6916F000, 0x69159600, 0x69143C00, - 0x6912E200, 0x69118800, 0x69102E00, - 0x690ED400, 0x690D7A00, 0x690C2000, - 0x690AC600, 0x69096C00, 0x69081200, - 0x6906B800, 0x69055E00, 0x69040400, - 0x6902AA00, 0x69015000, 0x68FFF600, - 0x68FE9C00, 0x68FD4200, 0x68FBE800, - 0x68FA8E00, 0x68F93400, 0x68F7DA00, - 0x68F68000, 0x68F52600, 0x68F3CC00, - 0x68F27200, 0x68F11800, 0x68EFBE00, - 0x68EE6400, 0x68ED0A00, 0x68EBB000, - 0x68EA5600, 0x68E8FC00, 0x68E7A200, - 0x68E64800, 0x68E4EE00, 0x68E39400, - 0x68E23A00, 0x68E0E000, 0x68DF8600, - 0x68DE2C00, 0x68DCD200, 0x68DB7800, - 0x68DA1E00, 0x68D8C400, 0x68D76A00, - 0x68D61000, 0x68D4B600, 0x68D35C00, - 0x68D20200, 0x68D0A800, 0x68CF4E00, - 0x68CDF400, 0x68CC9A00, 0x68CB4000, - 0x68C9E600, 0x68C88C00, 0x68C73200, - 0x68C5D800, 0x68C47E00, 0x68C32400, - 0x68C1CA00, 0x68C07000, 0x68BF1600, - 0x68BDBC00, 0x68BC6200, 0x68BB0800, - 0x68B9AE00, 0x68B85400, 0x68B6FA00, - 0x68B5A000, 0x68B44600, 0x68B2EC00, - 0x68B19200, 0x68B03800, 0x68AEDE00, - 0x68AD8400, 0x68AC2A00, 0x68AAD000, - 0x68A97600, 0x68A81C00, 0x68A6C200, - 0x68A56800, 0x68A40E00, 0x68A2B400, - 0x68A15A00, 0x68A00000, 0x689EA600, - 0x689D4C00, 0x689BF200, 0x689A9800, - 0x68993E00, 0x6897E400, 0x68968A00, - 0x68953000, 0x6893D600, 0x68927C00, - 0x68912200, 0x688FC800, 0x688E6E00, - 0x688D1400, 0x688BBA00, 0x688A6000, - 0x68890600, 0x6887AC00, 0x68865200, - 0x6884F800, 0x68839E00, 0x68824400, - 0x6880EA00, 0x687F9000, 0x687E3600, - 0x687CDC00, 0x687B8200, 0x687A2800, - 0x6878CE00, 0x68777400, 0x68761A00, - 0x6874C000, 0x68736600, 0x68720C00, - 0x6870B200, 0x686F5800, 0x686DFE00, - 0x686CA400, 0x686B4A00, 0x6869F000, - 0x68689600, 0x68673C00, 0x6865E200, - 0x68648800, 0x68632E00, 0x6861D400, - 0x68607A00, 0x685F2000, 0x685DC600, - 0x685C6C00, 0x685B1200, 0x6859B800, - 0x68585E00, 0x68570400, 0x6855AA00, - 0x68545000, 0x6852F600, 0x68519C00, - 0x68504200, 0x684EE800, 0x684D8E00, - 0x684C3400, 0x684ADA00, 0x68498000, - 0x68482600, 0x6846CC00, 0x68457200, - 0x68441800, 0x6842BE00, 0x68416400, - 0x68400A00, 0x683EB000, 0x683D5600, - 0x683BFC00, 0x683AA200, 0x68394800, - 0x6837EE00, 0x68369400, 0x68353A00, - 0x6833E000, 0x68328600, 0x68312C00, - 0x682FD200, 0x682E7800, 0x682D1E00, - 0x682BC400, 0x682A6A00, 0x68291000, - 0x6827B600, 0x68265C00, 0x68250200, - 0x6823A800, 0x68224E00, 0x6820F400, - 0x681F9A00, 0x681E4000, 0x681CE600, - 0x681B8C00, 0x681A3200, 0x6818D800, - 0x68177E00, 0x68162400, 0x6814CA00, - 0x68137000, 0x68121600, 0x6810BC00, - 0x680F6200, 0x680E0800, 0x680CAE00, - 0x680B5400, 0x6809FA00, 0x6808A000, - 0x68074600, 0x6805EC00, 0x68049200, - 0x68033800, 0x6801DE00, 0x68008400, - 0x67FF2A00, 0x67FDD000, 0x67FC7600, - 0x67FB1C00, 0x67F9C200, 0x67F86800, - 0x67F70E00, 0x67F5B400, 0x67F45A00, - 0x67F30000, 0x67F1A600, 0x67F04C00, - 0x67EEF200, 0x67ED9800, 0x67EC3E00, - 0x67EAE400, 0x67E98A00, 0x67E83000, - 0x67E6D600, 0x67E57C00, 0x67E42200, - 0x67E2C800, 0x67E16E00, 0x67E01400, - 0x67DEBA00, 0x67DD6000, 0x67DC0600, - 0x67DAAC00, 0x67D95200, 0x67D7F800, - 0x67D69E00, 0x67D54400, 0x67D3EA00, - 0x67D29000, 0x67D13600, 0x67CFDC00, - 0x67CE8200, 0x67CD2800, 0x67CBCE00, - 0x67CA7400, 0x67C91A00, 0x67C7C000, - 0x67C66600, 0x67C50C00, 0x67C3B200, - 0x67C25800, 0x67C0FE00, 0x67BFA400, - 0x67BE4A00, 0x67BCF000, 0x67BB9600, - 0x67BA3C00, 0x67B8E200, 0x67B78800, - 0x67B62E00, 0x67B4D400, 0x67B37A00, - 0x67B22000, 0x67B0C600, 0x67AF6C00, - 0x67AE1200, 0x67ACB800, 0x67AB5E00, - 0x67AA0400, 0x67A8AA00, 0x67A75000, - 0x67A5F600, 0x67A49C00, 0x67A34200, - 0x67A1E800, 0x67A08E00, 0x679F3400, - 0x679DDA00, 0x679C8000, 0x679B2600, - 0x6799CC00, 0x67987200, 0x67971800, - 0x6795BE00, 0x67946400, 0x67930A00, - 0x6791B000, 0x67905600, 0x678EFC00, - 0x678DA200, 0x678C4800, 0x678AEE00, - 0x67899400, 0x67883A00, 0x6786E000, - 0x67858600, 0x67842C00, 0x6782D200, - 0x67817800, 0x67801E00, 0x677EC400, - 0x677D6A00, 0x677C1000, 0x677AB600, - 0x67795C00, 0x67780200, 0x6776A800, - 0x67754E00, 0x6773F400, 0x67729A00, - 0x67714000, 0x676FE600, 0x676E8C00, - 0x676D3200, 0x676BD800, 0x676A7E00, - 0x67692400, 0x6767CA00, 0x67667000, - 0x67651600, 0x6763BC00, 0x67626200, - 0x67610800, 0x675FAE00, 0x675E5400, - 0x675CFA00, 0x675BA000, 0x675A4600, - 0x6758EC00, 0x67579200, 0x67563800, - 0x6754DE00, 0x67538400, 0x67522A00, - 0x6750D000, 0x674F7600, 0x674E1C00, - 0x674CC200, 0x674B6800, 0x674A0E00, - 0x6748B400, 0x67475A00, 0x67460000, - 0x6744A600, 0x67434C00, 0x6741F200, - 0x67409800, 0x673F3E00, 0x673DE400, - 0x673C8A00, 0x673B3000, 0x6739D600, - 0x67387C00, 0x67372200, 0x6735C800, - 0x67346E00, 0x67331400, 0x6731BA00, - 0x67306000, 0x672F0600, 0x672DAC00, - 0x672C5200, 0x672AF800, 0x67299E00, - 0x67284400, 0x6726EA00, 0x67259000, - 0x67243600, 0x6722DC00, 0x67218200, - 0x67202800, 0x671ECE00, 0x671D7400, - 0x671C1A00, 0x671AC000, 0x67196600, - 0x67180C00, 0x6716B200, 0x67155800, - 0x6713FE00, 0x6712A400, 0x67114A00, - 0x670FF000, 0x670E9600, 0x670D3C00, - 0x670BE200, 0x670A8800, 0x67092E00, - 0x6707D400, 0x67067A00, 0x67052000, - 0x6703C600, 0x67026C00, 0x67011200, - 0x66FFB800, 0x66FE5E00, 0x66FD0400, - 0x66FBAA00, 0x66FA5000, 0x66F8F600, - 0x66F79C00, 0x66F64200, 0x66F4E800, - 0x66F38E00, 0x66F23400, 0x66F0DA00, - 0x66EF8000, 0x66EE2600, 0x66ECCC00, - 0x66EB7200, 0x66EA1800, 0x66E8BE00, - 0x66E76400, 0x66E60A00, 0x66E4B000, - 0x66E35600, 0x66E1FC00, 0x66E0A200, - 0x66DF4800, 0x66DDEE00, 0x66DC9400, - 0x66DB3A00, 0x66D9E000, 0x66D88600, - 0x66D72C00, 0x66D5D200, 0x66D47800, - 0x66D31E00, 0x66D1C400, 0x66D06A00, - 0x66CF1000, 0x66CDB600, 0x66CC5C00, - 0x66CB0200, 0x66C9A800, 0x66C84E00, - 0x66C6F400, 0x66C59A00, 0x66C44000, - 0x66C2E600, 0x66C18C00, 0x66C03200, - 0x66BED800, 0x66BD7E00, 0x66BC2400, - 0x66BACA00, 0x66B97000, 0x66B81600, - 0x66B6BC00, 0x66B56200, 0x66B40800, - 0x66B2AE00, 0x66B15400, 0x66AFFA00, - 0x66AEA000, 0x66AD4600, 0x66ABEC00, - 0x66AA9200, 0x66A93800, 0x66A7DE00, - 0x66A68400, 0x66A52A00, 0x66A3D000, - 0x66A27600, 0x66A11C00, 0x669FC200, - 0x669E6800, 0x669D0E00, 0x669BB400, - 0x669A5A00, 0x66990000, 0x6697A600, - 0x66964C00, 0x6694F200, 0x66939800, - 0x66923E00, 0x6690E400, 0x668F8A00, - 0x668E3000, 0x668CD600, 0x668B7C00, - 0x668A2200, 0x6688C800, 0x66876E00, - 0x66861400, 0x6684BA00, 0x66836000, - 0x66820600, 0x6680AC00, 0x667F5200, - 0x667DF800, 0x667C9E00, 0x667B4400, - 0x6679EA00, 0x66789000, 0x66773600, - 0x6675DC00, 0x66748200, 0x66732800, - 0x6671CE00, 0x66707400, 0x666F1A00, - 0x666DC000, 0x666C6600, 0x666B0C00, - 0x6669B200, 0x66685800, 0x6666FE00, - 0x6665A400, 0x66644A00, 0x6662F000, - 0x66619600, 0x66603C00, 0x665EE200, - 0x665D8800, 0x665C2E00, 0x665AD400, - 0x66597A00, 0x66582000, 0x6656C600, - 0x66556C00, 0x66541200, 0x6652B800, - 0x66515E00, 0x66500400, 0x664EAA00, - 0x664D5000, 0x664BF600, 0x664A9C00, - 0x66494200, 0x6647E800, 0x66468E00, - 0x66453400, 0x6643DA00, 0x66428000, - 0x66412600, 0x663FCC00, 0x663E7200, - 0x663D1800, 0x663BBE00, 0x663A6400, - 0x66390A00, 0x6637B000, 0x66365600, - 0x6634FC00, 0x6633A200, 0x66324800, - 0x6630EE00, 0x662F9400, 0x662E3A00, - 0x662CE000, 0x662B8600, 0x662A2C00, - 0x6628D200, 0x66277800, 0x66261E00, - 0x6624C400, 0x66236A00, 0x66221000, - 0x6620B600, 0x661F5C00, 0x661E0200, - 0x661CA800, 0x661B4E00, 0x6619F400, - 0x66189A00, 0x66174000, 0x6615E600, - 0x66148C00, 0x66133200, 0x6611D800, - 0x66107E00, 0x660F2400, 0x660DCA00, - 0x660C7000, 0x660B1600, 0x6609BC00, - 0x66086200, 0x66070800, 0x6605AE00, - 0x66045400, 0x6602FA00, 0x6601A000, - 0x66004600, 0x65FEEC00, 0x65FD9200, - 0x65FC3800, 0x65FADE00, 0x65F98400, - 0x65F82A00, 0x65F6D000, 0x65F57600, - 0x65F41C00, 0x65F2C200, 0x65F16800, - 0x65F00E00, 0x65EEB400, 0x65ED5A00, - 0x65EC0000, 0x65EAA600, 0x65E94C00, - 0x65E7F200, 0x65E69800, 0x65E53E00, - 0x65E3E400, 0x65E28A00, 0x65E13000, - 0x65DFD600, 0x65DE7C00, 0x65DD2200, - 0x65DBC800, 0x65DA6E00, 0x65D91400, - 0x65D7BA00, 0x65D66000, 0x65D50600, - 0x65D3AC00, 0x65D25200, 0x65D0F800, - 0x65CF9E00, 0x65CE4400, 0x65CCEA00, - 0x65CB9000, 0x65CA3600, 0x65C8DC00, - 0x65C78200, 0x65C62800, 0x65C4CE00, - 0x65C37400, 0x65C21A00, 0x65C0C000, - 0x65BF6600, 0x65BE0C00, 0x65BCB200, - 0x65BB5800, 0x65B9FE00, 0x65B8A400, - 0x65B74A00, 0x65B5F000, 0x65B49600, - 0x65B33C00, 0x65B1E200, 0x65B08800, - 0x65AF2E00, 0x65ADD400, 0x65AC7A00, - 0x65AB2000, 0x65A9C600, 0x65A86C00, - 0x65A71200, 0x65A5B800, 0x65A45E00, - 0x65A30400, 0x65A1AA00, 0x65A05000, - 0x659EF600, 0x659D9C00, 0x659C4200, - 0x659AE800, 0x65998E00, 0x65983400, - 0x6596DA00, 0x65958000, 0x65942600, - 0x6592CC00, 0x65917200, 0x65901800, - 0x658EBE00, 0x658D6400, 0x658C0A00, - 0x658AB000, 0x65895600, 0x6587FC00, - 0x6586A200, 0x65854800, 0x6583EE00, - 0x65829400, 0x65813A00, 0x657FE000, - 0x657E8600, 0x657D2C00, 0x657BD200, - 0x657A7800, 0x65791E00, 0x6577C400, - 0x65766A00, 0x65751000, 0x6573B600, - 0x65725C00, 0x65710200, 0x656FA800, - 0x656E4E00, 0x656CF400, 0x656B9A00, - 0x656A4000, 0x6568E600, 0x65678C00, - 0x65663200, 0x6564D800, 0x65637E00, - 0x65622400, 0x6560CA00, 0x655F7000, - 0x655E1600, 0x655CBC00, 0x655B6200, - 0x655A0800, 0x6558AE00, 0x65575400, - 0x6555FA00, 0x6554A000, 0x65534600, - 0x6551EC00, 0x65509200, 0x654F3800, - 0x654DDE00, 0x654C8400, 0x654B2A00, - 0x6549D000, 0x65487600, 0x65471C00, - 0x6545C200, 0x65446800, 0x65430E00, - 0x6541B400, 0x65405A00, 0x653F0000, - 0x653DA600, 0x653C4C00, 0x653AF200, - 0x65399800, 0x65383E00, 0x6536E400, - 0x65358A00, 0x65343000, 0x6532D600, - 0x65317C00, 0x65302200, 0x652EC800, - 0x652D6E00, 0x652C1400, 0x652ABA00, - 0x65296000, 0x65280600, 0x6526AC00, - 0x65255200, 0x6523F800, 0x65229E00, - 0x65214400, 0x651FEA00, 0x651E9000, - 0x651D3600, 0x651BDC00, 0x651A8200, - 0x65192800, 0x6517CE00, 0x65167400, - 0x65151A00, 0x6513C000, 0x65126600, - 0x65110C00, 0x650FB200, 0x650E5800, - 0x650CFE00, 0x650BA400, 0x650A4A00, - 0x6508F000, 0x65079600, 0x65063C00, - 0x6504E200, 0x65038800, 0x65022E00, - 0x6500D400, 0x64FF7A00, 0x64FE2000, - 0x64FCC600, 0x64FB6C00, 0x64FA1200, - 0x64F8B800, 0x64F75E00, 0x64F60400, - 0x64F4AA00, 0x64F35000, 0x64F1F600, - 0x64F09C00, 0x64EF4200, 0x64EDE800, - 0x64EC8E00, 0x64EB3400, 0x64E9DA00, - 0x64E88000, 0x64E72600, 0x64E5CC00, - 0x64E47200, 0x64E31800, 0x64E1BE00, - 0x64E06400, 0x64DF0A00, 0x64DDB000, - 0x64DC5600, 0x64DAFC00, 0x64D9A200, - 0x64D84800, 0x64D6EE00, 0x64D59400, - 0x64D43A00, 0x64D2E000, 0x64D18600, - 0x64D02C00, 0x64CED200, 0x64CD7800, - 0x64CC1E00, 0x64CAC400, 0x64C96A00, - 0x64C81000, 0x64C6B600, 0x64C55C00, - 0x64C40200, 0x64C2A800, 0x64C14E00, - 0x64BFF400, 0x64BE9A00, 0x64BD4000, - 0x64BBE600, 0x64BA8C00, 0x64B93200, - 0x64B7D800, 0x64B67E00, 0x64B52400, - 0x64B3CA00, 0x64B27000, 0x64B11600, - 0x64AFBC00, 0x64AE6200, 0x64AD0800, - 0x64ABAE00, 0x64AA5400, 0x64A8FA00, - 0x64A7A000, 0x64A64600, 0x64A4EC00, - 0x64A39200, 0x64A23800, 0x64A0DE00, - 0x649F8400, 0x649E2A00, 0x649CD000, - 0x649B7600, 0x649A1C00, 0x6498C200, - 0x64976800, 0x64960E00, 0x6494B400, - 0x64935A00, 0x64920000, 0x6490A600, - 0x648F4C00, 0x648DF200, 0x648C9800, - 0x648B3E00, 0x6489E400, 0x64888A00, - 0x64873000, 0x6485D600, 0x64847C00, - 0x64832200, 0x6481C800, 0x64806E00, - 0x647F1400, 0x647DBA00, 0x647C6000, - 0x647B0600, 0x6479AC00, 0x64785200, - 0x6476F800, 0x64759E00, 0x64744400, - 0x6472EA00, 0x64719000, 0x64703600, - 0x646EDC00, 0x646D8200, 0x646C2800, - 0x646ACE00, 0x64697400, 0x64681A00, - 0x6466C000, 0x64656600, 0x64640C00, - 0x6462B200, 0x64615800, 0x645FFE00, - 0x645EA400, 0x645D4A00, 0x645BF000, - 0x645A9600, 0x64593C00, 0x6457E200, - 0x64568800, 0x64552E00, 0x6453D400, - 0x64527A00, 0x64512000, 0x644FC600, - 0x644E6C00, 0x644D1200, 0x644BB800, - 0x644A5E00, 0x64490400, 0x6447AA00, - 0x64465000, 0x6444F600, 0x64439C00, - 0x64424200, 0x6440E800, 0x643F8E00, - 0x643E3400, 0x643CDA00, 0x643B8000, - 0x643A2600, 0x6438CC00, 0x64377200, - 0x64361800, 0x6434BE00, 0x64336400, - 0x64320A00, 0x6430B000, 0x642F5600, - 0x642DFC00, 0x642CA200, 0x642B4800, - 0x6429EE00, 0x64289400, 0x64273A00, - 0x6425E000, 0x64248600, 0x64232C00, - 0x6421D200, 0x64207800, 0x641F1E00, - 0x641DC400, 0x641C6A00, 0x641B1000, - 0x6419B600, 0x64185C00, 0x64170200, - 0x6415A800, 0x64144E00, 0x6412F400, - 0x64119A00, 0x64104000, 0x640EE600, - 0x640D8C00, 0x640C3200, 0x640AD800, - 0x64097E00, 0x64082400, 0x6406CA00, - 0x64057000, 0x64041600, 0x6402BC00, - 0x64016200, 0x64000800, 0x63FEAE00, - 0x63FD5400, 0x63FBFA00, 0x63FAA000, - 0x63F94600, 0x63F7EC00, 0x63F69200, - 0x63F53800, 0x63F3DE00, 0x63F28400, - 0x63F12A00, 0x63EFD000, 0x63EE7600, - 0x63ED1C00, 0x63EBC200, 0x63EA6800, - 0x63E90E00, 0x63E7B400, 0x63E65A00, - 0x63E50000, 0x63E3A600, 0x63E24C00, - 0x63E0F200, 0x63DF9800, 0x63DE3E00, - 0x63DCE400, 0x63DB8A00, 0x63DA3000, - 0x63D8D600, 0x63D77C00, 0x63D62200, - 0x63D4C800, 0x63D36E00, 0x63D21400, - 0x63D0BA00, 0x63CF6000, 0x63CE0600, - 0x63CCAC00, 0x63CB5200, 0x63C9F800, - 0x63C89E00, 0x63C74400, 0x63C5EA00, - 0x63C49000, 0x63C33600, 0x63C1DC00, - 0x63C08200, 0x63BF2800, 0x63BDCE00, - 0x63BC7400, 0x63BB1A00, 0x63B9C000, - 0x63B86600, 0x63B70C00, 0x63B5B200, - 0x63B45800, 0x63B2FE00, 0x63B1A400, - 0x63B04A00, 0x63AEF000, 0x63AD9600, - 0x63AC3C00, 0x63AAE200, 0x63A98800, - 0x63A82E00, 0x63A6D400, 0x63A57A00, - 0x63A42000, 0x63A2C600, 0x63A16C00, - 0x63A01200, 0x639EB800, 0x639D5E00, - 0x639C0400, 0x639AAA00, 0x63995000, - 0x6397F600, 0x63969C00, 0x63954200, - 0x6393E800, 0x63928E00, 0x63913400, - 0x638FDA00, 0x638E8000, 0x638D2600, - 0x638BCC00, 0x638A7200, 0x63891800, - 0x6387BE00, 0x63866400, 0x63850A00, - 0x6383B000, 0x63825600, 0x6380FC00, - 0x637FA200, 0x637E4800, 0x637CEE00, - 0x637B9400, 0x637A3A00, 0x6378E000, - 0x63778600, 0x63762C00, 0x6374D200, - 0x63737800, 0x63721E00, 0x6370C400, - 0x636F6A00, 0x636E1000, 0x636CB600, - 0x636B5C00, 0x636A0200, 0x6368A800, - 0x63674E00, 0x6365F400, 0x63649A00, - 0x63634000, 0x6361E600, 0x63608C00, - 0x635F3200, 0x635DD800, 0x635C7E00, - 0x635B2400, 0x6359CA00, 0x63587000, - 0x63571600, 0x6355BC00, 0x63546200, - 0x63530800, 0x6351AE00, 0x63505400, - 0x634EFA00, 0x634DA000, 0x634C4600, - 0x634AEC00, 0x63499200, 0x63483800, - 0x6346DE00, 0x63458400, 0x63442A00, - 0x6342D000, 0x63417600, 0x63401C00, - 0x633EC200, 0x633D6800, 0x633C0E00, - 0x633AB400, 0x63395A00, 0x63380000, - 0x6336A600, 0x63354C00, 0x6333F200, - 0x63329800, 0x63313E00, 0x632FE400, - 0x632E8A00, 0x632D3000, 0x632BD600, - 0x632A7C00, 0x63292200, 0x6327C800, - 0x63266E00, 0x63251400, 0x6323BA00, - 0x63226000, 0x63210600, 0x631FAC00, - 0x631E5200, 0x631CF800, 0x631B9E00, - 0x631A4400, 0x6318EA00, 0x63179000, - 0x63163600, 0x6314DC00, 0x63138200, - 0x63122800, 0x6310CE00, 0x630F7400, - 0x630E1A00, 0x630CC000, 0x630B6600, - 0x630A0C00, 0x6308B200, 0x63075800, - 0x6305FE00, 0x6304A400, 0x63034A00, - 0x6301F000, 0x63009600, 0x62FF3C00, - 0x62FDE200, 0x62FC8800, 0x62FB2E00, - 0x62F9D400, 0x62F87A00, 0x62F72000, - 0x62F5C600, 0x62F46C00, 0x62F31200, - 0x62F1B800, 0x62F05E00, 0x62EF0400, - 0x62EDAA00, 0x62EC5000, 0x62EAF600, - 0x62E99C00, 0x62E84200, 0x62E6E800, - 0x62E58E00, 0x62E43400, 0x62E2DA00, - 0x62E18000, 0x62E02600, 0x62DECC00, - 0x62DD7200, 0x62DC1800, 0x62DABE00, - 0x62D96400, 0x62D80A00, 0x62D6B000, - 0x62D55600, 0x62D3FC00, 0x62D2A200, - 0x62D14800, 0x62CFEE00, 0x62CE9400, - 0x62CD3A00, 0x62CBE000, 0x62CA8600, - 0x62C92C00, 0x62C7D200, 0x62C67800, - 0x62C51E00, 0x62C3C400, 0x62C26A00, - 0x62C11000, 0x62BFB600, 0x62BE5C00, - 0x62BD0200, 0x62BBA800, 0x62BA4E00, - 0x62B8F400, 0x62B79A00, 0x62B64000, - 0x62B4E600, 0x62B38C00, 0x62B23200, - 0x62B0D800, 0x62AF7E00, 0x62AE2400, - 0x62ACCA00, 0x62AB7000, 0x62AA1600, - 0x62A8BC00, 0x62A76200, 0x62A60800, - 0x62A4AE00, 0x62A35400, 0x62A1FA00, - 0x62A0A000, 0x629F4600, 0x629DEC00, - 0x629C9200, 0x629B3800, 0x6299DE00, - 0x62988400, 0x62972A00, 0x6295D000, - 0x62947600, 0x62931C00, 0x6291C200, - 0x62906800, 0x628F0E00, 0x628DB400, - 0x628C5A00, 0x628B0000, 0x6289A600, - 0x62884C00, 0x6286F200, 0x62859800, - 0x62843E00, 0x6282E400, 0x62818A00, - 0x62803000, 0x627ED600, 0x627D7C00, - 0x627C2200, 0x627AC800, 0x62796E00, - 0x62781400, 0x6276BA00, 0x62756000, - 0x62740600, 0x6272AC00, 0x62715200, - 0x626FF800, 0x626E9E00, 0x626D4400, - 0x626BEA00, 0x626A9000, 0x62693600, - 0x6267DC00, 0x62668200, 0x62652800, - 0x6263CE00, 0x62627400, 0x62611A00, - 0x625FC000, 0x625E6600, 0x625D0C00, - 0x625BB200, 0x625A5800, 0x6258FE00, - 0x6257A400, 0x62564A00, 0x6254F000, - 0x62539600, 0x62523C00, 0x6250E200, - 0x624F8800, 0x624E2E00, 0x624CD400, - 0x624B7A00, 0x624A2000, 0x6248C600, - 0x62476C00, 0x62461200, 0x6244B800, - 0x62435E00, 0x62420400, 0x6240AA00, - 0x623F5000, 0x623DF600, 0x623C9C00, - 0x623B4200, 0x6239E800, 0x62388E00, - 0x62373400, 0x6235DA00, 0x62348000, - 0x62332600, 0x6231CC00, 0x62307200, - 0x622F1800, 0x622DBE00, 0x622C6400, - 0x622B0A00, 0x6229B000, 0x62285600, - 0x6226FC00, 0x6225A200, 0x62244800, - 0x6222EE00, 0x62219400, 0x62203A00, - 0x621EE000, 0x621D8600, 0x621C2C00, - 0x621AD200, 0x62197800, 0x62181E00, - 0x6216C400, 0x62156A00, 0x62141000, - 0x6212B600, 0x62115C00, 0x62100200, - 0x620EA800, 0x620D4E00, 0x620BF400, - 0x620A9A00, 0x62094000, 0x6207E600, - 0x62068C00, 0x62053200, 0x6203D800, - 0x62027E00, 0x62012400, 0x61FFCA00, - 0x61FE7000, 0x61FD1600, 0x61FBBC00, - 0x61FA6200, 0x61F90800, 0x61F7AE00, - 0x61F65400, 0x61F4FA00, 0x61F3A000, - 0x61F24600, 0x61F0EC00, 0x61EF9200, - 0x61EE3800, 0x61ECDE00, 0x61EB8400, - 0x61EA2A00, 0x61E8D000, 0x61E77600, - 0x61E61C00, 0x61E4C200, 0x61E36800, - 0x61E20E00, 0x61E0B400, 0x61DF5A00, - 0x61DE0000, 0x61DCA600, 0x61DB4C00, - 0x61D9F200, 0x61D89800, 0x61D73E00, - 0x61D5E400, 0x61D48A00, 0x61D33000, - 0x61D1D600, 0x61D07C00, 0x61CF2200, - 0x61CDC800, 0x61CC6E00, 0x61CB1400, - 0x61C9BA00, 0x61C86000, 0x61C70600, - 0x61C5AC00, 0x61C45200, 0x61C2F800, - 0x61C19E00, 0x61C04400, 0x61BEEA00, - 0x61BD9000, 0x61BC3600, 0x61BADC00, - 0x61B98200, 0x61B82800, 0x61B6CE00, - 0x61B57400, 0x61B41A00, 0x61B2C000, - 0x61B16600, 0x61B00C00, 0x61AEB200, - 0x61AD5800, 0x61ABFE00, 0x61AAA400, - 0x61A94A00, 0x61A7F000, 0x61A69600, - 0x61A53C00, 0x61A3E200, 0x61A28800, - 0x61A12E00, 0x619FD400, 0x619E7A00, - 0x619D2000, 0x619BC600, 0x619A6C00, - 0x61991200, 0x6197B800, 0x61965E00, - 0x61950400, 0x6193AA00, 0x61925000, - 0x6190F600, 0x618F9C00, 0x618E4200, - 0x618CE800, 0x618B8E00, 0x618A3400, - 0x6188DA00, 0x61878000, 0x61862600, - 0x6184CC00, 0x61837200, 0x61821800, - 0x6180BE00, 0x617F6400, 0x617E0A00, - 0x617CB000, 0x617B5600, 0x6179FC00, - 0x6178A200, 0x61774800, 0x6175EE00, - 0x61749400, 0x61733A00, 0x6171E000, - 0x61708600, 0x616F2C00, 0x616DD200, - 0x616C7800, 0x616B1E00, 0x6169C400, - 0x61686A00, 0x61671000, 0x6165B600, - 0x61645C00, 0x61630200, 0x6161A800, - 0x61604E00, 0x615EF400, 0x615D9A00, - 0x615C4000, 0x615AE600, 0x61598C00, - 0x61583200, 0x6156D800, 0x61557E00, - 0x61542400, 0x6152CA00, 0x61517000, - 0x61501600, 0x614EBC00, 0x614D6200, - 0x614C0800, 0x614AAE00, 0x61495400, - 0x6147FA00, 0x6146A000, 0x61454600, - 0x6143EC00, 0x61429200, 0x61413800, - 0x613FDE00, 0x613E8400, 0x613D2A00, - 0x613BD000, 0x613A7600, 0x61391C00, - 0x6137C200, 0x61366800, 0x61350E00, - 0x6133B400, 0x61325A00, 0x61310000, - 0x612FA600, 0x612E4C00, 0x612CF200, - 0x612B9800, 0x612A3E00, 0x6128E400, - 0x61278A00, 0x61263000, 0x6124D600, - 0x61237C00, 0x61222200, 0x6120C800, - 0x611F6E00, 0x611E1400, 0x611CBA00, - 0x611B6000, 0x611A0600, 0x6118AC00, - 0x61175200, 0x6115F800, 0x61149E00, - 0x61134400, 0x6111EA00, 0x61109000, - 0x610F3600, 0x610DDC00, 0x610C8200, - 0x610B2800, 0x6109CE00, 0x61087400, - 0x61071A00, 0x6105C000, 0x61046600, - 0x61030C00, 0x6101B200, 0x61005800, - 0x60FEFE00, 0x60FDA400, 0x60FC4A00, - 0x60FAF000, 0x60F99600, 0x60F83C00, - 0x60F6E200, 0x60F58800, 0x60F42E00, - 0x60F2D400, 0x60F17A00, 0x60F02000, - 0x60EEC600, 0x60ED6C00, 0x60EC1200, - 0x60EAB800, 0x60E95E00, 0x60E80400, - 0x60E6AA00, 0x60E55000, 0x60E3F600, - 0x60E29C00, 0x60E14200, 0x60DFE800, - 0x60DE8E00, 0x60DD3400, 0x60DBDA00, - 0x60DA8000, 0x60D92600, 0x60D7CC00, - 0x60D67200, 0x60D51800, 0x60D3BE00, - 0x60D26400, 0x60D10A00, 0x60CFB000, - 0x60CE5600, 0x60CCFC00, 0x60CBA200, - 0x60CA4800, 0x60C8EE00, 0x60C79400, - 0x60C63A00, 0x60C4E000, 0x60C38600, - 0x60C22C00, 0x60C0D200, 0x60BF7800, - 0x60BE1E00, 0x60BCC400, 0x60BB6A00, - 0x60BA1000, 0x60B8B600, 0x60B75C00, - 0x60B60200, 0x60B4A800, 0x60B34E00, - 0x60B1F400, 0x60B09A00, 0x60AF4000, - 0x60ADE600, 0x60AC8C00, 0x60AB3200, - 0x60A9D800, 0x60A87E00, 0x60A72400, - 0x60A5CA00, 0x60A47000, 0x60A31600, - 0x60A1BC00, 0x60A06200, 0x609F0800, - 0x609DAE00, 0x609C5400, 0x609AFA00, - 0x6099A000, 0x60984600, 0x6096EC00, - 0x60959200, 0x60943800, 0x6092DE00, - 0x60918400, 0x60902A00, 0x608ED000, - 0x608D7600, 0x608C1C00, 0x608AC200, - 0x60896800, 0x60880E00, 0x6086B400, - 0x60855A00, 0x60840000, 0x6082A600, - 0x60814C00, 0x607FF200, 0x607E9800, - 0x607D3E00, 0x607BE400, 0x607A8A00, - 0x60793000, 0x6077D600, 0x60767C00, - 0x60752200, 0x6073C800, 0x60726E00, - 0x60711400, 0x606FBA00, 0x606E6000, - 0x606D0600, 0x606BAC00, 0x606A5200, - 0x6068F800, 0x60679E00, 0x60664400, - 0x6064EA00, 0x60639000, 0x60623600, - 0x6060DC00, 0x605F8200, 0x605E2800, - 0x605CCE00, 0x605B7400, 0x605A1A00, - 0x6058C000, 0x60576600, 0x60560C00, - 0x6054B200, 0x60535800, 0x6051FE00, - 0x6050A400, 0x604F4A00, 0x604DF000, - 0x604C9600, 0x604B3C00, 0x6049E200, - 0x60488800, 0x60472E00, 0x6045D400, - 0x60447A00, 0x60432000, 0x6041C600, - 0x60406C00, 0x603F1200, 0x603DB800, - 0x603C5E00, 0x603B0400, 0x6039AA00, - 0x60385000, 0x6036F600, 0x60359C00, - 0x60344200, 0x6032E800, 0x60318E00, - 0x60303400, 0x602EDA00, 0x602D8000, - 0x602C2600, 0x602ACC00, 0x60297200, - 0x60281800, 0x6026BE00, 0x60256400, - 0x60240A00, 0x6022B000, 0x60215600, - 0x601FFC00, 0x601EA200, 0x601D4800, - 0x601BEE00, 0x601A9400, 0x60193A00, - 0x6017E000, 0x60168600, 0x60152C00, - 0x6013D200, 0x60127800, 0x60111E00, - 0x600FC400, 0x600E6A00, 0x600D1000, - 0x600BB600, 0x600A5C00, 0x60090200, - 0x6007A800, 0x60064E00, 0x6004F400, - 0x60039A00, 0x60024000, 0x6000E600, - 0x5FFF8C00, 0x5FFE3200, 0x5FFCD800, - 0x5FFB7E00, 0x5FFA2400, 0x5FF8CA00, - 0x5FF77000, 0x5FF61600, 0x5FF4BC00, - 0x5FF36200, 0x5FF20800, 0x5FF0AE00, - 0x5FEF5400, 0x5FEDFA00, 0x5FECA000, - 0x5FEB4600, 0x5FE9EC00, 0x5FE89200, - 0x5FE73800, 0x5FE5DE00, 0x5FE48400, - 0x5FE32A00, 0x5FE1D000, 0x5FE07600, - 0x5FDF1C00, 0x5FDDC200, 0x5FDC6800, - 0x5FDB0E00, 0x5FD9B400, 0x5FD85A00, - 0x5FD70000, 0x5FD5A600, 0x5FD44C00, - 0x5FD2F200, 0x5FD19800, 0x5FD03E00, - 0x5FCEE400, 0x5FCD8A00, 0x5FCC3000, - 0x5FCAD600, 0x5FC97C00, 0x5FC82200, - 0x5FC6C800, 0x5FC56E00, 0x5FC41400, - 0x5FC2BA00, 0x5FC16000, 0x5FC00600, - 0x5FBEAC00, 0x5FBD5200, 0x5FBBF800, - 0x5FBA9E00, 0x5FB94400, 0x5FB7EA00, - 0x5FB69000, 0x5FB53600, 0x5FB3DC00, - 0x5FB28200, 0x5FB12800, 0x5FAFCE00, - 0x5FAE7400, 0x5FAD1A00, 0x5FABC000, - 0x5FAA6600, 0x5FA90C00, 0x5FA7B200, - 0x5FA65800, 0x5FA4FE00, 0x5FA3A400, - 0x5FA24A00, 0x5FA0F000, 0x5F9F9600, - 0x5F9E3C00, 0x5F9CE200, 0x5F9B8800, - 0x5F9A2E00, 0x5F98D400, 0x5F977A00, - 0x5F962000, 0x5F94C600, 0x5F936C00, - 0x5F921200, 0x5F90B800, 0x5F8F5E00, - 0x5F8E0400, 0x5F8CAA00, 0x5F8B5000, - 0x5F89F600, 0x5F889C00, 0x5F874200, - 0x5F85E800, 0x5F848E00, 0x5F833400, - 0x5F81DA00, 0x5F808000, 0x5F7F2600, - 0x5F7DCC00, 0x5F7C7200, 0x5F7B1800, - 0x5F79BE00, 0x5F786400, 0x5F770A00, - 0x5F75B000, 0x5F745600, 0x5F72FC00, - 0x5F71A200, 0x5F704800, 0x5F6EEE00, - 0x5F6D9400, 0x5F6C3A00, 0x5F6AE000, - 0x5F698600, 0x5F682C00, 0x5F66D200, - 0x5F657800, 0x5F641E00, 0x5F62C400, - 0x5F616A00, 0x5F601000, 0x5F5EB600, - 0x5F5D5C00, 0x5F5C0200, 0x5F5AA800, - 0x5F594E00, 0x5F57F400, 0x5F569A00, - 0x5F554000, 0x5F53E600, 0x5F528C00, - 0x5F513200, 0x5F4FD800, 0x5F4E7E00, - 0x5F4D2400, 0x5F4BCA00, 0x5F4A7000, - 0x5F491600, 0x5F47BC00, 0x5F466200, - 0x5F450800, 0x5F43AE00, 0x5F425400, - 0x5F40FA00, 0x5F3FA000, 0x5F3E4600, - 0x5F3CEC00, 0x5F3B9200, 0x5F3A3800, - 0x5F38DE00, 0x5F378400, 0x5F362A00, - 0x5F34D000, 0x5F337600, 0x5F321C00, - 0x5F30C200, 0x5F2F6800, 0x5F2E0E00, - 0x5F2CB400, 0x5F2B5A00, 0x5F2E0000, - 0x5F2CC340, 0x5F2B8680, 0x5F2A49C0, - 0x5F290D00, 0x5F27D040, 0x5F269380, - 0x5F2556C0, 0x5F241A00, 0x5F22DD40, - 0x5F21A080, 0x5F2063C0, 0x5F1F2700, - 0x5F1DEA40, 0x5F1CAD80, 0x5F1B70C0, - 0x5F1A3400, 0x5F18F740, 0x5F17BA80, - 0x5F167DC0, 0x5F154100, 0x5F140440, - 0x5F12C780, 0x5F118AC0, 0x5F104E00, - 0x5F0F1140, 0x5F0DD480, 0x5F0C97C0, - 0x5F0B5B00, 0x5F0A1E40, 0x5F08E180, - 0x5F07A4C0, 0x5F066800, 0x5F052B40, - 0x5F03EE80, 0x5F02B1C0, 0x5F017500, - 0x5F003840, 0x5EFEFB80, 0x5EFDBEC0, - 0x5EFC8200, 0x5EFB4540, 0x5EFA0880, - 0x5EF8CBC0, 0x5EF78F00, 0x5EF65240, - 0x5EF51580, 0x5EF3D8C0, 0x5EF29C00, - 0x5EF15F40, 0x5EF02280, 0x5EEEE5C0, - 0x5EEDA900, 0x5EEC6C40, 0x5EEB2F80, - 0x5EE9F2C0, 0x5EE8B600, 0x5EE77940, - 0x5EE63C80, 0x5EE4FFC0, 0x5EE3C300, - 0x5EE28640, 0x5EE14980, 0x5EE00CC0, - 0x5EDED000, 0x5EDD9340, 0x5EDC5680, - 0x5EDB19C0, 0x5ED9DD00, 0x5ED8A040, - 0x5ED76380, 0x5ED626C0, 0x5ED4EA00, - 0x5ED3AD40, 0x5ED27080, 0x5ED133C0, - 0x5ECFF700, 0x5ECEBA40, 0x5ECD7D80, - 0x5ECC40C0, 0x5ECB0400, 0x5EC9C740, - 0x5EC88A80, 0x5EC74DC0, 0x5EC61100, - 0x5EC4D440, 0x5EC39780, 0x5EC25AC0, - 0x5EC11E00, 0x5EBFE140, 0x5EBEA480, - 0x5EBD67C0, 0x5EBC2B00, 0x5EBAEE40, - 0x5EB9B180, 0x5EB874C0, 0x5EB73800, - 0x5EB5FB40, 0x5EB4BE80, 0x5EB381C0, - 0x5EB24500, 0x5EB10840, 0x5EAFCB80, - 0x5EAE8EC0, 0x5EAD5200, 0x5EAC1540, - 0x5EAAD880, 0x5EA99BC0, 0x5EA85F00, - 0x5EA72240, 0x5EA5E580, 0x5EA4A8C0, - 0x5EA36C00, 0x5EA22F40, 0x5EA0F280, - 0x5E9FB5C0, 0x5E9E7900, 0x5E9D3C40, - 0x5E9BFF80, 0x5E9AC2C0, 0x5E998600, - 0x5E984940, 0x5E970C80, 0x5E95CFC0, - 0x5E949300, 0x5E935640, 0x5E921980, - 0x5E90DCC0, 0x5E8FA000, 0x5E8E6340, - 0x5E8D2680, 0x5E8BE9C0, 0x5E8AAD00, - 0x5E897040, 0x5E883380, 0x5E86F6C0, - 0x5E85BA00, 0x5E847D40, 0x5E834080, - 0x5E8203C0, 0x5E80C700, 0x5E7F8A40, - 0x5E7E4D80, 0x5E7D10C0, 0x5E7BD400, - 0x5E7A9740, 0x5E795A80, 0x5E781DC0, - 0x5E76E100, 0x5E75A440, 0x5E746780, - 0x5E732AC0, 0x5E71EE00, 0x5E70B140, - 0x5E6F7480, 0x5E6E37C0, 0x5E6CFB00, - 0x5E6BBE40, 0x5E6A8180, 0x5E6944C0, - 0x5E680800, 0x5E66CB40, 0x5E658E80, - 0x5E6451C0, 0x5E631500, 0x5E61D840, - 0x5E609B80, 0x5E5F5EC0, 0x5E5E2200, - 0x5E5CE540, 0x5E5BA880, 0x5E5A6BC0, - 0x5E592F00, 0x5E57F240, 0x5E56B580, - 0x5E5578C0, 0x5E543C00, 0x5E52FF40, - 0x5E51C280, 0x5E5085C0, 0x5E4F4900, - 0x5E4E0C40, 0x5E4CCF80, 0x5E4B92C0, - 0x5E4A5600, 0x5E491940, 0x5E47DC80, - 0x5E469FC0, 0x5E456300, 0x5E442640, - 0x5E42E980, 0x5E41ACC0, 0x5E407000, - 0x5E3F3340, 0x5E3DF680, 0x5E3CB9C0, - 0x5E3B7D00, 0x5E3A4040, 0x5E390380, - 0x5E37C6C0, 0x5E368A00, 0x5E354D40, - 0x5E341080, 0x5E32D3C0, 0x5E319700, - 0x5E305A40, 0x5E2F1D80, 0x5E2DE0C0, - 0x5E2CA400, 0x5E2B6740, 0x5E2A2A80, - 0x5E28EDC0, 0x5E27B100, 0x5E267440, - 0x5E253780, 0x5E23FAC0, 0x5E22BE00, - 0x5E218140, 0x5E204480, 0x5E1F07C0, - 0x5E1DCB00, 0x5E1C8E40, 0x5E1B5180, - 0x5E1A14C0, 0x5E18D800, 0x5E179B40, - 0x5E165E80, 0x5E1521C0, 0x5E13E500, - 0x5E12A840, 0x5E116B80, 0x5E102EC0, - 0x5E0EF200, 0x5E0DB540, 0x5E0C7880, - 0x5E0B3BC0, 0x5E09FF00, 0x5E08C240, - 0x5E078580, 0x5E0648C0, 0x5E050C00, - 0x5E03CF40, 0x5E029280, 0x5E0155C0, - 0x5E001900, 0x5DFEDC40, 0x5DFD9F80, - 0x5DFC62C0, 0x5DFB2600, 0x5DF9E940, - 0x5DF8AC80, 0x5DF76FC0, 0x5DF63300, - 0x5DF4F640, 0x5DF3B980, 0x5DF27CC0, - 0x5DF14000, 0x5DF00340, 0x5DEEC680, - 0x5DED89C0, 0x5DEC4D00, 0x5DEB1040, - 0x5DE9D380, 0x5DE896C0, 0x5DE75A00, - 0x5DE61D40, 0x5DE4E080, 0x5DE3A3C0, - 0x5DE26700, 0x5DE12A40, 0x5DDFED80, - 0x5DDEB0C0, 0x5DDD7400, 0x5DDC3740, - 0x5DDAFA80, 0x5DD9BDC0, 0x5DD88100, - 0x5DD74440, 0x5DD60780, 0x5DD4CAC0, - 0x5DD38E00, 0x5DD25140, 0x5DD11480, - 0x5DCFD7C0, 0x5DCE9B00, 0x5DCD5E40, - 0x5DCC2180, 0x5DCAE4C0, 0x5DC9A800, - 0x5DC86B40, 0x5DC72E80, 0x5DC5F1C0, - 0x5DC4B500, 0x5DC37840, 0x5DC23B80, - 0x5DC0FEC0, 0x5DBFC200, 0x5DBE8540, - 0x5DBD4880, 0x5DBC0BC0, 0x5DBACF00, - 0x5DB99240, 0x5DB85580, 0x5DB718C0, - 0x5DB5DC00, 0x5DB49F40, 0x5DB36280, - 0x5DB225C0, 0x5DB0E900, 0x5DAFAC40, - 0x5DAE6F80, 0x5DAD32C0, 0x5DABF600, - 0x5DAAB940, 0x5DA97C80, 0x5DA83FC0, - 0x5DA70300, 0x5DA5C640, 0x5DA48980, - 0x5DA34CC0, 0x5DA21000, 0x5DA0D340, - 0x5D9F9680, 0x5D9E59C0, 0x5D9D1D00, - 0x5D9BE040, 0x5D9AA380, 0x5D9966C0, - 0x5D982A00, 0x5D96ED40, 0x5D95B080, - 0x5D9473C0, 0x5D933700, 0x5D91FA40, - 0x5D90BD80, 0x5D8F80C0, 0x5D8E4400, - 0x5D8D0740, 0x5D8BCA80, 0x5D8A8DC0, - 0x5D895100, 0x5D881440, 0x5D86D780, - 0x5D859AC0, 0x5D845E00, 0x5D832140, - 0x5D81E480, 0x5D80A7C0, 0x5D7F6B00, - 0x5D7E2E40, 0x5D7CF180, 0x5D7BB4C0, - 0x5D7A7800, 0x5D793B40, 0x5D77FE80, - 0x5D76C1C0, 0x5D758500, 0x5D744840, - 0x5D730B80, 0x5D71CEC0, 0x5D709200, - 0x5D6F5540, 0x5D6E1880, 0x5D6CDBC0, - 0x5D6B9F00, 0x5D6A6240, 0x5D692580, - 0x5D67E8C0, 0x5D66AC00, 0x5D656F40, - 0x5D643280, 0x5D62F5C0, 0x5D61B900, - 0x5D607C40, 0x5D5F3F80, 0x5D5E02C0, - 0x5D5CC600, 0x5D5B8940, 0x5D5A4C80, - 0x5D590FC0, 0x5D57D300, 0x5D569640, - 0x5D555980, 0x5D541CC0, 0x5D52E000, - 0x5D51A340, 0x5D506680, 0x5D4F29C0, - 0x5D4DED00, 0x5D4CB040, 0x5D4B7380, - 0x5D4A36C0, 0x5D48FA00, 0x5D47BD40, - 0x5D468080, 0x5D4543C0, 0x5D440700, - 0x5D42CA40, 0x5D418D80, 0x5D4050C0, - 0x5D3F1400, 0x5D3DD740, 0x5D3C9A80, - 0x5D3B5DC0, 0x5D3A2100, 0x5D38E440, - 0x5D37A780, 0x5D366AC0, 0x5D352E00, - 0x5D33F140, 0x5D32B480, 0x5D3177C0, - 0x5D303B00, 0x5D2EFE40, 0x5D2DC180, - 0x5D2C84C0, 0x5D2B4800, 0x5D2A0B40, - 0x5D28CE80, 0x5D2791C0, 0x5D265500, - 0x5D251840, 0x5D23DB80, 0x5D229EC0, - 0x5D216200, 0x5D202540, 0x5D1EE880, - 0x5D1DABC0, 0x5D1C6F00, 0x5D1B3240, - 0x5D19F580, 0x5D18B8C0, 0x5D177C00, - 0x5D163F40, 0x5D150280, 0x5D13C5C0, - 0x5D128900, 0x5D114C40, 0x5D100F80, - 0x5D0ED2C0, 0x5D0D9600, 0x5D0C5940, - 0x5D0B1C80, 0x5D09DFC0, 0x5D08A300, - 0x5D076640, 0x5D062980, 0x5D04ECC0, - 0x5D03B000, 0x5D027340, 0x5D013680, - 0x5CFFF9C0, 0x5CFEBD00, 0x5CFD8040, - 0x5CFC4380, 0x5CFB06C0, 0x5CF9CA00, - 0x5CF88D40, 0x5CF75080, 0x5CF613C0, - 0x5CF4D700, 0x5CF39A40, 0x5CF25D80, - 0x5CF120C0, 0x5CEFE400, 0x5CEEA740, - 0x5CED6A80, 0x5CEC2DC0, 0x5CEAF100, - 0x5CE9B440, 0x5CE87780, 0x5CE73AC0, - 0x5CE5FE00, 0x5CE4C140, 0x5CE38480, - 0x5CE247C0, 0x5CE10B00, 0x5CDFCE40, - 0x5CDE9180, 0x5CDD54C0, 0x5CDC1800, - 0x5CDADB40, 0x5CD99E80, 0x5CD861C0, - 0x5CD72500, 0x5CD5E840, 0x5CD4AB80, - 0x5CD36EC0, 0x5CD23200, 0x5CD0F540, - 0x5CCFB880, 0x5CCE7BC0, 0x5CCD3F00, - 0x5CCC0240, 0x5CCAC580, 0x5CC988C0, - 0x5CC84C00, 0x5CC70F40, 0x5CC5D280, - 0x5CC495C0, 0x5CC35900, 0x5CC21C40, - 0x5CC0DF80, 0x5CBFA2C0, 0x5CBE6600, - 0x5CBD2940, 0x5CBBEC80, 0x5CBAAFC0, - 0x5CB97300, 0x5CB83640, 0x5CB6F980, - 0x5CB5BCC0, 0x5CB48000, 0x5CB34340, - 0x5CB20680, 0x5CB0C9C0, 0x5CAF8D00, - 0x5CAE5040, 0x5CAD1380, 0x5CABD6C0, - 0x5CAA9A00, 0x5CA95D40, 0x5CA82080, - 0x5CA6E3C0, 0x5CA5A700, 0x5CA46A40, - 0x5CA32D80, 0x5CA1F0C0, 0x5CA0B400, - 0x5C9F7740, 0x5C9E3A80, 0x5C9CFDC0, - 0x5C9BC100, 0x5C9A8440, 0x5C994780, - 0x5C980AC0, 0x5C96CE00, 0x5C959140, - 0x5C945480, 0x5C9317C0, 0x5C91DB00, - 0x5C909E40, 0x5C8F6180, 0x5C8E24C0, - 0x5C8CE800, 0x5C8BAB40, 0x5C8A6E80, - 0x5C8931C0, 0x5C87F500, 0x5C86B840, - 0x5C857B80, 0x5C843EC0, 0x5C830200, - 0x5C81C540, 0x5C808880, 0x5C7F4BC0, - 0x5C7E0F00, 0x5C7CD240, 0x5C7B9580, - 0x5C7A58C0, 0x5C791C00, 0x5C77DF40, - 0x5C76A280, 0x5C7565C0, 0x5C742900, - 0x5C72EC40, 0x5C71AF80, 0x5C7072C0, - 0x5C6F3600, 0x5C6DF940, 0x5C6CBC80, - 0x5C6B7FC0, 0x5C6A4300, 0x5C690640, - 0x5C67C980, 0x5C668CC0, 0x5C655000, - 0x5C641340, 0x5C62D680, 0x5C6199C0, - 0x5C605D00, 0x5C5F2040, 0x5C5DE380, - 0x5C5CA6C0, 0x5C5B6A00, 0x5C5A2D40, - 0x5C58F080, 0x5C57B3C0, 0x5C567700, - 0x5C553A40, 0x5C53FD80, 0x5C52C0C0, - 0x5C518400, 0x5C504740, 0x5C4F0A80, - 0x5C4DCDC0, 0x5C4C9100, 0x5C4B5440, - 0x5C4A1780, 0x5C48DAC0, 0x5C479E00, - 0x5C466140, 0x5C452480, 0x5C43E7C0, - 0x5C42AB00, 0x5C416E40, 0x5C403180, - 0x5C3EF4C0, 0x5C3DB800, 0x5C3C7B40, - 0x5C3B3E80, 0x5C3A01C0, 0x5C38C500, - 0x5C378840, 0x5C364B80, 0x5C350EC0, - 0x5C33D200, 0x5C329540, 0x5C315880, - 0x5C301BC0, 0x5C2EDF00, 0x5C2DA240, - 0x5C2C6580, 0x5C2B28C0, 0x5C29EC00, - 0x5C28AF40, 0x5C277280, 0x5C2635C0, - 0x5C24F900, 0x5C23BC40, 0x5C227F80, - 0x5C2142C0, 0x5C200600, 0x5C1EC940, - 0x5C1D8C80, 0x5C1C4FC0, 0x5C1B1300, - 0x5C19D640, 0x5C189980, 0x5C175CC0, - 0x5C162000, 0x5C14E340, 0x5C13A680, - 0x5C1269C0, 0x5C112D00, 0x5C0FF040, - 0x5C0EB380, 0x5C0D76C0, 0x5C0C3A00, - 0x5C0AFD40, 0x5C09C080, 0x5C0883C0, - 0x5C074700, 0x5C060A40, 0x5C04CD80, - 0x5C0390C0, 0x5C025400, 0x5C011740, - 0x5BFFDA80, 0x5BFE9DC0, 0x5BFD6100, - 0x5BFC2440, 0x5BFAE780, 0x5BF9AAC0, - 0x5BF86E00, 0x5BF73140, 0x5BF5F480, - 0x5BF4B7C0, 0x5BF37B00, 0x5BF23E40, - 0x5BF10180, 0x5BEFC4C0, 0x5BEE8800, - 0x5BED4B40, 0x5BEC0E80, 0x5BEAD1C0, - 0x5BE99500, 0x5BE85840, 0x5BE71B80, - 0x5BE5DEC0, 0x5BE4A200, 0x5BE36540, - 0x5BE22880, 0x5BE0EBC0, 0x5BDFAF00, - 0x5BDE7240, 0x5BDD3580, 0x5BDBF8C0, - 0x5BDABC00, 0x5BD97F40, 0x5BD84280, - 0x5BD705C0, 0x5BD5C900, 0x5BD48C40, - 0x5BD34F80, 0x5BD212C0, 0x5BD0D600, - 0x5BCF9940, 0x5BCE5C80, 0x5BCD1FC0, - 0x5BCBE300, 0x5BCAA640, 0x5BC96980, - 0x5BC82CC0, 0x5BC6F000, 0x5BC5B340, - 0x5BC47680, 0x5BC339C0, 0x5BC1FD00, - 0x5BC0C040, 0x5BBF8380, 0x5BBE46C0, - 0x5BBD0A00, 0x5BBBCD40, 0x5BBA9080, - 0x5BB953C0, 0x5BB81700, 0x5BB6DA40, - 0x5BB59D80, 0x5BB460C0, 0x5BB32400, - 0x5BB1E740, 0x5BB0AA80, 0x5BAF6DC0, - 0x5BAE3100, 0x5BACF440, 0x5BABB780, - 0x5BAA7AC0, 0x5BA93E00, 0x5BA80140, - 0x5BA6C480, 0x5BA587C0, 0x5BA44B00, - 0x5BA30E40, 0x5BA1D180, 0x5BA094C0, - 0x5B9F5800, 0x5B9E1B40, 0x5B9CDE80, - 0x5B9BA1C0, 0x5B9A6500, 0x5B992840, - 0x5B97EB80, 0x5B96AEC0, 0x5B957200, - 0x5B943540, 0x5B92F880, 0x5B91BBC0, - 0x5B907F00, 0x5B8F4240, 0x5B8E0580, - 0x5B8CC8C0, 0x5B8B8C00, 0x5B8A4F40, - 0x5B891280, 0x5B87D5C0, 0x5B869900, - 0x5B855C40, 0x5B841F80, 0x5B82E2C0, - 0x5B81A600, 0x5B806940, 0x5B7F2C80, - 0x5B7DEFC0, 0x5B7CB300, 0x5B7B7640, - 0x5B7A3980, 0x5B78FCC0, 0x5B77C000, - 0x5B768340, 0x5B754680, 0x5B7409C0, - 0x5B72CD00, 0x5B719040, 0x5B705380, - 0x5B6F16C0, 0x5B6DDA00, 0x5B6C9D40, - 0x5B6B6080, 0x5B6A23C0, 0x5B68E700, - 0x5B67AA40, 0x5B666D80, 0x5B6530C0, - 0x5B63F400, 0x5B62B740, 0x5B617A80, - 0x5B603DC0, 0x5B5F0100, 0x5B5DC440, - 0x5B5C8780, 0x5B5B4AC0, 0x5B5A0E00, - 0x5B58D140, 0x5B579480, 0x5B5657C0, - 0x5B551B00, 0x5B53DE40, 0x5B52A180, - 0x5B5164C0, 0x5B502800, 0x5B4EEB40, - 0x5B4DAE80, 0x5B4C71C0, 0x5B4B3500, - 0x5B49F840, 0x5B48BB80, 0x5B477EC0, - 0x5B464200, 0x5B450540, 0x5B43C880, - 0x5B428BC0, 0x5B414F00, 0x5B401240, - 0x5B3ED580, 0x5B3D98C0, 0x5B3C5C00, - 0x5B3B1F40, 0x5B39E280, 0x5B38A5C0, - 0x5B376900, 0x5B362C40, 0x5B34EF80, - 0x5B33B2C0, 0x5B327600, 0x5B313940, - 0x5B2FFC80, 0x5B2EBFC0, 0x5B2D8300, - 0x5B2C4640, 0x5B2B0980, 0x5B29CCC0, - 0x5B289000, 0x5B275340, 0x5B261680, - 0x5B24D9C0, 0x5B239D00, 0x5B226040, - 0x5B212380, 0x5B1FE6C0, 0x5B1EAA00, - 0x5B1D6D40, 0x5B1C3080, 0x5B1AF3C0, - 0x5B19B700, 0x5B187A40, 0x5B173D80, - 0x5B1600C0, 0x5B14C400, 0x5B138740, - 0x5B124A80, 0x5B110DC0, 0x5B0FD100, - 0x5B0E9440, 0x5B0D5780, 0x5B0C1AC0, - 0x5B0ADE00, 0x5B09A140, 0x5B086480, - 0x5B0727C0, 0x5B05EB00, 0x5B04AE40, - 0x5B037180, 0x5B0234C0, 0x5B00F800, - 0x5AFFBB40, 0x5AFE7E80, 0x5AFD41C0, - 0x5AFC0500, 0x5AFAC840, 0x5AF98B80, - 0x5AF84EC0, 0x5AF71200, 0x5AF5D540, - 0x5AF49880, 0x5AF35BC0, 0x5AF21F00, - 0x5AF0E240, 0x5AEFA580, 0x5AEE68C0, - 0x5AED2C00, 0x5AEBEF40, 0x5AEAB280, - 0x5AE975C0, 0x5AE83900, 0x5AE6FC40, - 0x5AE5BF80, 0x5AE482C0, 0x5AE34600, - 0x5AE20940, 0x5AE0CC80, 0x5ADF8FC0, - 0x5ADE5300, 0x5ADD1640, 0x5ADBD980, - 0x5ADA9CC0, 0x5AD96000, 0x5AD82340, - 0x5AD6E680, 0x5AD5A9C0, 0x5AD46D00, - 0x5AD33040, 0x5AD1F380, 0x5AD0B6C0, - 0x5ACF7A00, 0x5ACE3D40, 0x5ACD0080, - 0x5ACBC3C0, 0x5ACA8700, 0x5AC94A40, - 0x5AC80D80, 0x5AC6D0C0, 0x5AC59400, - 0x5AC45740, 0x5AC31A80, 0x5AC1DDC0, - 0x5AC0A100, 0x5ABF6440, 0x5ABE2780, - 0x5ABCEAC0, 0x5ABBAE00, 0x5ABA7140, - 0x5AB93480, 0x5AB7F7C0, 0x5AB6BB00, - 0x5AB57E40, 0x5AB44180, 0x5AB304C0, - 0x5AB1C800, 0x5AB08B40, 0x5AAF4E80, - 0x5AAE11C0, 0x5AACD500, 0x5AAB9840, - 0x5AAA5B80, 0x5AA91EC0, 0x5AA7E200, - 0x5AA6A540, 0x5AA56880, 0x5AA42BC0, - 0x5AA2EF00, 0x5AA1B240, 0x5AA07580, - 0x5A9F38C0, 0x5A9DFC00, 0x5A9CBF40, - 0x5A9B8280, 0x5A9A45C0, 0x5A990900, - 0x5A97CC40, 0x5A968F80, 0x5A9552C0, - 0x5A941600, 0x5A92D940, 0x5A919C80, - 0x5A905FC0, 0x5A8F2300, 0x5A8DE640, - 0x5A8CA980, 0x5A8B6CC0, 0x5A8A3000, - 0x5A88F340, 0x5A87B680, 0x5A8679C0, - 0x5A853D00, 0x5A840040, 0x5A82C380, - 0x5A8186C0, 0x5A804A00, 0x5A7F0D40, - 0x5A7DD080, 0x5A7C93C0, 0x5A7B5700, - 0x5A7A1A40, 0x5A78DD80, 0x5A77A0C0, - 0x5A766400, 0x5A752740, 0x5A73EA80, - 0x5A72ADC0, 0x5A717100, 0x5A703440, - 0x5A6EF780, 0x5A6DBAC0, 0x5A6C7E00, - 0x5A6B4140, 0x5A6A0480, 0x5A68C7C0, - 0x5A678B00, 0x5A664E40, 0x5A651180, - 0x5A63D4C0, 0x5A629800, 0x5A615B40, - 0x5A601E80, 0x5A5EE1C0, 0x5A5DA500, - 0x5A5C6840, 0x5A5B2B80, 0x5A59EEC0, - 0x5A58B200, 0x5A577540, 0x5A563880, - 0x5A54FBC0, 0x5A53BF00, 0x5A528240, - 0x5A514580, 0x5A5008C0, 0x5A4ECC00, - 0x5A4D8F40, 0x5A4C5280, 0x5A4B15C0, - 0x5A49D900, 0x5A489C40, 0x5A475F80, - 0x5A4622C0, 0x5A44E600, 0x5A43A940, - 0x5A426C80, 0x5A412FC0, 0x5A3FF300, - 0x5A3EB640, 0x5A3D7980, 0x5A3C3CC0, - 0x5A3B0000, 0x5A39C340, 0x5A388680, - 0x5A3749C0, 0x5A360D00, 0x5A34D040, - 0x5A339380, 0x5A3256C0, 0x5A311A00, - 0x5A2FDD40, 0x5A2EA080, 0x5A2D63C0, - 0x5A2C2700, 0x5A2AEA40, 0x5A29AD80, - 0x5A2870C0, 0x5A273400, 0x5A25F740, - 0x5A24BA80, 0x5A237DC0, 0x5A224100, - 0x5A210440, 0x5A1FC780, 0x5A1E8AC0, - 0x5A1D4E00, 0x5A1C1140, 0x5A1AD480, - 0x5A1997C0, 0x5A185B00, 0x5A171E40, - 0x5A15E180, 0x5A14A4C0, 0x5A136800, - 0x5A122B40, 0x5A10EE80, 0x5A0FB1C0, - 0x5A0E7500, 0x5A0D3840, 0x5A0BFB80, - 0x5A0ABEC0, 0x5A098200, 0x5A084540, - 0x5A070880, 0x5A05CBC0, 0x5A048F00, - 0x5A035240, 0x5A021580, 0x5A00D8C0, - 0x59FF9C00, 0x59FE5F40, 0x59FD2280, - 0x59FBE5C0, 0x59FAA900, 0x59F96C40, - 0x59F82F80, 0x59F6F2C0, 0x59F5B600, - 0x59F47940, 0x59F33C80, 0x59F1FFC0, - 0x59F0C300, 0x59EF8640, 0x59EE4980, - 0x59ED0CC0, 0x59EBD000, 0x59EA9340, - 0x59E95680, 0x59E819C0, 0x59E6DD00, - 0x59E5A040, 0x59E46380, 0x59E326C0, - 0x59E1EA00, 0x59E0AD40, 0x59DF7080, - 0x59DE33C0, 0x59DCF700, 0x59DBBA40, - 0x59DA7D80, 0x59D940C0, 0x59D80400, - 0x59D6C740, 0x59D58A80, 0x59D44DC0, - 0x59D31100, 0x59D1D440, 0x59D09780, - 0x59CF5AC0, 0x59CE1E00, 0x59CCE140, - 0x59CBA480, 0x59CA67C0, 0x59C92B00, - 0x59C7EE40, 0x59C6B180, 0x59C574C0, - 0x59C43800, 0x59C2FB40, 0x59C1BE80, - 0x59C081C0, 0x59BF4500, 0x59BE0840, - 0x59BCCB80, 0x59BB8EC0, 0x59BA5200, - 0x59B91540, 0x59B7D880, 0x59B69BC0, - 0x59B55F00, 0x59B42240, 0x59B2E580, - 0x59B1A8C0, 0x59B06C00, 0x59AF2F40, - 0x59ADF280, 0x59ACB5C0, 0x59AB7900, - 0x59AA3C40, 0x59A8FF80, 0x59A7C2C0, - 0x59A68600, 0x59A54940, 0x59A40C80, - 0x59A2CFC0, 0x59A19300, 0x59A05640, - 0x599F1980, 0x599DDCC0, 0x599CA000, - 0x599B6340, 0x599A2680, 0x5998E9C0, - 0x5997AD00, 0x59967040, 0x59953380, - 0x5993F6C0, 0x5992BA00, 0x59917D40, - 0x59904080, 0x598F03C0, 0x598DC700, - 0x598C8A40, 0x598B4D80, 0x598A10C0, - 0x5988D400, 0x59879740, 0x59865A80, - 0x59851DC0, 0x5983E100, 0x5982A440, - 0x59816780, 0x59802AC0, 0x597EEE00, - 0x597DB140, 0x597C7480, 0x597B37C0, - 0x5979FB00, 0x5978BE40, 0x59778180, - 0x597644C0, 0x59750800, 0x5973CB40, - 0x59728E80, 0x597151C0, 0x59701500, - 0x596ED840, 0x596D9B80, 0x596C5EC0, - 0x596B2200, 0x5969E540, 0x5968A880, - 0x59676BC0, 0x59662F00, 0x5964F240, - 0x5963B580, 0x596278C0, 0x59613C00, - 0x595FFF40, 0x595EC280, 0x595D85C0, - 0x595C4900, 0x595B0C40, 0x5959CF80, - 0x595892C0, 0x59575600, 0x59561940, - 0x5954DC80, 0x59539FC0, 0x59526300, - 0x59512640, 0x594FE980, 0x594EACC0, - 0x594D7000, 0x594C3340, 0x594AF680, - 0x5949B9C0, 0x59487D00, 0x59474040, - 0x59460380, 0x5944C6C0, 0x59438A00, - 0x59424D40, 0x59411080, 0x593FD3C0, - 0x593E9700, 0x593D5A40, 0x593C1D80, - 0x593AE0C0, 0x5939A400, 0x59386740, - 0x59372A80, 0x5935EDC0, 0x5934B100, - 0x59337440, 0x59323780, 0x5930FAC0, - 0x592FBE00, 0x592E8140, 0x592D4480, - 0x592C07C0, 0x592ACB00, 0x59298E40, - 0x59285180, 0x592714C0, 0x5925D800, - 0x59249B40, 0x59235E80, 0x592221C0, - 0x5920E500, 0x591FA840, 0x591E6B80, - 0x591D2EC0, 0x591BF200, 0x591AB540, - 0x59197880, 0x59183BC0, 0x5916FF00, - 0x5915C240, 0x59148580, 0x591348C0, - 0x59120C00, 0x5910CF40, 0x590F9280, - 0x590E55C0, 0x590D1900, 0x590BDC40, - 0x590A9F80, 0x590962C0, 0x59082600, - 0x5906E940, 0x5905AC80, 0x59046FC0, - 0x59033300, 0x5901F640, 0x5900B980, - 0x58FF7CC0, 0x58FE4000, 0x58FD0340, - 0x58FBC680, 0x58FA89C0, 0x58F94D00, - 0x58F81040, 0x58F6D380, 0x58F596C0, - 0x58F45A00, 0x58F31D40, 0x58F1E080, - 0x58F0A3C0, 0x58EF6700, 0x58EE2A40, - 0x58ECED80, 0x58EBB0C0, 0x58EA7400, - 0x58E93740, 0x58E7FA80, 0x58E6BDC0, - 0x58E58100, 0x58E44440, 0x58E30780, - 0x58E1CAC0, 0x58E08E00, 0x58DF5140, - 0x58DE1480, 0x58DCD7C0, 0x58DB9B00, - 0x58DA5E40, 0x58D92180, 0x58D7E4C0, - 0x58D6A800, 0x58D56B40, 0x58D42E80, - 0x58D2F1C0, 0x58D1B500, 0x58D07840, - 0x58CF3B80, 0x58CDFEC0, 0x58CCC200, - 0x58CB8540, 0x58CA4880, 0x58C90BC0, - 0x58C7CF00, 0x58C69240, 0x58C55580, - 0x58C418C0, 0x58C2DC00, 0x58C19F40, - 0x58C06280, 0x58BF25C0, 0x58BDE900, - 0x58BCAC40, 0x58BB6F80, 0x58BA32C0, - 0x58B8F600, 0x58B7B940, 0x58B67C80, - 0x58B53FC0, 0x58B40300, 0x58B2C640, - 0x58B18980, 0x58B04CC0, 0x58AF1000, - 0x58ADD340, 0x58AC9680, 0x58AB59C0, - 0x58AA1D00, 0x58A8E040, 0x58A7A380, - 0x58A666C0, 0x58A52A00, 0x58A3ED40, - 0x58A2B080, 0x58A173C0, 0x58A03700, - 0x589EFA40, 0x589DBD80, 0x589C80C0, - 0x589B4400, 0x589A0740, 0x5898CA80, - 0x58978DC0, 0x58965100, 0x58951440, - 0x5893D780, 0x58929AC0, 0x58915E00, - 0x58902140, 0x588EE480, 0x588DA7C0, - 0x588C6B00, 0x588B2E40, 0x5889F180, - 0x5888B4C0, 0x58877800, 0x58863B40, - 0x5884FE80, 0x5883C1C0, 0x58828500, - 0x58814840, 0x58800B80, 0x587ECEC0, - 0x587D9200, 0x587C5540, 0x587B1880, - 0x5879DBC0, 0x58789F00, 0x58776240, - 0x58762580, 0x5874E8C0, 0x5873AC00, - 0x58726F40, 0x58713280, 0x586FF5C0, - 0x586EB900, 0x586D7C40, 0x586C3F80, - 0x586B02C0, 0x5869C600, 0x58688940, - 0x58674C80, 0x58660FC0, 0x5864D300, - 0x58639640, 0x58625980, 0x58611CC0, - 0x585FE000, 0x585EA340, 0x585D6680, - 0x585C29C0, 0x585AED00, 0x5859B040, - 0x58587380, 0x585736C0, 0x5855FA00, - 0x5854BD40, 0x58538080, 0x585243C0, - 0x58510700, 0x584FCA40, 0x584E8D80, - 0x584D50C0, 0x584C1400, 0x584AD740, - 0x58499A80, 0x58485DC0, 0x58472100, - 0x5845E440, 0x5844A780, 0x58436AC0, - 0x58422E00, 0x5840F140, 0x583FB480, - 0x583E77C0, 0x583D3B00, 0x583BFE40, - 0x583AC180, 0x583984C0, 0x58384800, - 0x58370B40, 0x5835CE80, 0x583491C0, - 0x58335500, 0x58321840, 0x5830DB80, - 0x582F9EC0, 0x582E6200, 0x582D2540, - 0x582BE880, 0x582AABC0, 0x58296F00, - 0x58283240, 0x5826F580, 0x5825B8C0, - 0x58247C00, 0x58233F40, 0x58220280, - 0x5820C5C0, 0x581F8900, 0x581E4C40, - 0x581D0F80, 0x581BD2C0, 0x581A9600, - 0x58195940, 0x58181C80, 0x5816DFC0, - 0x5815A300, 0x58146640, 0x58132980, - 0x5811ECC0, 0x5810B000, 0x580F7340, - 0x580E3680, 0x580CF9C0, 0x580BBD00, - 0x580A8040, 0x58094380, 0x580806C0, - 0x5806CA00, 0x58058D40, 0x58045080, - 0x580313C0, 0x5801D700, 0x58009A40, - 0x57FF5D80, 0x57FE20C0, 0x57FCE400, - 0x57FBA740, 0x57FA6A80, 0x57F92DC0, - 0x57F7F100, 0x57F6B440, 0x57F57780, - 0x57F43AC0, 0x57F2FE00, 0x57F1C140, - 0x57F08480, 0x57EF47C0, 0x57EE0B00, - 0x57ECCE40, 0x57EB9180, 0x57EA54C0, - 0x57E91800, 0x57E7DB40, 0x57E69E80, - 0x57E561C0, 0x57E42500, 0x57E2E840, - 0x57E1AB80, 0x57E06EC0, 0x57DF3200, - 0x57DDF540, 0x57DCB880, 0x57DB7BC0, - 0x57DA3F00, 0x57D90240, 0x57D7C580, - 0x57D688C0, 0x57D54C00, 0x57D40F40, - 0x57D2D280, 0x57D195C0, 0x57D05900, - 0x57CF1C40, 0x57CDDF80, 0x57CCA2C0, - 0x57CB6600, 0x57CA2940, 0x57C8EC80, - 0x57C7AFC0, 0x57C67300, 0x57C53640, - 0x57C3F980, 0x57C2BCC0, 0x57C18000, - 0x57C04340, 0x57BF0680, 0x57BDC9C0, - 0x57BC8D00, 0x57BB5040, 0x57BA1380, - 0x57B8D6C0, 0x57B79A00, 0x57B65D40, - 0x57B52080, 0x57B3E3C0, 0x57B2A700, - 0x57B16A40, 0x57B02D80, 0x57AEF0C0, - 0x57ADB400, 0x57AC7740, 0x57AB3A80, - 0x57A9FDC0, 0x57A8C100, 0x57A78440, - 0x57A64780, 0x57A50AC0, 0x57A3CE00, - 0x57A29140, 0x57A15480, 0x57A017C0, - 0x579EDB00, 0x579D9E40, 0x579C6180, - 0x579B24C0, 0x5799E800, 0x5798AB40, - 0x57976E80, 0x579631C0, 0x5794F500, - 0x5793B840, 0x57927B80, 0x57913EC0, - 0x57900200, 0x578EC540, 0x578D8880, - 0x578C4BC0, 0x578B0F00, 0x5789D240, - 0x57889580, 0x578758C0, 0x57861C00, - 0x5784DF40, 0x5783A280, 0x578265C0, - 0x57812900, 0x577FEC40, 0x577EAF80, - 0x577D72C0, 0x577C3600, 0x577AF940, - 0x5779BC80, 0x57787FC0, 0x57774300, - 0x57760640, 0x5774C980, 0x57738CC0, - 0x57725000, 0x57711340, 0x576FD680, - 0x576E99C0, 0x576D5D00, 0x576C2040, - 0x576AE380, 0x5769A6C0, 0x57686A00, - 0x57672D40, 0x5765F080, 0x5764B3C0, - 0x57637700, 0x57623A40, 0x5760FD80, - 0x575FC0C0, 0x575E8400, 0x575D4740, - 0x575C0A80, 0x575ACDC0, 0x57599100, - 0x57585440, 0x57571780, 0x5755DAC0, - 0x57549E00, 0x57536140, 0x57522480, - 0x5750E7C0, 0x574FAB00, 0x574E6E40, - 0x574D3180, 0x574BF4C0, 0x574AB800, - 0x57497B40, 0x57483E80, 0x574701C0, - 0x5745C500, 0x57448840, 0x57434B80, - 0x57420EC0, 0x5740D200, 0x573F9540, - 0x573E5880, 0x573D1BC0, 0x573BDF00, - 0x573AA240, 0x57396580, 0x573828C0, - 0x5736EC00, 0x5735AF40, 0x57347280, - 0x573335C0, 0x5731F900, 0x5730BC40, - 0x572F7F80, 0x572E42C0, 0x572D0600, - 0x572BC940, 0x572A8C80, 0x57294FC0, - 0x57281300, 0x5726D640, 0x57259980, - 0x57245CC0, 0x57232000, 0x5721E340, - 0x5720A680, 0x571F69C0, 0x571E2D00, - 0x571CF040, 0x571BB380, 0x571A76C0, - 0x57193A00, 0x5717FD40, 0x5716C080, - 0x571583C0, 0x57144700, 0x57130A40, - 0x5711CD80, 0x571090C0, 0x570F5400, - 0x570E1740, 0x570CDA80, 0x570B9DC0, - 0x570A6100, 0x57092440, 0x5707E780, - 0x5706AAC0, 0x57056E00, 0x57043140, - 0x5702F480, 0x5701B7C0, 0x57007B00, - 0x56FF3E40, 0x56FE0180, 0x56FCC4C0, - 0x56FB8800, 0x56FA4B40, 0x56F90E80, - 0x56F7D1C0, 0x56F69500, 0x56F55840, - 0x56F41B80, 0x56F2DEC0, 0x56F1A200, - 0x56F06540, 0x56EF2880, 0x56EDEBC0, - 0x56ECAF00, 0x56EB7240, 0x56EA3580, - 0x56E8F8C0, 0x56E7BC00, 0x56E67F40, - 0x56E54280, 0x56E405C0, 0x56E2C900, - 0x56E18C40, 0x56E04F80, 0x56DF12C0, - 0x56DDD600, 0x56DC9940, 0x56DB5C80, - 0x56DA1FC0, 0x56D8E300, 0x56D7A640, - 0x56D66980, 0x56D52CC0, 0x56D3F000, - 0x56D2B340, 0x56D17680, 0x56D039C0, - 0x56CEFD00, 0x56CDC040, 0x56CC8380, - 0x56CB46C0, 0x56CA0A00, 0x56C8CD40, - 0x56C79080, 0x56C653C0, 0x56C51700, - 0x56C3DA40, 0x56C29D80, 0x56C160C0, - 0x56C02400, 0x56BEE740, 0x56BDAA80, - 0x56BC6DC0, 0x56BB3100, 0x56B9F440, - 0x56B8B780, 0x56B77AC0, 0x56B63E00, - 0x56B50140, 0x56B3C480, 0x56B287C0, - 0x56B14B00, 0x56B00E40, 0x56AED180, - 0x56AD94C0, 0x56AC5800, 0x56AB1B40, - 0x56A9DE80, 0x56A8A1C0, 0x56A76500, - 0x56A62840, 0x56A4EB80, 0x56A3AEC0, - 0x56A27200, 0x56A13540, 0x569FF880, - 0x569EBBC0, 0x569D7F00, 0x569C4240, - 0x569B0580, 0x5699C8C0, 0x56988C00, - 0x56974F40, 0x56961280, 0x5694D5C0, - 0x56939900, 0x56925C40, 0x56911F80, - 0x568FE2C0, 0x568EA600, 0x568D6940, - 0x568C2C80, 0x568AEFC0, 0x5689B300, - 0x56887640, 0x56873980, 0x5685FCC0, - 0x5684C000, 0x56838340, 0x56824680, - 0x568109C0, 0x567FCD00, 0x567E9040, - 0x567D5380, 0x567C16C0, 0x567ADA00, - 0x56799D40, 0x56786080, 0x567723C0, - 0x5675E700, 0x5674AA40, 0x56736D80, - 0x567230C0, 0x5670F400, 0x566FB740, - 0x566E7A80, 0x566D3DC0, 0x566C0100, - 0x566AC440, 0x56698780, 0x56684AC0, - 0x56670E00, 0x5665D140, 0x56649480, - 0x566357C0, 0x56621B00, 0x5660DE40, - 0x565FA180, 0x565E64C0, 0x565D2800, - 0x565BEB40, 0x565AAE80, 0x565971C0, - 0x56583500, 0x5656F840, 0x5655BB80, - 0x56547EC0, 0x56534200, 0x56520540, - 0x5650C880, 0x564F8BC0, 0x564E4F00, - 0x564D1240, 0x564BD580, 0x564A98C0, - 0x56495C00, 0x56481F40, 0x5646E280, - 0x5645A5C0, 0x56446900, 0x56432C40, - 0x5641EF80, 0x5640B2C0, 0x563F7600, - 0x563E3940, 0x563CFC80, 0x563BBFC0, - 0x563A8300, 0x56394640, 0x56380980, - 0x5636CCC0, 0x56359000, 0x56345340, - 0x56331680, 0x5631D9C0, 0x56309D00, - 0x562F6040, 0x562E2380, 0x562CE6C0, - 0x562BAA00, 0x562A6D40, 0x56293080, - 0x5627F3C0, 0x5626B700, 0x56257A40, - 0x56243D80, 0x562300C0, 0x5621C400, - 0x56208740, 0x561F4A80, 0x561E0DC0, - 0x561CD100, 0x561B9440, 0x561A5780, - 0x56191AC0, 0x5617DE00, 0x5616A140, - 0x56156480, 0x561427C0, 0x5612EB00, - 0x5611AE40, 0x56107180, 0x560F34C0, - 0x560DF800, 0x560CBB40, 0x560B7E80, - 0x560A41C0, 0x56090500, 0x5607C840, - 0x56068B80, 0x56054EC0, 0x56041200, - 0x5602D540, 0x56019880, 0x56005BC0, - 0x55FF1F00, 0x55FDE240, 0x55FCA580, - 0x55FB68C0, 0x55FA2C00, 0x55F8EF40, - 0x55F7B280, 0x55F675C0, 0x55F53900, - 0x55F3FC40, 0x55F2BF80, 0x55F182C0, - 0x55F04600, 0x55EF0940, 0x55EDCC80, - 0x55EC8FC0, 0x55EB5300, 0x55EA1640, - 0x55E8D980, 0x55E79CC0, 0x55E66000, - 0x55E52340, 0x55E3E680, 0x55E2A9C0, - 0x55E16D00, 0x55E03040, 0x55DEF380, - 0x55DDB6C0, 0x55DC7A00, 0x55DB3D40, - 0x55DA0080, 0x55D8C3C0, 0x55D78700, - 0x55D64A40, 0x55D50D80, 0x55D3D0C0, - 0x55D29400, 0x55D15740, 0x55D01A80, - 0x55CEDDC0, 0x55CDA100, 0x55CC6440, - 0x55CB2780, 0x55C9EAC0, 0x55C8AE00, - 0x55C77140, 0x55C63480, 0x55C4F7C0, - 0x55C3BB00, 0x55C27E40, 0x55C14180, - 0x55C004C0, 0x55BEC800, 0x55BD8B40, - 0x55BC4E80, 0x55BB11C0, 0x55B9D500, - 0x55B89840, 0x55B75B80, 0x55B61EC0, - 0x55B4E200, 0x55B3A540, 0x55B26880, - 0x55B12BC0, 0x55AFEF00, 0x55AEB240, - 0x55AD7580, 0x55AC38C0, 0x55AAFC00, - 0x55A9BF40, 0x55A88280, 0x55A745C0, - 0x55A60900, 0x55A4CC40, 0x55A38F80, - 0x55A252C0, 0x55A11600, 0x559FD940, - 0x559E9C80, 0x559D5FC0, 0x559C2300, - 0x559AE640, 0x5599A980, 0x55986CC0, - 0x55973000, 0x5595F340, 0x5594B680, - 0x559379C0, 0x55923D00, 0x55910040, - 0x558FC380, 0x558E86C0, 0x558D4A00, - 0x558C0D40, 0x558AD080, 0x558993C0, - 0x55885700, 0x55871A40, 0x5585DD80, - 0x5584A0C0, 0x55836400, 0x55822740, - 0x5580EA80, 0x557FADC0, 0x557E7100, - 0x557D3440, 0x557BF780, 0x557ABAC0, - 0x55797E00, 0x55784140, 0x55770480, - 0x5575C7C0, 0x55748B00, 0x55734E40, - 0x55721180, 0x5570D4C0, 0x556F9800, - 0x556E5B40, 0x556D1E80, 0x556BE1C0, - 0x556AA500, 0x55696840, 0x55682B80, - 0x5566EEC0, 0x5565B200, 0x55647540, - 0x55633880, 0x5561FBC0, 0x5560BF00, - 0x555F8240, 0x555E4580, 0x555D08C0, - 0x555BCC00, 0x555A8F40, 0x55595280, - 0x555815C0, 0x5556D900, 0x55559C40, - 0x55545F80, 0x555322C0, 0x5551E600, - 0x5550A940, 0x554F6C80, 0x554E2FC0, - 0x554CF300, 0x554BB640, 0x554A7980, - 0x55493CC0, 0x554A0000, 0x5548DCC0, - 0x5547B980, 0x55469640, 0x55457300, - 0x55444FC0, 0x55432C80, 0x55420940, - 0x5540E600, 0x553FC2C0, 0x553E9F80, - 0x553D7C40, 0x553C5900, 0x553B35C0, - 0x553A1280, 0x5538EF40, 0x5537CC00, - 0x5536A8C0, 0x55358580, 0x55346240, - 0x55333F00, 0x55321BC0, 0x5530F880, - 0x552FD540, 0x552EB200, 0x552D8EC0, - 0x552C6B80, 0x552B4840, 0x552A2500, - 0x552901C0, 0x5527DE80, 0x5526BB40, - 0x55259800, 0x552474C0, 0x55235180, - 0x55222E40, 0x55210B00, 0x551FE7C0, - 0x551EC480, 0x551DA140, 0x551C7E00, - 0x551B5AC0, 0x551A3780, 0x55191440, - 0x5517F100, 0x5516CDC0, 0x5515AA80, - 0x55148740, 0x55136400, 0x551240C0, - 0x55111D80, 0x550FFA40, 0x550ED700, - 0x550DB3C0, 0x550C9080, 0x550B6D40, - 0x550A4A00, 0x550926C0, 0x55080380, - 0x5506E040, 0x5505BD00, 0x550499C0, - 0x55037680, 0x55025340, 0x55013000, - 0x55000CC0, 0x54FEE980, 0x54FDC640, - 0x54FCA300, 0x54FB7FC0, 0x54FA5C80, - 0x54F93940, 0x54F81600, 0x54F6F2C0, - 0x54F5CF80, 0x54F4AC40, 0x54F38900, - 0x54F265C0, 0x54F14280, 0x54F01F40, - 0x54EEFC00, 0x54EDD8C0, 0x54ECB580, - 0x54EB9240, 0x54EA6F00, 0x54E94BC0, - 0x54E82880, 0x54E70540, 0x54E5E200, - 0x54E4BEC0, 0x54E39B80, 0x54E27840, - 0x54E15500, 0x54E031C0, 0x54DF0E80, - 0x54DDEB40, 0x54DCC800, 0x54DBA4C0, - 0x54DA8180, 0x54D95E40, 0x54D83B00, - 0x54D717C0, 0x54D5F480, 0x54D4D140, - 0x54D3AE00, 0x54D28AC0, 0x54D16780, - 0x54D04440, 0x54CF2100, 0x54CDFDC0, - 0x54CCDA80, 0x54CBB740, 0x54CA9400, - 0x54C970C0, 0x54C84D80, 0x54C72A40, - 0x54C60700, 0x54C4E3C0, 0x54C3C080, - 0x54C29D40, 0x54C17A00, 0x54C056C0, - 0x54BF3380, 0x54BE1040, 0x54BCED00, - 0x54BBC9C0, 0x54BAA680, 0x54B98340, - 0x54B86000, 0x54B73CC0, 0x54B61980, - 0x54B4F640, 0x54B3D300, 0x54B2AFC0, - 0x54B18C80, 0x54B06940, 0x54AF4600, - 0x54AE22C0, 0x54ACFF80, 0x54ABDC40, - 0x54AAB900, 0x54A995C0, 0x54A87280, - 0x54A74F40, 0x54A62C00, 0x54A508C0, - 0x54A3E580, 0x54A2C240, 0x54A19F00, - 0x54A07BC0, 0x549F5880, 0x549E3540, - 0x549D1200, 0x549BEEC0, 0x549ACB80, - 0x5499A840, 0x54988500, 0x549761C0, - 0x54963E80, 0x54951B40, 0x5493F800, - 0x5492D4C0, 0x5491B180, 0x54908E40, - 0x548F6B00, 0x548E47C0, 0x548D2480, - 0x548C0140, 0x548ADE00, 0x5489BAC0, - 0x54889780, 0x54877440, 0x54865100, - 0x54852DC0, 0x54840A80, 0x5482E740, - 0x5481C400, 0x5480A0C0, 0x547F7D80, - 0x547E5A40, 0x547D3700, 0x547C13C0, - 0x547AF080, 0x5479CD40, 0x5478AA00, - 0x547786C0, 0x54766380, 0x54754040, - 0x54741D00, 0x5472F9C0, 0x5471D680, - 0x5470B340, 0x546F9000, 0x546E6CC0, - 0x546D4980, 0x546C2640, 0x546B0300, - 0x5469DFC0, 0x5468BC80, 0x54679940, - 0x54667600, 0x546552C0, 0x54642F80, - 0x54630C40, 0x5461E900, 0x5460C5C0, - 0x545FA280, 0x545E7F40, 0x545D5C00, - 0x545C38C0, 0x545B1580, 0x5459F240, - 0x5458CF00, 0x5457ABC0, 0x54568880, - 0x54556540, 0x54544200, 0x54531EC0, - 0x5451FB80, 0x5450D840, 0x544FB500, - 0x544E91C0, 0x544D6E80, 0x544C4B40, - 0x544B2800, 0x544A04C0, 0x5448E180, - 0x5447BE40, 0x54469B00, 0x544577C0, - 0x54445480, 0x54433140, 0x54420E00, - 0x5440EAC0, 0x543FC780, 0x543EA440, - 0x543D8100, 0x543C5DC0, 0x543B3A80, - 0x543A1740, 0x5438F400, 0x5437D0C0, - 0x5436AD80, 0x54358A40, 0x54346700, - 0x543343C0, 0x54322080, 0x5430FD40, - 0x542FDA00, 0x542EB6C0, 0x542D9380, - 0x542C7040, 0x542B4D00, 0x542A29C0, - 0x54290680, 0x5427E340, 0x5426C000, - 0x54259CC0, 0x54247980, 0x54235640, - 0x54223300, 0x54210FC0, 0x541FEC80, - 0x541EC940, 0x541DA600, 0x541C82C0, - 0x541B5F80, 0x541A3C40, 0x54191900, - 0x5417F5C0, 0x5416D280, 0x5415AF40, - 0x54148C00, 0x541368C0, 0x54124580, - 0x54112240, 0x540FFF00, 0x540EDBC0, - 0x540DB880, 0x540C9540, 0x540B7200, - 0x540A4EC0, 0x54092B80, 0x54080840, - 0x5406E500, 0x5405C1C0, 0x54049E80, - 0x54037B40, 0x54025800, 0x540134C0, - 0x54001180, 0x53FEEE40, 0x53FDCB00, - 0x53FCA7C0, 0x53FB8480, 0x53FA6140, - 0x53F93E00, 0x53F81AC0, 0x53F6F780, - 0x53F5D440, 0x53F4B100, 0x53F38DC0, - 0x53F26A80, 0x53F14740, 0x53F02400, - 0x53EF00C0, 0x53EDDD80, 0x53ECBA40, - 0x53EB9700, 0x53EA73C0, 0x53E95080, - 0x53E82D40, 0x53E70A00, 0x53E5E6C0, - 0x53E4C380, 0x53E3A040, 0x53E27D00, - 0x53E159C0, 0x53E03680, 0x53DF1340, - 0x53DDF000, 0x53DCCCC0, 0x53DBA980, - 0x53DA8640, 0x53D96300, 0x53D83FC0, - 0x53D71C80, 0x53D5F940, 0x53D4D600, - 0x53D3B2C0, 0x53D28F80, 0x53D16C40, - 0x53D04900, 0x53CF25C0, 0x53CE0280, - 0x53CCDF40, 0x53CBBC00, 0x53CA98C0, - 0x53C97580, 0x53C85240, 0x53C72F00, - 0x53C60BC0, 0x53C4E880, 0x53C3C540, - 0x53C2A200, 0x53C17EC0, 0x53C05B80, - 0x53BF3840, 0x53BE1500, 0x53BCF1C0, - 0x53BBCE80, 0x53BAAB40, 0x53B98800, - 0x53B864C0, 0x53B74180, 0x53B61E40, - 0x53B4FB00, 0x53B3D7C0, 0x53B2B480, - 0x53B19140, 0x53B06E00, 0x53AF4AC0, - 0x53AE2780, 0x53AD0440, 0x53ABE100, - 0x53AABDC0, 0x53A99A80, 0x53A87740, - 0x53A75400, 0x53A630C0, 0x53A50D80, - 0x53A3EA40, 0x53A2C700, 0x53A1A3C0, - 0x53A08080, 0x539F5D40, 0x539E3A00, - 0x539D16C0, 0x539BF380, 0x539AD040, - 0x5399AD00, 0x539889C0, 0x53976680, - 0x53964340, 0x53952000, 0x5393FCC0, - 0x5392D980, 0x5391B640, 0x53909300, - 0x538F6FC0, 0x538E4C80, 0x538D2940, - 0x538C0600, 0x538AE2C0, 0x5389BF80, - 0x53889C40, 0x53877900, 0x538655C0, - 0x53853280, 0x53840F40, 0x5382EC00, - 0x5381C8C0, 0x5380A580, 0x537F8240, - 0x537E5F00, 0x537D3BC0, 0x537C1880, - 0x537AF540, 0x5379D200, 0x5378AEC0, - 0x53778B80, 0x53766840, 0x53754500, - 0x537421C0, 0x5372FE80, 0x5371DB40, - 0x5370B800, 0x536F94C0, 0x536E7180, - 0x536D4E40, 0x536C2B00, 0x536B07C0, - 0x5369E480, 0x5368C140, 0x53679E00, - 0x53667AC0, 0x53655780, 0x53643440, - 0x53631100, 0x5361EDC0, 0x5360CA80, - 0x535FA740, 0x535E8400, 0x535D60C0, - 0x535C3D80, 0x535B1A40, 0x5359F700, - 0x5358D3C0, 0x5357B080, 0x53568D40, - 0x53556A00, 0x535446C0, 0x53532380, - 0x53520040, 0x5350DD00, 0x534FB9C0, - 0x534E9680, 0x534D7340, 0x534C5000, - 0x534B2CC0, 0x534A0980, 0x5348E640, - 0x5347C300, 0x53469FC0, 0x53457C80, - 0x53445940, 0x53433600, 0x534212C0, - 0x5340EF80, 0x533FCC40, 0x533EA900, - 0x533D85C0, 0x533C6280, 0x533B3F40, - 0x533A1C00, 0x5338F8C0, 0x5337D580, - 0x5336B240, 0x53358F00, 0x53346BC0, - 0x53334880, 0x53322540, 0x53310200, - 0x532FDEC0, 0x532EBB80, 0x532D9840, - 0x532C7500, 0x532B51C0, 0x532A2E80, - 0x53290B40, 0x5327E800, 0x5326C4C0, - 0x5325A180, 0x53247E40, 0x53235B00, - 0x532237C0, 0x53211480, 0x531FF140, - 0x531ECE00, 0x531DAAC0, 0x531C8780, - 0x531B6440, 0x531A4100, 0x53191DC0, - 0x5317FA80, 0x5316D740, 0x5315B400, - 0x531490C0, 0x53136D80, 0x53124A40, - 0x53112700, 0x531003C0, 0x530EE080, - 0x530DBD40, 0x530C9A00, 0x530B76C0, - 0x530A5380, 0x53093040, 0x53080D00, - 0x5306E9C0, 0x5305C680, 0x5304A340, - 0x53038000, 0x53025CC0, 0x53013980, - 0x53001640, 0x52FEF300, 0x52FDCFC0, - 0x52FCAC80, 0x52FB8940, 0x52FA6600, - 0x52F942C0, 0x52F81F80, 0x52F6FC40, - 0x52F5D900, 0x52F4B5C0, 0x52F39280, - 0x52F26F40, 0x52F14C00, 0x52F028C0, - 0x52EF0580, 0x52EDE240, 0x52ECBF00, - 0x52EB9BC0, 0x52EA7880, 0x52E95540, - 0x52E83200, 0x52E70EC0, 0x52E5EB80, - 0x52E4C840, 0x52E3A500, 0x52E281C0, - 0x52E15E80, 0x52E03B40, 0x52DF1800, - 0x52DDF4C0, 0x52DCD180, 0x52DBAE40, - 0x52DA8B00, 0x52D967C0, 0x52D84480, - 0x52D72140, 0x52D5FE00, 0x52D4DAC0, - 0x52D3B780, 0x52D29440, 0x52D17100, - 0x52D04DC0, 0x52CF2A80, 0x52CE0740, - 0x52CCE400, 0x52CBC0C0, 0x52CA9D80, - 0x52C97A40, 0x52C85700, 0x52C733C0, - 0x52C61080, 0x52C4ED40, 0x52C3CA00, - 0x52C2A6C0, 0x52C18380, 0x52C06040, - 0x52BF3D00, 0x52BE19C0, 0x52BCF680, - 0x52BBD340, 0x52BAB000, 0x52B98CC0, - 0x52B86980, 0x52B74640, 0x52B62300, - 0x52B4FFC0, 0x52B3DC80, 0x52B2B940, - 0x52B19600, 0x52B072C0, 0x52AF4F80, - 0x52AE2C40, 0x52AD0900, 0x52ABE5C0, - 0x52AAC280, 0x52A99F40, 0x52A87C00, - 0x52A758C0, 0x52A63580, 0x52A51240, - 0x52A3EF00, 0x52A2CBC0, 0x52A1A880, - 0x52A08540, 0x529F6200, 0x529E3EC0, - 0x529D1B80, 0x529BF840, 0x529AD500, - 0x5299B1C0, 0x52988E80, 0x52976B40, - 0x52964800, 0x529524C0, 0x52940180, - 0x5292DE40, 0x5291BB00, 0x529097C0, - 0x528F7480, 0x528E5140, 0x528D2E00, - 0x528C0AC0, 0x528AE780, 0x5289C440, - 0x5288A100, 0x52877DC0, 0x52865A80, - 0x52853740, 0x52841400, 0x5282F0C0, - 0x5281CD80, 0x5280AA40, 0x527F8700, - 0x527E63C0, 0x527D4080, 0x527C1D40, - 0x527AFA00, 0x5279D6C0, 0x5278B380, - 0x52779040, 0x52766D00, 0x527549C0, - 0x52742680, 0x52730340, 0x5271E000, - 0x5270BCC0, 0x526F9980, 0x526E7640, - 0x526D5300, 0x526C2FC0, 0x526B0C80, - 0x5269E940, 0x5268C600, 0x5267A2C0, - 0x52667F80, 0x52655C40, 0x52643900, - 0x526315C0, 0x5261F280, 0x5260CF40, - 0x525FAC00, 0x525E88C0, 0x525D6580, - 0x525C4240, 0x525B1F00, 0x5259FBC0, - 0x5258D880, 0x5257B540, 0x52569200, - 0x52556EC0, 0x52544B80, 0x52532840, - 0x52520500, 0x5250E1C0, 0x524FBE80, - 0x524E9B40, 0x524D7800, 0x524C54C0, - 0x524B3180, 0x524A0E40, 0x5248EB00, - 0x5247C7C0, 0x5246A480, 0x52458140, - 0x52445E00, 0x52433AC0, 0x52421780, - 0x5240F440, 0x523FD100, 0x523EADC0, - 0x523D8A80, 0x523C6740, 0x523B4400, - 0x523A20C0, 0x5238FD80, 0x5237DA40, - 0x5236B700, 0x523593C0, 0x52347080, - 0x52334D40, 0x52322A00, 0x523106C0, - 0x522FE380, 0x522EC040, 0x522D9D00, - 0x522C79C0, 0x522B5680, 0x522A3340, - 0x52291000, 0x5227ECC0, 0x5226C980, - 0x5225A640, 0x52248300, 0x52235FC0, - 0x52223C80, 0x52211940, 0x521FF600, - 0x521ED2C0, 0x521DAF80, 0x521C8C40, - 0x521B6900, 0x521A45C0, 0x52192280, - 0x5217FF40, 0x5216DC00, 0x5215B8C0, - 0x52149580, 0x52137240, 0x52124F00, - 0x52112BC0, 0x52100880, 0x520EE540, - 0x520DC200, 0x520C9EC0, 0x520B7B80, - 0x520A5840, 0x52093500, 0x520811C0, - 0x5206EE80, 0x5205CB40, 0x5204A800, - 0x520384C0, 0x52026180, 0x52013E40, - 0x52001B00, 0x51FEF7C0, 0x51FDD480, - 0x51FCB140, 0x51FB8E00, 0x51FA6AC0, - 0x51F94780, 0x51F82440, 0x51F70100, - 0x51F5DDC0, 0x51F4BA80, 0x51F39740, - 0x51F27400, 0x51F150C0, 0x51F02D80, - 0x51EF0A40, 0x51EDE700, 0x51ECC3C0, - 0x51EBA080, 0x51EA7D40, 0x51E95A00, - 0x51E836C0, 0x51E71380, 0x51E5F040, - 0x51E4CD00, 0x51E3A9C0, 0x51E28680, - 0x51E16340, 0x51E04000, 0x51DF1CC0, - 0x51DDF980, 0x51DCD640, 0x51DBB300, - 0x51DA8FC0, 0x51D96C80, 0x51D84940, - 0x51D72600, 0x51D602C0, 0x51D4DF80, - 0x51D3BC40, 0x51D29900, 0x51D175C0, - 0x51D05280, 0x51CF2F40, 0x51CE0C00, - 0x51CCE8C0, 0x51CBC580, 0x51CAA240, - 0x51C97F00, 0x51C85BC0, 0x51C73880, - 0x51C61540, 0x51C4F200, 0x51C3CEC0, - 0x51C2AB80, 0x51C18840, 0x51C06500, - 0x51BF41C0, 0x51BE1E80, 0x51BCFB40, - 0x51BBD800, 0x51BAB4C0, 0x51B99180, - 0x51B86E40, 0x51B74B00, 0x51B627C0, - 0x51B50480, 0x51B3E140, 0x51B2BE00, - 0x51B19AC0, 0x51B07780, 0x51AF5440, - 0x51AE3100, 0x51AD0DC0, 0x51ABEA80, - 0x51AAC740, 0x51A9A400, 0x51A880C0, - 0x51A75D80, 0x51A63A40, 0x51A51700, - 0x51A3F3C0, 0x51A2D080, 0x51A1AD40, - 0x51A08A00, 0x519F66C0, 0x519E4380, - 0x519D2040, 0x519BFD00, 0x519AD9C0, - 0x5199B680, 0x51989340, 0x51977000, - 0x51964CC0, 0x51952980, 0x51940640, - 0x5192E300, 0x5191BFC0, 0x51909C80, - 0x518F7940, 0x518E5600, 0x518D32C0, - 0x518C0F80, 0x518AEC40, 0x5189C900, - 0x5188A5C0, 0x51878280, 0x51865F40, - 0x51853C00, 0x518418C0, 0x5182F580, - 0x5181D240, 0x5180AF00, 0x517F8BC0, - 0x517E6880, 0x517D4540, 0x517C2200, - 0x517AFEC0, 0x5179DB80, 0x5178B840, - 0x51779500, 0x517671C0, 0x51754E80, - 0x51742B40, 0x51730800, 0x5171E4C0, - 0x5170C180, 0x516F9E40, 0x516E7B00, - 0x516D57C0, 0x516C3480, 0x516B1140, - 0x5169EE00, 0x5168CAC0, 0x5167A780, - 0x51668440, 0x51656100, 0x51643DC0, - 0x51631A80, 0x5161F740, 0x5160D400, - 0x515FB0C0, 0x515E8D80, 0x515D6A40, - 0x515C4700, 0x515B23C0, 0x515A0080, - 0x5158DD40, 0x5157BA00, 0x515696C0, - 0x51557380, 0x51545040, 0x51532D00, - 0x515209C0, 0x5150E680, 0x514FC340, - 0x514EA000, 0x514D7CC0, 0x514C5980, - 0x514B3640, 0x514A1300, 0x5148EFC0, - 0x5147CC80, 0x5146A940, 0x51458600, - 0x514462C0, 0x51433F80, 0x51421C40, - 0x5140F900, 0x513FD5C0, 0x513EB280, - 0x513D8F40, 0x513C6C00, 0x513B48C0, - 0x513A2580, 0x51390240, 0x5137DF00, - 0x5136BBC0, 0x51359880, 0x51347540, - 0x51335200, 0x51322EC0, 0x51310B80, - 0x512FE840, 0x512EC500, 0x512DA1C0, - 0x512C7E80, 0x512B5B40, 0x512A3800, - 0x512914C0, 0x5127F180, 0x5126CE40, - 0x5125AB00, 0x512487C0, 0x51236480, - 0x51224140, 0x51211E00, 0x511FFAC0, - 0x511ED780, 0x511DB440, 0x511C9100, - 0x511B6DC0, 0x511A4A80, 0x51192740, - 0x51180400, 0x5116E0C0, 0x5115BD80, - 0x51149A40, 0x51137700, 0x511253C0, - 0x51113080, 0x51100D40, 0x510EEA00, - 0x510DC6C0, 0x510CA380, 0x510B8040, - 0x510A5D00, 0x510939C0, 0x51081680, - 0x5106F340, 0x5105D000, 0x5104ACC0, - 0x51038980, 0x51026640, 0x51014300, - 0x51001FC0, 0x50FEFC80, 0x50FDD940, - 0x50FCB600, 0x50FB92C0, 0x50FA6F80, - 0x50F94C40, 0x50F82900, 0x50F705C0, - 0x50F5E280, 0x50F4BF40, 0x50F39C00, - 0x50F278C0, 0x50F15580, 0x50F03240, - 0x50EF0F00, 0x50EDEBC0, 0x50ECC880, - 0x50EBA540, 0x50EA8200, 0x50E95EC0, - 0x50E83B80, 0x50E71840, 0x50E5F500, - 0x50E4D1C0, 0x50E3AE80, 0x50E28B40, - 0x50E16800, 0x50E044C0, 0x50DF2180, - 0x50DDFE40, 0x50DCDB00, 0x50DBB7C0, - 0x50DA9480, 0x50D97140, 0x50D84E00, - 0x50D72AC0, 0x50D60780, 0x50D4E440, - 0x50D3C100, 0x50D29DC0, 0x50D17A80, - 0x50D05740, 0x50CF3400, 0x50CE10C0, - 0x50CCED80, 0x50CBCA40, 0x50CAA700, - 0x50C983C0, 0x50C86080, 0x50C73D40, - 0x50C61A00, 0x50C4F6C0, 0x50C3D380, - 0x50C2B040, 0x50C18D00, 0x50C069C0, - 0x50BF4680, 0x50BE2340, 0x50BD0000, - 0x50BBDCC0, 0x50BAB980, 0x50B99640, - 0x50B87300, 0x50B74FC0, 0x50B62C80, - 0x50B50940, 0x50B3E600, 0x50B2C2C0, - 0x50B19F80, 0x50B07C40, 0x50AF5900, - 0x50AE35C0, 0x50AD1280, 0x50ABEF40, - 0x50AACC00, 0x50A9A8C0, 0x50A88580, - 0x50A76240, 0x50A63F00, 0x50A51BC0, - 0x50A3F880, 0x50A2D540, 0x50A1B200, - 0x50A08EC0, 0x509F6B80, 0x509E4840, - 0x509D2500, 0x509C01C0, 0x509ADE80, - 0x5099BB40, 0x50989800, 0x509774C0, - 0x50965180, 0x50952E40, 0x50940B00, - 0x5092E7C0, 0x5091C480, 0x5090A140, - 0x508F7E00, 0x508E5AC0, 0x508D3780, - 0x508C1440, 0x508AF100, 0x5089CDC0, - 0x5088AA80, 0x50878740, 0x50866400, - 0x508540C0, 0x50841D80, 0x5082FA40, - 0x5081D700, 0x5080B3C0, 0x507F9080, - 0x507E6D40, 0x507D4A00, 0x507C26C0, - 0x507B0380, 0x5079E040, 0x5078BD00, - 0x507799C0, 0x50767680, 0x50755340, - 0x50743000, 0x50730CC0, 0x5071E980, - 0x5070C640, 0x506FA300, 0x506E7FC0, - 0x506D5C80, 0x506C3940, 0x506B1600, - 0x5069F2C0, 0x5068CF80, 0x5067AC40, - 0x50668900, 0x506565C0, 0x50644280, - 0x50631F40, 0x5061FC00, 0x5060D8C0, - 0x505FB580, 0x505E9240, 0x505D6F00, - 0x505C4BC0, 0x505B2880, 0x505A0540, - 0x5058E200, 0x5057BEC0, 0x50569B80, - 0x50557840, 0x50545500, 0x505331C0, - 0x50520E80, 0x5050EB40, 0x504FC800, - 0x504EA4C0, 0x504D8180, 0x504C5E40, - 0x504B3B00, 0x504A17C0, 0x5048F480, - 0x5047D140, 0x5046AE00, 0x50458AC0, - 0x50446780, 0x50434440, 0x50422100, - 0x5040FDC0, 0x503FDA80, 0x503EB740, - 0x503D9400, 0x503C70C0, 0x503B4D80, - 0x503A2A40, 0x50390700, 0x5037E3C0, - 0x5036C080, 0x50359D40, 0x50347A00, - 0x503356C0, 0x50323380, 0x50311040, - 0x502FED00, 0x502EC9C0, 0x502DA680, - 0x502C8340, 0x502B6000, 0x502A3CC0, - 0x50291980, 0x5027F640, 0x5026D300, - 0x5025AFC0, 0x50248C80, 0x50236940, - 0x50224600, 0x502122C0, 0x501FFF80, - 0x501EDC40, 0x501DB900, 0x501C95C0, - 0x501B7280, 0x501A4F40, 0x50192C00, - 0x501808C0, 0x5016E580, 0x5015C240, - 0x50149F00, 0x50137BC0, 0x50125880, - 0x50113540, 0x50101200, 0x500EEEC0, - 0x500DCB80, 0x500CA840, 0x500B8500, - 0x500A61C0, 0x50093E80, 0x50081B40, - 0x5006F800, 0x5005D4C0, 0x5004B180, - 0x50038E40, 0x50026B00, 0x500147C0, - 0x50002480, 0x4FFF0140, 0x4FFDDE00, - 0x4FFCBAC0, 0x4FFB9780, 0x4FFA7440, - 0x4FF95100, 0x4FF82DC0, 0x4FF70A80, - 0x4FF5E740, 0x4FF4C400, 0x4FF3A0C0, - 0x4FF27D80, 0x4FF15A40, 0x4FF03700, - 0x4FEF13C0, 0x4FEDF080, 0x4FECCD40, - 0x4FEBAA00, 0x4FEA86C0, 0x4FE96380, - 0x4FE84040, 0x4FE71D00, 0x4FE5F9C0, - 0x4FE4D680, 0x4FE3B340, 0x4FE29000, - 0x4FE16CC0, 0x4FE04980, 0x4FDF2640, - 0x4FDE0300, 0x4FDCDFC0, 0x4FDBBC80, - 0x4FDA9940, 0x4FD97600, 0x4FD852C0, - 0x4FD72F80, 0x4FD60C40, 0x4FD4E900, - 0x4FD3C5C0, 0x4FD2A280, 0x4FD17F40, - 0x4FD05C00, 0x4FCF38C0, 0x4FCE1580, - 0x4FCCF240, 0x4FCBCF00, 0x4FCAABC0, - 0x4FC98880, 0x4FC86540, 0x4FC74200, - 0x4FC61EC0, 0x4FC4FB80, 0x4FC3D840, - 0x4FC2B500, 0x4FC191C0, 0x4FC06E80, - 0x4FBF4B40, 0x4FBE2800, 0x4FBD04C0, - 0x4FBBE180, 0x4FBABE40, 0x4FB99B00, - 0x4FB877C0, 0x4FB75480, 0x4FB63140, - 0x4FB50E00, 0x4FB3EAC0, 0x4FB2C780, - 0x4FB1A440, 0x4FB08100, 0x4FAF5DC0, - 0x4FAE3A80, 0x4FAD1740, 0x4FABF400, - 0x4FAAD0C0, 0x4FA9AD80, 0x4FA88A40, - 0x4FA76700, 0x4FA643C0, 0x4FA52080, - 0x4FA3FD40, 0x4FA2DA00, 0x4FA1B6C0, - 0x4FA09380, 0x4F9F7040, 0x4F9E4D00, - 0x4F9D29C0, 0x4F9C0680, 0x4F9AE340, - 0x4F99C000, 0x4F989CC0, 0x4F977980, - 0x4F965640, 0x4F953300, 0x4F940FC0, - 0x4F92EC80, 0x4F91C940, 0x4F90A600, - 0x4F8F82C0, 0x4F8E5F80, 0x4F8D3C40, - 0x4F8C1900, 0x4F8AF5C0, 0x4F89D280, - 0x4F88AF40, 0x4F878C00, 0x4F8668C0, - 0x4F854580, 0x4F842240, 0x4F82FF00, - 0x4F81DBC0, 0x4F80B880, 0x4F7F9540, - 0x4F7E7200, 0x4F7D4EC0, 0x4F7C2B80, - 0x4F7B0840, 0x4F79E500, 0x4F78C1C0, - 0x4F779E80, 0x4F767B40, 0x4F755800, - 0x4F7434C0, 0x4F731180, 0x4F71EE40, - 0x4F70CB00, 0x4F6FA7C0, 0x4F6E8480, - 0x4F6D6140, 0x4F6C3E00, 0x4F6B1AC0, - 0x4F69F780, 0x4F68D440, 0x4F67B100, - 0x4F668DC0, 0x4F656A80, 0x4F644740, - 0x4F632400, 0x4F6200C0, 0x4F60DD80, - 0x4F5FBA40, 0x4F5E9700, 0x4F5D73C0, - 0x4F5C5080, 0x4F5B2D40, 0x4F5A0A00, - 0x4F58E6C0, 0x4F57C380, 0x4F56A040, - 0x4F557D00, 0x4F5459C0, 0x4F533680, - 0x4F521340, 0x4F50F000, 0x4F4FCCC0, - 0x4F4EA980, 0x4F4D8640, 0x4F4C6300, - 0x4F4B3FC0, 0x4F4A1C80, 0x4F48F940, - 0x4F47D600, 0x4F46B2C0, 0x4F458F80, - 0x4F446C40, 0x4F434900, 0x4F4225C0, - 0x4F410280, 0x4F3FDF40, 0x4F3EBC00, - 0x4F3D98C0, 0x4F3C7580, 0x4F3B5240, - 0x4F3A2F00, 0x4F390BC0, 0x4F37E880, - 0x4F36C540, 0x4F35A200, 0x4F347EC0, - 0x4F335B80, 0x4F323840, 0x4F311500, - 0x4F2FF1C0, 0x4F2ECE80, 0x4F2DAB40, - 0x4F2C8800, 0x4F2B64C0, 0x4F2A4180, - 0x4F291E40, 0x4F27FB00, 0x4F26D7C0, - 0x4F25B480, 0x4F249140, 0x4F236E00, - 0x4F224AC0, 0x4F212780, 0x4F200440, - 0x4F1EE100, 0x4F1DBDC0, 0x4F1C9A80, - 0x4F1B7740, 0x4F1A5400, 0x4F1930C0, - 0x4F180D80, 0x4F16EA40, 0x4F15C700, - 0x4F14A3C0, 0x4F138080, 0x4F125D40, - 0x4F113A00, 0x4F1016C0, 0x4F0EF380, - 0x4F0DD040, 0x4F0CAD00, 0x4F0B89C0, - 0x4F0A6680, 0x4F094340, 0x4F082000, - 0x4F06FCC0, 0x4F05D980, 0x4F04B640, - 0x4F039300, 0x4F026FC0, 0x4F014C80, - 0x4F002940, 0x4EFF0600, 0x4EFDE2C0, - 0x4EFCBF80, 0x4EFB9C40, 0x4EFA7900, - 0x4EF955C0, 0x4EF83280, 0x4EF70F40, - 0x4EF5EC00, 0x4EF4C8C0, 0x4EF3A580, - 0x4EF28240, 0x4EF15F00, 0x4EF03BC0, - 0x4EEF1880, 0x4EEDF540, 0x4EECD200, - 0x4EEBAEC0, 0x4EEA8B80, 0x4EE96840, - 0x4EE84500, 0x4EE721C0, 0x4EE5FE80, - 0x4EE4DB40, 0x4EE3B800, 0x4EE294C0, - 0x4EE17180, 0x4EE04E40, 0x4EDF2B00, - 0x4EDE07C0, 0x4EDCE480, 0x4EDBC140, - 0x4EDA9E00, 0x4ED97AC0, 0x4ED85780, - 0x4ED73440, 0x4ED61100, 0x4ED4EDC0, - 0x4ED3CA80, 0x4ED2A740, 0x4ED18400, - 0x4ED060C0, 0x4ECF3D80, 0x4ECE1A40, - 0x4ECCF700, 0x4ECBD3C0, 0x4ECAB080, - 0x4EC98D40, 0x4EC86A00, 0x4EC746C0, - 0x4EC62380, 0x4EC50040, 0x4EC3DD00, - 0x4EC2B9C0, 0x4EC19680, 0x4EC07340, - 0x4EBF5000, 0x4EBE2CC0, 0x4EBD0980, - 0x4EBBE640, 0x4EBAC300, 0x4EB99FC0, - 0x4EB87C80, 0x4EB75940, 0x4EB63600, - 0x4EB512C0, 0x4EB3EF80, 0x4EB2CC40, - 0x4EB1A900, 0x4EB085C0, 0x4EAF6280, - 0x4EAE3F40, 0x4EAD1C00, 0x4EABF8C0, - 0x4EAAD580, 0x4EA9B240, 0x4EA88F00, - 0x4EA76BC0, 0x4EA64880, 0x4EA52540, - 0x4EA40200, 0x4EA2DEC0, 0x4EA1BB80, - 0x4EA09840, 0x4E9F7500, 0x4E9E51C0, - 0x4E9D2E80, 0x4E9C0B40, 0x4E9AE800, - 0x4E99C4C0, 0x4E98A180, 0x4E977E40, - 0x4E965B00, 0x4E9537C0, 0x4E941480, - 0x4E92F140, 0x4E91CE00, 0x4E90AAC0, - 0x4E8F8780, 0x4E8E6440, 0x4E8D4100, - 0x4E8C1DC0, 0x4E8AFA80, 0x4E89D740, - 0x4E88B400, 0x4E8790C0, 0x4E866D80, - 0x4E854A40, 0x4E842700, 0x4E8303C0, - 0x4E81E080, 0x4E80BD40, 0x4E7F9A00, - 0x4E7E76C0, 0x4E7D5380, 0x4E7C3040, - 0x4E7B0D00, 0x4E79E9C0, 0x4E78C680, - 0x4E77A340, 0x4E768000, 0x4E755CC0, - 0x4E743980, 0x4E731640, 0x4E71F300, - 0x4E70CFC0, 0x4E6FAC80, 0x4E6E8940, - 0x4E6D6600, 0x4E6C42C0, 0x4E6B1F80, - 0x4E69FC40, 0x4E68D900, 0x4E67B5C0, - 0x4E669280, 0x4E656F40, 0x4E644C00, - 0x4E6328C0, 0x4E620580, 0x4E60E240, - 0x4E5FBF00, 0x4E5E9BC0, 0x4E5D7880, - 0x4E5C5540, 0x4E5B3200, 0x4E5A0EC0, - 0x4E58EB80, 0x4E57C840, 0x4E56A500, - 0x4E5581C0, 0x4E545E80, 0x4E533B40, - 0x4E521800, 0x4E50F4C0, 0x4E4FD180, - 0x4E4EAE40, 0x4E4D8B00, 0x4E4C67C0, - 0x4E4B4480, 0x4E4A2140, 0x4E48FE00, - 0x4E47DAC0, 0x4E46B780, 0x4E459440, - 0x4E447100, 0x4E434DC0, 0x4E422A80, - 0x4E410740, 0x4E3FE400, 0x4E3EC0C0, - 0x4E3D9D80, 0x4E3C7A40, 0x4E3B5700, - 0x4E3A33C0, 0x4E391080, 0x4E37ED40, - 0x4E36CA00, 0x4E35A6C0, 0x4E348380, - 0x4E336040, 0x4E323D00, 0x4E3119C0, - 0x4E2FF680, 0x4E2ED340, 0x4E2DB000, - 0x4E2C8CC0, 0x4E2B6980, 0x4E2A4640, - 0x4E292300, 0x4E27FFC0, 0x4E26DC80, - 0x4E25B940, 0x4E249600, 0x4E2372C0, - 0x4E224F80, 0x4E212C40, 0x4E200900, - 0x4E1EE5C0, 0x4E1DC280, 0x4E1C9F40, - 0x4E1B7C00, 0x4E1A58C0, 0x4E193580, - 0x4E181240, 0x4E16EF00, 0x4E15CBC0, - 0x4E14A880, 0x4E138540, 0x4E126200, - 0x4E113EC0, 0x4E101B80, 0x4E0EF840, - 0x4E0DD500, 0x4E0CB1C0, 0x4E0B8E80, - 0x4E0A6B40, 0x4E094800, 0x4E0824C0, - 0x4E070180, 0x4E05DE40, 0x4E04BB00, - 0x4E0397C0, 0x4E027480, 0x4E015140, - 0x4E002E00, 0x4DFF0AC0, 0x4DFDE780, - 0x4DFCC440, 0x4DFBA100, 0x4DFA7DC0, - 0x4DF95A80, 0x4DF83740, 0x4DF71400, - 0x4DF5F0C0, 0x4DF4CD80, 0x4DF3AA40, - 0x4DF28700, 0x4DF163C0, 0x4DF04080, - 0x4DEF1D40, 0x4DEDFA00, 0x4DECD6C0, - 0x4DEBB380, 0x4DEA9040, 0x4DE96D00, - 0x4DE849C0, 0x4DE72680, 0x4DE60340, - 0x4DE4E000, 0x4DE3BCC0, 0x4DE29980, - 0x4DE17640, 0x4DE05300, 0x4DDF2FC0, - 0x4DDE0C80, 0x4DDCE940, 0x4DDBC600, - 0x4DDAA2C0, 0x4DD97F80, 0x4DD85C40, - 0x4DD73900, 0x4DD615C0, 0x4DD4F280, - 0x4DD3CF40, 0x4DD2AC00, 0x4DD188C0, - 0x4DD06580, 0x4DCF4240, 0x4DCE1F00, - 0x4DCCFBC0, 0x4DCBD880, 0x4DCAB540, - 0x4DC99200, 0x4DC86EC0, 0x4DC74B80, - 0x4DC62840, 0x4DC50500, 0x4DC3E1C0, - 0x4DC2BE80, 0x4DC19B40, 0x4DC07800, - 0x4DBF54C0, 0x4DBE3180, 0x4DBD0E40, - 0x4DBBEB00, 0x4DBAC7C0, 0x4DB9A480, - 0x4DB88140, 0x4DB75E00, 0x4DB63AC0, - 0x4DB51780, 0x4DB3F440, 0x4DB2D100, - 0x4DB1ADC0, 0x4DB08A80, 0x4DAF6740, - 0x4DAE4400, 0x4DAD20C0, 0x4DABFD80, - 0x4DAADA40, 0x4DA9B700, 0x4DA893C0, - 0x4DA77080, 0x4DA64D40, 0x4DA52A00, - 0x4DA406C0, 0x4DA2E380, 0x4DA1C040, - 0x4DA09D00, 0x4D9F79C0, 0x4D9E5680, - 0x4D9D3340, 0x4D9C1000, 0x4D9AECC0, - 0x4D99C980, 0x4D98A640, 0x4D978300, - 0x4D965FC0, 0x4D953C80, 0x4D941940, - 0x4D92F600, 0x4D91D2C0, 0x4D90AF80, - 0x4D8F8C40, 0x4D8E6900, 0x4D8D45C0, - 0x4D8C2280, 0x4D8AFF40, 0x4D89DC00, - 0x4D88B8C0, 0x4D879580, 0x4D867240, - 0x4D854F00, 0x4D842BC0, 0x4D830880, - 0x4D81E540, 0x4D80C200, 0x4D7F9EC0, - 0x4D7E7B80, 0x4D7D5840, 0x4D7C3500, - 0x4D7B11C0, 0x4D79EE80, 0x4D78CB40, - 0x4D77A800, 0x4D7684C0, 0x4D756180, - 0x4D743E40, 0x4D731B00, 0x4D71F7C0, - 0x4D70D480, 0x4D6FB140, 0x4D6E8E00, - 0x4D6D6AC0, 0x4D6C4780, 0x4D6B2440, - 0x4D6A0100, 0x4D68DDC0, 0x4D67BA80, - 0x4D669740, 0x4D657400, 0x4D6450C0, - 0x4D632D80, 0x4D620A40, 0x4D60E700, - 0x4D5FC3C0, 0x4D5EA080, 0x4D5D7D40, - 0x4D5C5A00, 0x4D5B36C0, 0x4D5A1380, - 0x4D58F040, 0x4D57CD00, 0x4D56A9C0, - 0x4D558680, 0x4D546340, 0x4D534000, - 0x4D521CC0, 0x4D50F980, 0x4D4FD640, - 0x4D4EB300, 0x4D4D8FC0, 0x4D4C6C80, - 0x4D4B4940, 0x4D4A2600, 0x4D4902C0, - 0x4D47DF80, 0x4D46BC40, 0x4D459900, - 0x4D4475C0, 0x4D435280, 0x4D422F40, - 0x4D410C00, 0x4D3FE8C0, 0x4D3EC580, - 0x4D3DA240, 0x4D3C7F00, 0x4D3B5BC0, - 0x4D3A3880, 0x4D391540, 0x4D37F200, - 0x4D36CEC0, 0x4D35AB80, 0x4D348840, - 0x4D336500, 0x4D3241C0, 0x4D311E80, - 0x4D2FFB40, 0x4D2ED800, 0x4D2DB4C0, - 0x4D2C9180, 0x4D2B6E40, 0x4D2A4B00, - 0x4D2927C0, 0x4D280480, 0x4D26E140, - 0x4D25BE00, 0x4D249AC0, 0x4D237780, - 0x4D225440, 0x4D213100, 0x4D200DC0, - 0x4D1EEA80, 0x4D1DC740, 0x4D1CA400, - 0x4D1B80C0, 0x4D1A5D80, 0x4D193A40, - 0x4D181700, 0x4D16F3C0, 0x4D15D080, - 0x4D14AD40, 0x4D138A00, 0x4D1266C0, - 0x4D114380, 0x4D102040, 0x4D0EFD00, - 0x4D0DD9C0, 0x4D0CB680, 0x4D0B9340, - 0x4D0A7000, 0x4D094CC0, 0x4D082980, - 0x4D070640, 0x4D05E300, 0x4D04BFC0, - 0x4D039C80, 0x4D027940, 0x4D015600, - 0x4D0032C0, 0x4CFF0F80, 0x4CFDEC40, - 0x4CFCC900, 0x4CFBA5C0, 0x4CFA8280, - 0x4CF95F40, 0x4CF83C00, 0x4CF718C0, - 0x4CF5F580, 0x4CF4D240, 0x4CF3AF00, - 0x4CF28BC0, 0x4CF16880, 0x4CF04540, - 0x4CEF2200, 0x4CEDFEC0, 0x4CECDB80, - 0x4CEBB840, 0x4CEA9500, 0x4CE971C0, - 0x4CE84E80, 0x4CE72B40, 0x4CE60800, - 0x4CE4E4C0, 0x4CE3C180, 0x4CE29E40, - 0x4CE17B00, 0x4CE057C0, 0x4CDF3480, - 0x4CDE1140, 0x4CDCEE00, 0x4CDBCAC0, - 0x4CDAA780, 0x4CD98440, 0x4CD86100, - 0x4CD73DC0, 0x4CD61A80, 0x4CD4F740, - 0x4CD3D400, 0x4CD2B0C0, 0x4CD18D80, - 0x4CD06A40, 0x4CCF4700, 0x4CCE23C0, - 0x4CCD0080, 0x4CCBDD40, 0x4CCABA00, - 0x4CC996C0, 0x4CC87380, 0x4CC75040, - 0x4CC62D00, 0x4CC509C0, 0x4CC3E680, - 0x4CC2C340, 0x4CC1A000, 0x4CC07CC0, - 0x4CBF5980, 0x4CBE3640, 0x4CBD1300, - 0x4CBBEFC0, 0x4CBACC80, 0x4CB9A940, - 0x4CB88600, 0x4CB762C0, 0x4CB63F80, - 0x4CB51C40, 0x4CB3F900, 0x4CB2D5C0, - 0x4CB1B280, 0x4CB08F40, 0x4CAF6C00, - 0x4CAE48C0, 0x4CAD2580, 0x4CAC0240, - 0x4CAADF00, 0x4CA9BBC0, 0x4CA89880, - 0x4CA77540, 0x4CA65200, 0x4CA52EC0, - 0x4CA40B80, 0x4CA2E840, 0x4CA1C500, - 0x4CA0A1C0, 0x4C9F7E80, 0x4C9E5B40, - 0x4C9D3800, 0x4C9C14C0, 0x4C9AF180, - 0x4C99CE40, 0x4C98AB00, 0x4C9787C0, - 0x4C966480, 0x4C954140, 0x4C941E00, - 0x4C92FAC0, 0x4C91D780, 0x4C90B440, - 0x4C8F9100, 0x4C8E6DC0, 0x4C8D4A80, - 0x4C8C2740, 0x4C8B0400, 0x4C89E0C0, - 0x4C88BD80, 0x4C879A40, 0x4C867700, - 0x4C8553C0, 0x4C843080, 0x4C830D40, - 0x4C81EA00, 0x4C80C6C0, 0x4C7FA380, - 0x4C7E8040, 0x4C7D5D00, 0x4C7C39C0, - 0x4C7B1680, 0x4C79F340, 0x4C78D000, - 0x4C77ACC0, 0x4C768980, 0x4C756640, - 0x4C744300, 0x4C731FC0, 0x4C71FC80, - 0x4C70D940, 0x4C6FB600, 0x4C6E92C0, - 0x4C6D6F80, 0x4C6C4C40, 0x4C6B2900, - 0x4C6A05C0, 0x4C68E280, 0x4C67BF40, - 0x4C669C00, 0x4C6578C0, 0x4C645580, - 0x4C633240, 0x4C620F00, 0x4C60EBC0, - 0x4C5FC880, 0x4C5EA540, 0x4C5D8200, - 0x4C5C5EC0, 0x4C5B3B80, 0x4C5A1840, - 0x4C58F500, 0x4C57D1C0, 0x4C56AE80, - 0x4C558B40, 0x4C546800, 0x4C5344C0, - 0x4C522180, 0x4C50FE40, 0x4C4FDB00, - 0x4C4EB7C0, 0x4C4D9480, 0x4C4C7140, - 0x4C4B4E00, 0x4C4A2AC0, 0x4C490780, - 0x4C47E440, 0x4C46C100, 0x4C459DC0, - 0x4C447A80, 0x4C435740, 0x4C423400, - 0x4C4110C0, 0x4C3FED80, 0x4C3ECA40, - 0x4C3DA700, 0x4C3C83C0, 0x4C3B6080, - 0x4C3A3D40, 0x4C391A00, 0x4C37F6C0, - 0x4C36D380, 0x4C35B040, 0x4C348D00, - 0x4C3369C0, 0x4C324680, 0x4C312340, - 0x4C300000, 0x4C2EF2C0, 0x4C2DE580, - 0x4C2CD840, 0x4C2BCB00, 0x4C2ABDC0, - 0x4C29B080, 0x4C28A340, 0x4C279600, - 0x4C2688C0, 0x4C257B80, 0x4C246E40, - 0x4C236100, 0x4C2253C0, 0x4C214680, - 0x4C203940, 0x4C1F2C00, 0x4C1E1EC0, - 0x4C1D1180, 0x4C1C0440, 0x4C1AF700, - 0x4C19E9C0, 0x4C18DC80, 0x4C17CF40, - 0x4C16C200, 0x4C15B4C0, 0x4C14A780, - 0x4C139A40, 0x4C128D00, 0x4C117FC0, - 0x4C107280, 0x4C0F6540, 0x4C0E5800, - 0x4C0D4AC0, 0x4C0C3D80, 0x4C0B3040, - 0x4C0A2300, 0x4C0915C0, 0x4C080880, - 0x4C06FB40, 0x4C05EE00, 0x4C04E0C0, - 0x4C03D380, 0x4C02C640, 0x4C01B900, - 0x4C00ABC0, 0x4BFF9E80, 0x4BFE9140, - 0x4BFD8400, 0x4BFC76C0, 0x4BFB6980, - 0x4BFA5C40, 0x4BF94F00, 0x4BF841C0, - 0x4BF73480, 0x4BF62740, 0x4BF51A00, - 0x4BF40CC0, 0x4BF2FF80, 0x4BF1F240, - 0x4BF0E500, 0x4BEFD7C0, 0x4BEECA80, - 0x4BEDBD40, 0x4BECB000, 0x4BEBA2C0, - 0x4BEA9580, 0x4BE98840, 0x4BE87B00, - 0x4BE76DC0, 0x4BE66080, 0x4BE55340, - 0x4BE44600, 0x4BE338C0, 0x4BE22B80, - 0x4BE11E40, 0x4BE01100, 0x4BDF03C0, - 0x4BDDF680, 0x4BDCE940, 0x4BDBDC00, - 0x4BDACEC0, 0x4BD9C180, 0x4BD8B440, - 0x4BD7A700, 0x4BD699C0, 0x4BD58C80, - 0x4BD47F40, 0x4BD37200, 0x4BD264C0, - 0x4BD15780, 0x4BD04A40, 0x4BCF3D00, - 0x4BCE2FC0, 0x4BCD2280, 0x4BCC1540, - 0x4BCB0800, 0x4BC9FAC0, 0x4BC8ED80, - 0x4BC7E040, 0x4BC6D300, 0x4BC5C5C0, - 0x4BC4B880, 0x4BC3AB40, 0x4BC29E00, - 0x4BC190C0, 0x4BC08380, 0x4BBF7640, - 0x4BBE6900, 0x4BBD5BC0, 0x4BBC4E80, - 0x4BBB4140, 0x4BBA3400, 0x4BB926C0, - 0x4BB81980, 0x4BB70C40, 0x4BB5FF00, - 0x4BB4F1C0, 0x4BB3E480, 0x4BB2D740, - 0x4BB1CA00, 0x4BB0BCC0, 0x4BAFAF80, - 0x4BAEA240, 0x4BAD9500, 0x4BAC87C0, - 0x4BAB7A80, 0x4BAA6D40, 0x4BA96000, - 0x4BA852C0, 0x4BA74580, 0x4BA63840, - 0x4BA52B00, 0x4BA41DC0, 0x4BA31080, - 0x4BA20340, 0x4BA0F600, 0x4B9FE8C0, - 0x4B9EDB80, 0x4B9DCE40, 0x4B9CC100, - 0x4B9BB3C0, 0x4B9AA680, 0x4B999940, - 0x4B988C00, 0x4B977EC0, 0x4B967180, - 0x4B956440, 0x4B945700, 0x4B9349C0, - 0x4B923C80, 0x4B912F40, 0x4B902200, - 0x4B8F14C0, 0x4B8E0780, 0x4B8CFA40, - 0x4B8BED00, 0x4B8ADFC0, 0x4B89D280, - 0x4B88C540, 0x4B87B800, 0x4B86AAC0, - 0x4B859D80, 0x4B849040, 0x4B838300, - 0x4B8275C0, 0x4B816880, 0x4B805B40, - 0x4B7F4E00, 0x4B7E40C0, 0x4B7D3380, - 0x4B7C2640, 0x4B7B1900, 0x4B7A0BC0, - 0x4B78FE80, 0x4B77F140, 0x4B76E400, - 0x4B75D6C0, 0x4B74C980, 0x4B73BC40, - 0x4B72AF00, 0x4B71A1C0, 0x4B709480, - 0x4B6F8740, 0x4B6E7A00, 0x4B6D6CC0, - 0x4B6C5F80, 0x4B6B5240, 0x4B6A4500, - 0x4B6937C0, 0x4B682A80, 0x4B671D40, - 0x4B661000, 0x4B6502C0, 0x4B63F580, - 0x4B62E840, 0x4B61DB00, 0x4B60CDC0, - 0x4B5FC080, 0x4B5EB340, 0x4B5DA600, - 0x4B5C98C0, 0x4B5B8B80, 0x4B5A7E40, - 0x4B597100, 0x4B5863C0, 0x4B575680, - 0x4B564940, 0x4B553C00, 0x4B542EC0, - 0x4B532180, 0x4B521440, 0x4B510700, - 0x4B4FF9C0, 0x4B4EEC80, 0x4B4DDF40, - 0x4B4CD200, 0x4B4BC4C0, 0x4B4AB780, - 0x4B49AA40, 0x4B489D00, 0x4B478FC0, - 0x4B468280, 0x4B457540, 0x4B446800, - 0x4B435AC0, 0x4B424D80, 0x4B414040, - 0x4B403300, 0x4B3F25C0, 0x4B3E1880, - 0x4B3D0B40, 0x4B3BFE00, 0x4B3AF0C0, - 0x4B39E380, 0x4B38D640, 0x4B37C900, - 0x4B36BBC0, 0x4B35AE80, 0x4B34A140, - 0x4B339400, 0x4B3286C0, 0x4B317980, - 0x4B306C40, 0x4B2F5F00, 0x4B2E51C0, - 0x4B2D4480, 0x4B2C3740, 0x4B2B2A00, - 0x4B2A1CC0, 0x4B290F80, 0x4B280240, - 0x4B26F500, 0x4B25E7C0, 0x4B24DA80, - 0x4B23CD40, 0x4B22C000, 0x4B21B2C0, - 0x4B20A580, 0x4B1F9840, 0x4B1E8B00, - 0x4B1D7DC0, 0x4B1C7080, 0x4B1B6340, - 0x4B1A5600, 0x4B1948C0, 0x4B183B80, - 0x4B172E40, 0x4B162100, 0x4B1513C0, - 0x4B140680, 0x4B12F940, 0x4B11EC00, - 0x4B10DEC0, 0x4B0FD180, 0x4B0EC440, - 0x4B0DB700, 0x4B0CA9C0, 0x4B0B9C80, - 0x4B0A8F40, 0x4B098200, 0x4B0874C0, - 0x4B076780, 0x4B065A40, 0x4B054D00, - 0x4B043FC0, 0x4B033280, 0x4B022540, - 0x4B011800, 0x4B000AC0, 0x4AFEFD80, - 0x4AFDF040, 0x4AFCE300, 0x4AFBD5C0, - 0x4AFAC880, 0x4AF9BB40, 0x4AF8AE00, - 0x4AF7A0C0, 0x4AF69380, 0x4AF58640, - 0x4AF47900, 0x4AF36BC0, 0x4AF25E80, - 0x4AF15140, 0x4AF04400, 0x4AEF36C0, - 0x4AEE2980, 0x4AED1C40, 0x4AEC0F00, - 0x4AEB01C0, 0x4AE9F480, 0x4AE8E740, - 0x4AE7DA00, 0x4AE6CCC0, 0x4AE5BF80, - 0x4AE4B240, 0x4AE3A500, 0x4AE297C0, - 0x4AE18A80, 0x4AE07D40, 0x4ADF7000, - 0x4ADE62C0, 0x4ADD5580, 0x4ADC4840, - 0x4ADB3B00, 0x4ADA2DC0, 0x4AD92080, - 0x4AD81340, 0x4AD70600, 0x4AD5F8C0, - 0x4AD4EB80, 0x4AD3DE40, 0x4AD2D100, - 0x4AD1C3C0, 0x4AD0B680, 0x4ACFA940, - 0x4ACE9C00, 0x4ACD8EC0, 0x4ACC8180, - 0x4ACB7440, 0x4ACA6700, 0x4AC959C0, - 0x4AC84C80, 0x4AC73F40, 0x4AC63200, - 0x4AC524C0, 0x4AC41780, 0x4AC30A40, - 0x4AC1FD00, 0x4AC0EFC0, 0x4ABFE280, - 0x4ABED540, 0x4ABDC800, 0x4ABCBAC0, - 0x4ABBAD80, 0x4ABAA040, 0x4AB99300, - 0x4AB885C0, 0x4AB77880, 0x4AB66B40, - 0x4AB55E00, 0x4AB450C0, 0x4AB34380, - 0x4AB23640, 0x4AB12900, 0x4AB01BC0, - 0x4AAF0E80, 0x4AAE0140, 0x4AACF400, - 0x4AABE6C0, 0x4AAAD980, 0x4AA9CC40, - 0x4AA8BF00, 0x4AA7B1C0, 0x4AA6A480, - 0x4AA59740, 0x4AA48A00, 0x4AA37CC0, - 0x4AA26F80, 0x4AA16240, 0x4AA05500, - 0x4A9F47C0, 0x4A9E3A80, 0x4A9D2D40, - 0x4A9C2000, 0x4A9B12C0, 0x4A9A0580, - 0x4A98F840, 0x4A97EB00, 0x4A96DDC0, - 0x4A95D080, 0x4A94C340, 0x4A93B600, - 0x4A92A8C0, 0x4A919B80, 0x4A908E40, - 0x4A8F8100, 0x4A8E73C0, 0x4A8D6680, - 0x4A8C5940, 0x4A8B4C00, 0x4A8A3EC0, - 0x4A893180, 0x4A882440, 0x4A871700, - 0x4A8609C0, 0x4A84FC80, 0x4A83EF40, - 0x4A82E200, 0x4A81D4C0, 0x4A80C780, - 0x4A7FBA40, 0x4A7EAD00, 0x4A7D9FC0, - 0x4A7C9280, 0x4A7B8540, 0x4A7A7800, - 0x4A796AC0, 0x4A785D80, 0x4A775040, - 0x4A764300, 0x4A7535C0, 0x4A742880, - 0x4A731B40, 0x4A720E00, 0x4A7100C0, - 0x4A6FF380, 0x4A6EE640, 0x4A6DD900, - 0x4A6CCBC0, 0x4A6BBE80, 0x4A6AB140, - 0x4A69A400, 0x4A6896C0, 0x4A678980, - 0x4A667C40, 0x4A656F00, 0x4A6461C0, - 0x4A635480, 0x4A624740, 0x4A613A00, - 0x4A602CC0, 0x4A5F1F80, 0x4A5E1240, - 0x4A5D0500, 0x4A5BF7C0, 0x4A5AEA80, - 0x4A59DD40, 0x4A58D000, 0x4A57C2C0, - 0x4A56B580, 0x4A55A840, 0x4A549B00, - 0x4A538DC0, 0x4A528080, 0x4A517340, - 0x4A506600, 0x4A4F58C0, 0x4A4E4B80, - 0x4A4D3E40, 0x4A4C3100, 0x4A4B23C0, - 0x4A4A1680, 0x4A490940, 0x4A47FC00, - 0x4A46EEC0, 0x4A45E180, 0x4A44D440, - 0x4A43C700, 0x4A42B9C0, 0x4A41AC80, - 0x4A409F40, 0x4A3F9200, 0x4A3E84C0, - 0x4A3D7780, 0x4A3C6A40, 0x4A3B5D00, - 0x4A3A4FC0, 0x4A394280, 0x4A383540, - 0x4A372800, 0x4A361AC0, 0x4A350D80, - 0x4A340040, 0x4A32F300, 0x4A31E5C0, - 0x4A30D880, 0x4A2FCB40, 0x4A2EBE00, - 0x4A2DB0C0, 0x4A2CA380, 0x4A2B9640, - 0x4A2A8900, 0x4A297BC0, 0x4A286E80, - 0x4A276140, 0x4A265400, 0x4A2546C0, - 0x4A243980, 0x4A232C40, 0x4A221F00, - 0x4A2111C0, 0x4A200480, 0x4A1EF740, - 0x4A1DEA00, 0x4A1CDCC0, 0x4A1BCF80, - 0x4A1AC240, 0x4A19B500, 0x4A18A7C0, - 0x4A179A80, 0x4A168D40, 0x4A158000, - 0x4A1472C0, 0x4A136580, 0x4A125840, - 0x4A114B00, 0x4A103DC0, 0x4A0F3080, - 0x4A0E2340, 0x4A0D1600, 0x4A0C08C0, - 0x4A0AFB80, 0x4A09EE40, 0x4A08E100, - 0x4A07D3C0, 0x4A06C680, 0x4A05B940, - 0x4A04AC00, 0x4A039EC0, 0x4A029180, - 0x4A018440, 0x4A007700, 0x49FF69C0, - 0x49FE5C80, 0x49FD4F40, 0x49FC4200, - 0x49FB34C0, 0x49FA2780, 0x49F91A40, - 0x49F80D00, 0x49F6FFC0, 0x49F5F280, - 0x49F4E540, 0x49F3D800, 0x49F2CAC0, - 0x49F1BD80, 0x49F0B040, 0x49EFA300, - 0x49EE95C0, 0x49ED8880, 0x49EC7B40, - 0x49EB6E00, 0x49EA60C0, 0x49E95380, - 0x49E84640, 0x49E73900, 0x49E62BC0, - 0x49E51E80, 0x49E41140, 0x49E30400, - 0x49E1F6C0, 0x49E0E980, 0x49DFDC40, - 0x49DECF00, 0x49DDC1C0, 0x49DCB480, - 0x49DBA740, 0x49DA9A00, 0x49D98CC0, - 0x49D87F80, 0x49D77240, 0x49D66500, - 0x49D557C0, 0x49D44A80, 0x49D33D40, - 0x49D23000, 0x49D122C0, 0x49D01580, - 0x49CF0840, 0x49CDFB00, 0x49CCEDC0, - 0x49CBE080, 0x49CAD340, 0x49C9C600, - 0x49C8B8C0, 0x49C7AB80, 0x49C69E40, - 0x49C59100, 0x49C483C0, 0x49C37680, - 0x49C26940, 0x49C15C00, 0x49C04EC0, - 0x49BF4180, 0x49BE3440, 0x49BD2700, - 0x49BC19C0, 0x49BB0C80, 0x49B9FF40, - 0x49B8F200, 0x49B7E4C0, 0x49B6D780, - 0x49B5CA40, 0x49B4BD00, 0x49B3AFC0, - 0x49B2A280, 0x49B19540, 0x49B08800, - 0x49AF7AC0, 0x49AE6D80, 0x49AD6040, - 0x49AC5300, 0x49AB45C0, 0x49AA3880, - 0x49A92B40, 0x49A81E00, 0x49A710C0, - 0x49A60380, 0x49A4F640, 0x49A3E900, - 0x49A2DBC0, 0x49A1CE80, 0x49A0C140, - 0x499FB400, 0x499EA6C0, 0x499D9980, - 0x499C8C40, 0x499B7F00, 0x499A71C0, - 0x49996480, 0x49985740, 0x49974A00, - 0x49963CC0, 0x49952F80, 0x49942240, - 0x49931500, 0x499207C0, 0x4990FA80, - 0x498FED40, 0x498EE000, 0x498DD2C0, - 0x498CC580, 0x498BB840, 0x498AAB00, - 0x49899DC0, 0x49889080, 0x49878340, - 0x49867600, 0x498568C0, 0x49845B80, - 0x49834E40, 0x49824100, 0x498133C0, - 0x49802680, 0x497F1940, 0x497E0C00, - 0x497CFEC0, 0x497BF180, 0x497AE440, - 0x4979D700, 0x4978C9C0, 0x4977BC80, - 0x4976AF40, 0x4975A200, 0x497494C0, - 0x49738780, 0x49727A40, 0x49716D00, - 0x49705FC0, 0x496F5280, 0x496E4540, - 0x496D3800, 0x496C2AC0, 0x496B1D80, - 0x496A1040, 0x49690300, 0x4967F5C0, - 0x4966E880, 0x4965DB40, 0x4964CE00, - 0x4963C0C0, 0x4962B380, 0x4961A640, - 0x49609900, 0x495F8BC0, 0x495E7E80, - 0x495D7140, 0x495C6400, 0x495B56C0, - 0x495A4980, 0x49593C40, 0x49582F00, - 0x495721C0, 0x49561480, 0x49550740, - 0x4953FA00, 0x4952ECC0, 0x4951DF80, - 0x4950D240, 0x494FC500, 0x494EB7C0, - 0x494DAA80, 0x494C9D40, 0x494B9000, - 0x494A82C0, 0x49497580, 0x49486840, - 0x49475B00, 0x49464DC0, 0x49454080, - 0x49443340, 0x49432600, 0x494218C0, - 0x49410B80, 0x493FFE40, 0x493EF100, - 0x493DE3C0, 0x493CD680, 0x493BC940, - 0x493ABC00, 0x4939AEC0, 0x4938A180, - 0x49379440, 0x49368700, 0x493579C0, - 0x49346C80, 0x49335F40, 0x49325200, - 0x493144C0, 0x49303780, 0x492F2A40, - 0x492E1D00, 0x492D0FC0, 0x492C0280, - 0x492AF540, 0x4929E800, 0x4928DAC0, - 0x4927CD80, 0x4926C040, 0x4925B300, - 0x4924A5C0, 0x49239880, 0x49228B40, - 0x49217E00, 0x492070C0, 0x491F6380, - 0x491E5640, 0x491D4900, 0x491C3BC0, - 0x491B2E80, 0x491A2140, 0x49191400, - 0x491806C0, 0x4916F980, 0x4915EC40, - 0x4914DF00, 0x4913D1C0, 0x4912C480, - 0x4911B740, 0x4910AA00, 0x490F9CC0, - 0x490E8F80, 0x490D8240, 0x490C7500, - 0x490B67C0, 0x490A5A80, 0x49094D40, - 0x49084000, 0x490732C0, 0x49062580, - 0x49051840, 0x49040B00, 0x4902FDC0, - 0x4901F080, 0x4900E340, 0x48FFD600, - 0x48FEC8C0, 0x48FDBB80, 0x48FCAE40, - 0x48FBA100, 0x48FA93C0, 0x48F98680, - 0x48F87940, 0x48F76C00, 0x48F65EC0, - 0x48F55180, 0x48F44440, 0x48F33700, - 0x48F229C0, 0x48F11C80, 0x48F00F40, - 0x48EF0200, 0x48EDF4C0, 0x48ECE780, - 0x48EBDA40, 0x48EACD00, 0x48E9BFC0, - 0x48E8B280, 0x48E7A540, 0x48E69800, - 0x48E58AC0, 0x48E47D80, 0x48E37040, - 0x48E26300, 0x48E155C0, 0x48E04880, - 0x48DF3B40, 0x48DE2E00, 0x48DD20C0, - 0x48DC1380, 0x48DB0640, 0x48D9F900, - 0x48D8EBC0, 0x48D7DE80, 0x48D6D140, - 0x48D5C400, 0x48D4B6C0, 0x48D3A980, - 0x48D29C40, 0x48D18F00, 0x48D081C0, - 0x48CF7480, 0x48CE6740, 0x48CD5A00, - 0x48CC4CC0, 0x48CB3F80, 0x48CA3240, - 0x48C92500, 0x48C817C0, 0x48C70A80, - 0x48C5FD40, 0x48C4F000, 0x48C3E2C0, - 0x48C2D580, 0x48C1C840, 0x48C0BB00, - 0x48BFADC0, 0x48BEA080, 0x48BD9340, - 0x48BC8600, 0x48BB78C0, 0x48BA6B80, - 0x48B95E40, 0x48B85100, 0x48B743C0, - 0x48B63680, 0x48B52940, 0x48B41C00, - 0x48B30EC0, 0x48B20180, 0x48B0F440, - 0x48AFE700, 0x48AED9C0, 0x48ADCC80, - 0x48ACBF40, 0x48ABB200, 0x48AAA4C0, - 0x48A99780, 0x48A88A40, 0x48A77D00, - 0x48A66FC0, 0x48A56280, 0x48A45540, - 0x48A34800, 0x48A23AC0, 0x48A12D80, - 0x48A02040, 0x489F1300, 0x489E05C0, - 0x489CF880, 0x489BEB40, 0x489ADE00, - 0x4899D0C0, 0x4898C380, 0x4897B640, - 0x4896A900, 0x48959BC0, 0x48948E80, - 0x48938140, 0x48927400, 0x489166C0, - 0x48905980, 0x488F4C40, 0x488E3F00, - 0x488D31C0, 0x488C2480, 0x488B1740, - 0x488A0A00, 0x4888FCC0, 0x4887EF80, - 0x4886E240, 0x4885D500, 0x4884C7C0, - 0x4883BA80, 0x4882AD40, 0x4881A000, - 0x488092C0, 0x487F8580, 0x487E7840, - 0x487D6B00, 0x487C5DC0, 0x487B5080, - 0x487A4340, 0x48793600, 0x487828C0, - 0x48771B80, 0x48760E40, 0x48750100, - 0x4873F3C0, 0x4872E680, 0x4871D940, - 0x4870CC00, 0x486FBEC0, 0x486EB180, - 0x486DA440, 0x486C9700, 0x486B89C0, - 0x486A7C80, 0x48696F40, 0x48686200, - 0x486754C0, 0x48664780, 0x48653A40, - 0x48642D00, 0x48631FC0, 0x48621280, - 0x48610540, 0x485FF800, 0x485EEAC0, - 0x485DDD80, 0x485CD040, 0x485BC300, - 0x485AB5C0, 0x4859A880, 0x48589B40, - 0x48578E00, 0x485680C0, 0x48557380, - 0x48546640, 0x48535900, 0x48524BC0, - 0x48513E80, 0x48503140, 0x484F2400, - 0x484E16C0, 0x484D0980, 0x484BFC40, - 0x484AEF00, 0x4849E1C0, 0x4848D480, - 0x4847C740, 0x4846BA00, 0x4845ACC0, - 0x48449F80, 0x48439240, 0x48428500, - 0x484177C0, 0x48406A80, 0x483F5D40, - 0x483E5000, 0x483D42C0, 0x483C3580, - 0x483B2840, 0x483A1B00, 0x48390DC0, - 0x48380080, 0x4836F340, 0x4835E600, - 0x4834D8C0, 0x4833CB80, 0x4832BE40, - 0x4831B100, 0x4830A3C0, 0x482F9680, - 0x482E8940, 0x482D7C00, 0x482C6EC0, - 0x482B6180, 0x482A5440, 0x48294700, - 0x482839C0, 0x48272C80, 0x48261F40, - 0x48251200, 0x482404C0, 0x4822F780, - 0x4821EA40, 0x4820DD00, 0x481FCFC0, - 0x481EC280, 0x481DB540, 0x481CA800, - 0x481B9AC0, 0x481A8D80, 0x48198040, - 0x48187300, 0x481765C0, 0x48165880, - 0x48154B40, 0x48143E00, 0x481330C0, - 0x48122380, 0x48111640, 0x48100900, - 0x480EFBC0, 0x480DEE80, 0x480CE140, - 0x480BD400, 0x480AC6C0, 0x4809B980, - 0x4808AC40, 0x48079F00, 0x480691C0, - 0x48058480, 0x48047740, 0x48036A00, - 0x48025CC0, 0x48014F80, 0x48004240, - 0x47FF3500, 0x47FE27C0, 0x47FD1A80, - 0x47FC0D40, 0x47FB0000, 0x47F9F2C0, - 0x47F8E580, 0x47F7D840, 0x47F6CB00, - 0x47F5BDC0, 0x47F4B080, 0x47F3A340, - 0x47F29600, 0x47F188C0, 0x47F07B80, - 0x47EF6E40, 0x47EE6100, 0x47ED53C0, - 0x47EC4680, 0x47EB3940, 0x47EA2C00, - 0x47E91EC0, 0x47E81180, 0x47E70440, - 0x47E5F700, 0x47E4E9C0, 0x47E3DC80, - 0x47E2CF40, 0x47E1C200, 0x47E0B4C0, - 0x47DFA780, 0x47DE9A40, 0x47DD8D00, - 0x47DC7FC0, 0x47DB7280, 0x47DA6540, - 0x47D95800, 0x47D84AC0, 0x47D73D80, - 0x47D63040, 0x47D52300, 0x47D415C0, - 0x47D30880, 0x47D1FB40, 0x47D0EE00, - 0x47CFE0C0, 0x47CED380, 0x47CDC640, - 0x47CCB900, 0x47CBABC0, 0x47CA9E80, - 0x47C99140, 0x47C88400, 0x47C776C0, - 0x47C66980, 0x47C55C40, 0x47C44F00, - 0x47C341C0, 0x47C23480, 0x47C12740, - 0x47C01A00, 0x47BF0CC0, 0x47BDFF80, - 0x47BCF240, 0x47BBE500, 0x47BAD7C0, - 0x47B9CA80, 0x47B8BD40, 0x47B7B000, - 0x47B6A2C0, 0x47B59580, 0x47B48840, - 0x47B37B00, 0x47B26DC0, 0x47B16080, - 0x47B05340, 0x47AF4600, 0x47AE38C0, - 0x47AD2B80, 0x47AC1E40, 0x47AB1100, - 0x47AA03C0, 0x47A8F680, 0x47A7E940, - 0x47A6DC00, 0x47A5CEC0, 0x47A4C180, - 0x47A3B440, 0x47A2A700, 0x47A199C0, - 0x47A08C80, 0x479F7F40, 0x479E7200, - 0x479D64C0, 0x479C5780, 0x479B4A40, - 0x479A3D00, 0x47992FC0, 0x47982280, - 0x47971540, 0x47960800, 0x4794FAC0, - 0x4793ED80, 0x4792E040, 0x4791D300, - 0x4790C5C0, 0x478FB880, 0x478EAB40, - 0x478D9E00, 0x478C90C0, 0x478B8380, - 0x478A7640, 0x47896900, 0x47885BC0, - 0x47874E80, 0x47864140, 0x47853400, - 0x478426C0, 0x47831980, 0x47820C40, - 0x4780FF00, 0x477FF1C0, 0x477EE480, - 0x477DD740, 0x477CCA00, 0x477BBCC0, - 0x477AAF80, 0x4779A240, 0x47789500, - 0x477787C0, 0x47767A80, 0x47756D40, - 0x47746000, 0x477352C0, 0x47724580, - 0x47713840, 0x47702B00, 0x476F1DC0, - 0x476E1080, 0x476D0340, 0x476BF600, - 0x476AE8C0, 0x4769DB80, 0x4768CE40, - 0x4767C100, 0x4766B3C0, 0x4765A680, - 0x47649940, 0x47638C00, 0x47627EC0, - 0x47617180, 0x47606440, 0x475F5700, - 0x475E49C0, 0x475D3C80, 0x475C2F40, - 0x475B2200, 0x475A14C0, 0x47590780, - 0x4757FA40, 0x4756ED00, 0x4755DFC0, - 0x4754D280, 0x4753C540, 0x4752B800, - 0x4751AAC0, 0x47509D80, 0x474F9040, - 0x474E8300, 0x474D75C0, 0x474C6880, - 0x474B5B40, 0x474A4E00, 0x474940C0, - 0x47483380, 0x47472640, 0x47461900, - 0x47450BC0, 0x4743FE80, 0x4742F140, - 0x4741E400, 0x4740D6C0, 0x473FC980, - 0x473EBC40, 0x473DAF00, 0x473CA1C0, - 0x473B9480, 0x473A8740, 0x47397A00, - 0x47386CC0, 0x47375F80, 0x47365240, - 0x47354500, 0x473437C0, 0x47332A80, - 0x47321D40, 0x47311000, 0x473002C0, - 0x472EF580, 0x472DE840, 0x472CDB00, - 0x472BCDC0, 0x472AC080, 0x4729B340, - 0x4728A600, 0x472798C0, 0x47268B80, - 0x47257E40, 0x47247100, 0x472363C0, - 0x47225680, 0x47214940, 0x47203C00, - 0x471F2EC0, 0x471E2180, 0x471D1440, - 0x471C0700, 0x471AF9C0, 0x4719EC80, - 0x4718DF40, 0x4717D200, 0x4716C4C0, - 0x4715B780, 0x4714AA40, 0x47139D00, - 0x47128FC0, 0x47118280, 0x47107540, - 0x470F6800, 0x470E5AC0, 0x470D4D80, - 0x470C4040, 0x470B3300, 0x470A25C0, - 0x47091880, 0x47080B40, 0x4706FE00, - 0x4705F0C0, 0x4704E380, 0x4703D640, - 0x4702C900, 0x4701BBC0, 0x4700AE80, - 0x46FFA140, 0x46FE9400, 0x46FD86C0, - 0x46FC7980, 0x46FB6C40, 0x46FA5F00, - 0x46F951C0, 0x46F84480, 0x46F73740, - 0x46F62A00, 0x46F51CC0, 0x46F40F80, - 0x46F30240, 0x46F1F500, 0x46F0E7C0, - 0x46EFDA80, 0x46EECD40, 0x46EDC000, - 0x46ECB2C0, 0x46EBA580, 0x46EA9840, - 0x46E98B00, 0x46E87DC0, 0x46E77080, - 0x46E66340, 0x46E55600, 0x46E448C0, - 0x46E33B80, 0x46E22E40, 0x46E12100, - 0x46E013C0, 0x46DF0680, 0x46DDF940, - 0x46DCEC00, 0x46DBDEC0, 0x46DAD180, - 0x46D9C440, 0x46D8B700, 0x46D7A9C0, - 0x46D69C80, 0x46D58F40, 0x46D48200, - 0x46D374C0, 0x46D26780, 0x46D15A40, - 0x46D04D00, 0x46CF3FC0, 0x46CE3280, - 0x46CD2540, 0x46CC1800, 0x46CB0AC0, - 0x46C9FD80, 0x46C8F040, 0x46C7E300, - 0x46C6D5C0, 0x46C5C880, 0x46C4BB40, - 0x46C3AE00, 0x46C2A0C0, 0x46C19380, - 0x46C08640, 0x46BF7900, 0x46BE6BC0, - 0x46BD5E80, 0x46BC5140, 0x46BB4400, - 0x46BA36C0, 0x46B92980, 0x46B81C40, - 0x46B70F00, 0x46B601C0, 0x46B4F480, - 0x46B3E740, 0x46B2DA00, 0x46B1CCC0, - 0x46B0BF80, 0x46AFB240, 0x46AEA500, - 0x46AD97C0, 0x46AC8A80, 0x46AB7D40, - 0x46AA7000, 0x46A962C0, 0x46A85580, - 0x46A74840, 0x46A63B00, 0x46A52DC0, - 0x46A42080, 0x46A31340, 0x46A20600, - 0x46A0F8C0, 0x469FEB80, 0x469EDE40, - 0x469DD100, 0x469CC3C0, 0x469BB680, - 0x469AA940, 0x46999C00, 0x46988EC0, - 0x46978180, 0x46967440, 0x46956700, - 0x469459C0, 0x46934C80, 0x46923F40, - 0x46913200, 0x469024C0, 0x468F1780, - 0x468E0A40, 0x468CFD00, 0x468BEFC0, - 0x468AE280, 0x4689D540, 0x4688C800, - 0x4687BAC0, 0x4686AD80, 0x4685A040, - 0x46849300, 0x468385C0, 0x46827880, - 0x46816B40, 0x46805E00, 0x467F50C0, - 0x467E4380, 0x467D3640, 0x467C2900, - 0x467B1BC0, 0x467A0E80, 0x46790140, - 0x4677F400, 0x4676E6C0, 0x4675D980, - 0x4674CC40, 0x4673BF00, 0x4672B1C0, - 0x4671A480, 0x46709740, 0x466F8A00, - 0x466E7CC0, 0x466D6F80, 0x466C6240, - 0x466B5500, 0x466A47C0, 0x46693A80, - 0x46682D40, 0x46672000, 0x466612C0, - 0x46650580, 0x4663F840, 0x4662EB00, - 0x4661DDC0, 0x4660D080, 0x465FC340, - 0x465EB600, 0x465DA8C0, 0x465C9B80, - 0x465B8E40, 0x465A8100, 0x465973C0, - 0x46586680, 0x46575940, 0x46564C00, - 0x46553EC0, 0x46543180, 0x46532440, - 0x46521700, 0x465109C0, 0x464FFC80, - 0x464EEF40, 0x464DE200, 0x464CD4C0, - 0x464BC780, 0x464ABA40, 0x4649AD00, - 0x46489FC0, 0x46479280, 0x46468540, - 0x46457800, 0x46446AC0, 0x46435D80, - 0x46425040, 0x46414300, 0x464035C0, - 0x463F2880, 0x463E1B40, 0x463D0E00, - 0x463C00C0, 0x463AF380, 0x4639E640, - 0x4638D900, 0x4637CBC0, 0x4636BE80, - 0x4635B140, 0x4634A400, 0x463396C0, - 0x46328980, 0x46317C40, 0x46306F00, - 0x462F61C0, 0x462E5480, 0x462D4740, - 0x462C3A00, 0x462B2CC0, 0x462A1F80, - 0x46291240, 0x46280500, 0x4626F7C0, - 0x4625EA80, 0x4624DD40, 0x4623D000, - 0x4622C2C0, 0x4621B580, 0x4620A840, - 0x461F9B00, 0x461E8DC0, 0x461D8080, - 0x461C7340, 0x461B6600, 0x461A58C0, - 0x46194B80, 0x46183E40, 0x46173100, - 0x461623C0, 0x46151680, 0x46140940, - 0x4612FC00, 0x4611EEC0, 0x4610E180, - 0x460FD440, 0x460EC700, 0x460DB9C0, - 0x460CAC80, 0x460B9F40, 0x460A9200, - 0x460984C0, 0x46087780, 0x46076A40, - 0x46065D00, 0x46054FC0, 0x46044280, - 0x46033540, 0x46022800, 0x46011AC0, - 0x46000D80, 0x45FF0040, 0x45FDF300, - 0x45FCE5C0, 0x45FBD880, 0x45FACB40, - 0x45F9BE00, 0x45F8B0C0, 0x45F7A380, - 0x45F69640, 0x45F58900, 0x45F47BC0, - 0x45F36E80, 0x45F26140, 0x45F15400, - 0x45F046C0, 0x45EF3980, 0x45EE2C40, - 0x45ED1F00, 0x45EC11C0, 0x45EB0480, - 0x45E9F740, 0x45E8EA00, 0x45E7DCC0, - 0x45E6CF80, 0x45E5C240, 0x45E4B500, - 0x45E3A7C0, 0x45E29A80, 0x45E18D40, - 0x45E08000, 0x45DF72C0, 0x45DE6580, - 0x45DD5840, 0x45DC4B00, 0x45DB3DC0, - 0x45DA3080, 0x45D92340, 0x45D81600, - 0x45D708C0, 0x45D5FB80, 0x45D4EE40, - 0x45D3E100, 0x45D2D3C0, 0x45D1C680, - 0x45D0B940, 0x45CFAC00, 0x45CE9EC0, - 0x45CD9180, 0x45CC8440, 0x45CB7700, - 0x45CA69C0, 0x45C95C80, 0x45C84F40, - 0x45C74200, 0x45C634C0, 0x45C52780, - 0x45C41A40, 0x45C30D00, 0x45C1FFC0, - 0x45C0F280, 0x45BFE540, 0x45BED800, - 0x45BDCAC0, 0x45BCBD80, 0x45BBB040, - 0x45BAA300, 0x45B995C0, 0x45B88880, - 0x45B77B40, 0x45B66E00, 0x45B560C0, - 0x45B45380, 0x45B34640, 0x45B23900, - 0x45B12BC0, 0x45B01E80, 0x45AF1140, - 0x45AE0400, 0x45ACF6C0, 0x45ABE980, - 0x45AADC40, 0x45A9CF00, 0x45A8C1C0, - 0x45A7B480, 0x45A6A740, 0x45A59A00, - 0x45A48CC0, 0x45A37F80, 0x45A27240, - 0x45A16500, 0x45A057C0, 0x459F4A80, - 0x459E3D40, 0x459D3000, 0x459C22C0, - 0x459B1580, 0x459A0840, 0x4598FB00, - 0x4597EDC0, 0x4596E080, 0x4595D340, - 0x4594C600, 0x4593B8C0, 0x4592AB80, - 0x45919E40, 0x45909100, 0x458F83C0, - 0x458E7680, 0x458D6940, 0x458C5C00, - 0x458B4EC0, 0x458A4180, 0x45893440, - 0x45882700, 0x458719C0, 0x45860C80, - 0x4584FF40, 0x4583F200, 0x4582E4C0, - 0x4581D780, 0x4580CA40, 0x457FBD00, - 0x457EAFC0, 0x457DA280, 0x457C9540, - 0x457B8800, 0x457A7AC0, 0x45796D80, - 0x45786040, 0x45775300, 0x457645C0, - 0x45753880, 0x45742B40, 0x45731E00, - 0x457210C0, 0x45710380, 0x456FF640, - 0x456EE900, 0x456DDBC0, 0x456CCE80, - 0x456BC140, 0x456AB400, 0x4569A6C0, - 0x45689980, 0x45678C40, 0x45667F00, - 0x456571C0, 0x45646480, 0x45635740, - 0x45624A00, 0x45613CC0, 0x45602F80, - 0x455F2240, 0x455E1500, 0x455D07C0, - 0x455BFA80, 0x455AED40, 0x4559E000, - 0x4558D2C0, 0x4557C580, 0x4556B840, - 0x4555AB00, 0x45549DC0, 0x45539080, - 0x45528340, 0x45517600, 0x455068C0, - 0x454F5B80, 0x454E4E40, 0x454D4100, - 0x454C33C0, 0x454B2680, 0x454A1940, - 0x45490C00, 0x4547FEC0, 0x4546F180, - 0x4545E440, 0x4544D700, 0x4543C9C0, - 0x4542BC80, 0x4541AF40, 0x4540A200, - 0x453F94C0, 0x453E8780, 0x453D7A40, - 0x453C6D00, 0x453B5FC0, 0x453A5280, - 0x45394540, 0x45383800, 0x45372AC0, - 0x45361D80, 0x45351040, 0x45340300, - 0x4532F5C0, 0x4531E880, 0x4530DB40, - 0x452FCE00, 0x452EC0C0, 0x452DB380, - 0x452CA640, 0x452B9900, 0x452A8BC0, - 0x45297E80, 0x45287140, 0x45276400, - 0x452656C0, 0x45254980, 0x45243C40, - 0x45232F00, 0x452221C0, 0x45211480, - 0x45200740, 0x451EFA00, 0x451DECC0, - 0x451CDF80, 0x451BD240, 0x451AC500, - 0x4519B7C0, 0x4518AA80, 0x45179D40, - 0x45169000, 0x451582C0, 0x45147580, - 0x45136840, 0x45125B00, 0x45114DC0, - 0x45104080, 0x450F3340, 0x450E2600, - 0x450D18C0, 0x450C0B80, 0x450AFE40, - 0x4509F100, 0x4508E3C0, 0x4507D680, - 0x4506C940, 0x4505BC00, 0x4504AEC0, - 0x4503A180, 0x45029440, 0x45018700, - 0x450079C0, 0x44FF6C80, 0x44FE5F40, - 0x44FD5200, 0x44FC44C0, 0x44FB3780, - 0x44FA2A40, 0x44F91D00, 0x44F80FC0, - 0x44F70280, 0x44F5F540, 0x44F4E800, - 0x44F3DAC0, 0x44F2CD80, 0x44F1C040, - 0x44F0B300, 0x44EFA5C0, 0x44EE9880, - 0x44ED8B40, 0x44EC7E00, 0x44EB70C0, - 0x44EA6380, 0x44E95640, 0x44E84900, - 0x44E73BC0, 0x44E62E80, 0x44E52140, - 0x44E41400, 0x44E306C0, 0x44E1F980, - 0x44E0EC40, 0x44DFDF00, 0x44DED1C0, - 0x44DDC480, 0x44DCB740, 0x44DBAA00, - 0x44DA9CC0, 0x44D98F80, 0x44D88240, - 0x44D77500, 0x44D667C0, 0x44D55A80, - 0x44D44D40, 0x44D34000, 0x44D232C0, - 0x44D12580, 0x44D01840, 0x44CF0B00, - 0x44CDFDC0, 0x44CCF080, 0x44CBE340, - 0x44CAD600, 0x44C9C8C0, 0x44C8BB80, - 0x44C7AE40, 0x44C6A100, 0x44C593C0, - 0x44C48680, 0x44C37940, 0x44C26C00, - 0x44C15EC0, 0x44C05180, 0x44BF4440, - 0x44BE3700, 0x44BD29C0, 0x44BC1C80, - 0x44BB0F40, 0x44BA0200, 0x44B8F4C0, - 0x44B7E780, 0x44B6DA40, 0x44B5CD00, - 0x44B4BFC0, 0x44B3B280, 0x44B2A540, - 0x44B19800, 0x44B08AC0, 0x44AF7D80, - 0x44AE7040, 0x44AD6300, 0x44AC55C0, - 0x44AB4880, 0x44AA3B40, 0x44A92E00, - 0x44A820C0, 0x44A71380, 0x44A60640, - 0x44A4F900, 0x44A3EBC0, 0x44A2DE80, - 0x44A1D140, 0x44A0C400, 0x449FB6C0, - 0x449EA980, 0x449D9C40, 0x449C8F00, - 0x449B81C0, 0x449A7480, 0x44996740, - 0x44985A00, 0x44974CC0, 0x44963F80, - 0x44953240, 0x44942500, 0x449317C0, - 0x44920A80, 0x4490FD40, 0x448FF000, - 0x448EE2C0, 0x448DD580, 0x448CC840, - 0x448BBB00, 0x448AADC0, 0x4489A080, - 0x44889340, 0x44878600, 0x448678C0, - 0x44856B80, 0x44845E40, 0x44835100, - 0x448243C0, 0x44813680, 0x44802940, - 0x447F1C00, 0x447E0EC0, 0x447D0180, - 0x447BF440, 0x447AE700, 0x4479D9C0, - 0x4478CC80, 0x4477BF40, 0x4476B200, - 0x4475A4C0, 0x44749780, 0x44738A40, - 0x44727D00, 0x44716FC0, 0x44706280, - 0x446F5540, 0x446E4800, 0x446D3AC0, - 0x446C2D80, 0x446B2040, 0x446A1300, - 0x446905C0, 0x4467F880, 0x4466EB40, - 0x4465DE00, 0x4464D0C0, 0x4463C380, - 0x4462B640, 0x4461A900, 0x44609BC0, - 0x445F8E80, 0x445E8140, 0x445D7400, - 0x445C66C0, 0x445B5980, 0x445A4C40, - 0x44593F00, 0x445831C0, 0x44572480, - 0x44561740, 0x44550A00, 0x4453FCC0, - 0x4452EF80, 0x4451E240, 0x4450D500, - 0x444FC7C0, 0x444EBA80, 0x444DAD40, - 0x444CA000, 0x444B92C0, 0x444A8580, - 0x44497840, 0x44486B00, 0x44475DC0, - 0x44465080, 0x44454340, 0x44443600, - 0x444328C0, 0x44421B80, 0x44410E40, - 0x44400100, 0x443EF3C0, 0x443DE680, - 0x443CD940, 0x443BCC00, 0x443ABEC0, - 0x4439B180, 0x4438A440, 0x44379700, - 0x443689C0, 0x44357C80, 0x44346F40, - 0x44336200, 0x443254C0, 0x44314780, - 0x44303A40, 0x442F2D00, 0x442E1FC0, - 0x442D1280, 0x442C0540, 0x442AF800, - 0x4429EAC0, 0x4428DD80, 0x4427D040, - 0x4426C300, 0x4425B5C0, 0x4424A880, - 0x44239B40, 0x44228E00, 0x442180C0, - 0x44207380, 0x441F6640, 0x441E5900, - 0x441D4BC0, 0x441C3E80, 0x441B3140, - 0x441A2400, 0x441916C0, 0x44180980, - 0x4416FC40, 0x4415EF00, 0x4414E1C0, - 0x4413D480, 0x4412C740, 0x4411BA00, - 0x4410ACC0, 0x440F9F80, 0x440E9240, - 0x440D8500, 0x440C77C0, 0x440B6A80, - 0x440A5D40, 0x44095000, 0x440842C0, - 0x44073580, 0x44062840, 0x44051B00, - 0x44040DC0, 0x44030080, 0x4401F340, - 0x4400E600, 0x43FFD8C0, 0x43FECB80, - 0x43FDBE40, 0x43FCB100, 0x43FBA3C0, - 0x43FA9680, 0x43F98940, 0x43F87C00, - 0x43F76EC0, 0x43F66180, 0x43F55440, - 0x43F44700, 0x43F339C0, 0x43F22C80, - 0x43F11F40, 0x43F01200, 0x43EF04C0, - 0x43EDF780, 0x43ECEA40, 0x43EBDD00, - 0x43EACFC0, 0x43E9C280, 0x43E8B540, - 0x43E7A800, 0x43E69AC0, 0x43E58D80, - 0x43E48040, 0x43E37300, 0x43E265C0, - 0x43E15880, 0x43E04B40, 0x43DF3E00, - 0x43DE30C0, 0x43DD2380, 0x43DC1640, - 0x43DB0900, 0x43D9FBC0, 0x43D8EE80, - 0x43D7E140, 0x43D6D400, 0x43D5C6C0, - 0x43D4B980, 0x43D3AC40, 0x43D29F00, - 0x43D191C0, 0x43D08480, 0x43CF7740, - 0x43CE6A00, 0x43CD5CC0, 0x43CC4F80, - 0x43CB4240, 0x43CA3500, 0x43C927C0, - 0x43C81A80, 0x43C70D40, 0x43C80000, - 0x43C70640, 0x43C60C80, 0x43C512C0, - 0x43C41900, 0x43C31F40, 0x43C22580, - 0x43C12BC0, 0x43C03200, 0x43BF3840, - 0x43BE3E80, 0x43BD44C0, 0x43BC4B00, - 0x43BB5140, 0x43BA5780, 0x43B95DC0, - 0x43B86400, 0x43B76A40, 0x43B67080, - 0x43B576C0, 0x43B47D00, 0x43B38340, - 0x43B28980, 0x43B18FC0, 0x43B09600, - 0x43AF9C40, 0x43AEA280, 0x43ADA8C0, - 0x43ACAF00, 0x43ABB540, 0x43AABB80, - 0x43A9C1C0, 0x43A8C800, 0x43A7CE40, - 0x43A6D480, 0x43A5DAC0, 0x43A4E100, - 0x43A3E740, 0x43A2ED80, 0x43A1F3C0, - 0x43A0FA00, 0x43A00040, 0x439F0680, - 0x439E0CC0, 0x439D1300, 0x439C1940, - 0x439B1F80, 0x439A25C0, 0x43992C00, - 0x43983240, 0x43973880, 0x43963EC0, - 0x43954500, 0x43944B40, 0x43935180, - 0x439257C0, 0x43915E00, 0x43906440, - 0x438F6A80, 0x438E70C0, 0x438D7700, - 0x438C7D40, 0x438B8380, 0x438A89C0, - 0x43899000, 0x43889640, 0x43879C80, - 0x4386A2C0, 0x4385A900, 0x4384AF40, - 0x4383B580, 0x4382BBC0, 0x4381C200, - 0x4380C840, 0x437FCE80, 0x437ED4C0, - 0x437DDB00, 0x437CE140, 0x437BE780, - 0x437AEDC0, 0x4379F400, 0x4378FA40, - 0x43780080, 0x437706C0, 0x43760D00, - 0x43751340, 0x43741980, 0x43731FC0, - 0x43722600, 0x43712C40, 0x43703280, - 0x436F38C0, 0x436E3F00, 0x436D4540, - 0x436C4B80, 0x436B51C0, 0x436A5800, - 0x43695E40, 0x43686480, 0x43676AC0, - 0x43667100, 0x43657740, 0x43647D80, - 0x436383C0, 0x43628A00, 0x43619040, - 0x43609680, 0x435F9CC0, 0x435EA300, - 0x435DA940, 0x435CAF80, 0x435BB5C0, - 0x435ABC00, 0x4359C240, 0x4358C880, - 0x4357CEC0, 0x4356D500, 0x4355DB40, - 0x4354E180, 0x4353E7C0, 0x4352EE00, - 0x4351F440, 0x4350FA80, 0x435000C0, - 0x434F0700, 0x434E0D40, 0x434D1380, - 0x434C19C0, 0x434B2000, 0x434A2640, - 0x43492C80, 0x434832C0, 0x43473900, - 0x43463F40, 0x43454580, 0x43444BC0, - 0x43435200, 0x43425840, 0x43415E80, - 0x434064C0, 0x433F6B00, 0x433E7140, - 0x433D7780, 0x433C7DC0, 0x433B8400, - 0x433A8A40, 0x43399080, 0x433896C0, - 0x43379D00, 0x4336A340, 0x4335A980, - 0x4334AFC0, 0x4333B600, 0x4332BC40, - 0x4331C280, 0x4330C8C0, 0x432FCF00, - 0x432ED540, 0x432DDB80, 0x432CE1C0, - 0x432BE800, 0x432AEE40, 0x4329F480, - 0x4328FAC0, 0x43280100, 0x43270740, - 0x43260D80, 0x432513C0, 0x43241A00, - 0x43232040, 0x43222680, 0x43212CC0, - 0x43203300, 0x431F3940, 0x431E3F80, - 0x431D45C0, 0x431C4C00, 0x431B5240, - 0x431A5880, 0x43195EC0, 0x43186500, - 0x43176B40, 0x43167180, 0x431577C0, - 0x43147E00, 0x43138440, 0x43128A80, - 0x431190C0, 0x43109700, 0x430F9D40, - 0x430EA380, 0x430DA9C0, 0x430CB000, - 0x430BB640, 0x430ABC80, 0x4309C2C0, - 0x4308C900, 0x4307CF40, 0x4306D580, - 0x4305DBC0, 0x4304E200, 0x4303E840, - 0x4302EE80, 0x4301F4C0, 0x4300FB00, - 0x43000140, 0x42FF0780, 0x42FE0DC0, - 0x42FD1400, 0x42FC1A40, 0x42FB2080, - 0x42FA26C0, 0x42F92D00, 0x42F83340, - 0x42F73980, 0x42F63FC0, 0x42F54600, - 0x42F44C40, 0x42F35280, 0x42F258C0, - 0x42F15F00, 0x42F06540, 0x42EF6B80, - 0x42EE71C0, 0x42ED7800, 0x42EC7E40, - 0x42EB8480, 0x42EA8AC0, 0x42E99100, - 0x42E89740, 0x42E79D80, 0x42E6A3C0, - 0x42E5AA00, 0x42E4B040, 0x42E3B680, - 0x42E2BCC0, 0x42E1C300, 0x42E0C940, - 0x42DFCF80, 0x42DED5C0, 0x42DDDC00, - 0x42DCE240, 0x42DBE880, 0x42DAEEC0, - 0x42D9F500, 0x42D8FB40, 0x42D80180, - 0x42D707C0, 0x42D60E00, 0x42D51440, - 0x42D41A80, 0x42D320C0, 0x42D22700, - 0x42D12D40, 0x42D03380, 0x42CF39C0, - 0x42CE4000, 0x42CD4640, 0x42CC4C80, - 0x42CB52C0, 0x42CA5900, 0x42C95F40, - 0x42C86580, 0x42C76BC0, 0x42C67200, - 0x42C57840, 0x42C47E80, 0x42C384C0, - 0x42C28B00, 0x42C19140, 0x42C09780, - 0x42BF9DC0, 0x42BEA400, 0x42BDAA40, - 0x42BCB080, 0x42BBB6C0, 0x42BABD00, - 0x42B9C340, 0x42B8C980, 0x42B7CFC0, - 0x42B6D600, 0x42B5DC40, 0x42B4E280, - 0x42B3E8C0, 0x42B2EF00, 0x42B1F540, - 0x42B0FB80, 0x42B001C0, 0x42AF0800, - 0x42AE0E40, 0x42AD1480, 0x42AC1AC0, - 0x42AB2100, 0x42AA2740, 0x42A92D80, - 0x42A833C0, 0x42A73A00, 0x42A64040, - 0x42A54680, 0x42A44CC0, 0x42A35300, - 0x42A25940, 0x42A15F80, 0x42A065C0, - 0x429F6C00, 0x429E7240, 0x429D7880, - 0x429C7EC0, 0x429B8500, 0x429A8B40, - 0x42999180, 0x429897C0, 0x42979E00, - 0x4296A440, 0x4295AA80, 0x4294B0C0, - 0x4293B700, 0x4292BD40, 0x4291C380, - 0x4290C9C0, 0x428FD000, 0x428ED640, - 0x428DDC80, 0x428CE2C0, 0x428BE900, - 0x428AEF40, 0x4289F580, 0x4288FBC0, - 0x42880200, 0x42870840, 0x42860E80, - 0x428514C0, 0x42841B00, 0x42832140, - 0x42822780, 0x42812DC0, 0x42803400, - 0x427F3A40, 0x427E4080, 0x427D46C0, - 0x427C4D00, 0x427B5340, 0x427A5980, - 0x42795FC0, 0x42786600, 0x42776C40, - 0x42767280, 0x427578C0, 0x42747F00, - 0x42738540, 0x42728B80, 0x427191C0, - 0x42709800, 0x426F9E40, 0x426EA480, - 0x426DAAC0, 0x426CB100, 0x426BB740, - 0x426ABD80, 0x4269C3C0, 0x4268CA00, - 0x4267D040, 0x4266D680, 0x4265DCC0, - 0x4264E300, 0x4263E940, 0x4262EF80, - 0x4261F5C0, 0x4260FC00, 0x42600240, - 0x425F0880, 0x425E0EC0, 0x425D1500, - 0x425C1B40, 0x425B2180, 0x425A27C0, - 0x42592E00, 0x42583440, 0x42573A80, - 0x425640C0, 0x42554700, 0x42544D40, - 0x42535380, 0x425259C0, 0x42516000, - 0x42506640, 0x424F6C80, 0x424E72C0, - 0x424D7900, 0x424C7F40, 0x424B8580, - 0x424A8BC0, 0x42499200, 0x42489840, - 0x42479E80, 0x4246A4C0, 0x4245AB00, - 0x4244B140, 0x4243B780, 0x4242BDC0, - 0x4241C400, 0x4240CA40, 0x423FD080, - 0x423ED6C0, 0x423DDD00, 0x423CE340, - 0x423BE980, 0x423AEFC0, 0x4239F600, - 0x4238FC40, 0x42380280, 0x423708C0, - 0x42360F00, 0x42351540, 0x42341B80, - 0x423321C0, 0x42322800, 0x42312E40, - 0x42303480, 0x422F3AC0, 0x422E4100, - 0x422D4740, 0x422C4D80, 0x422B53C0, - 0x422A5A00, 0x42296040, 0x42286680, - 0x42276CC0, 0x42267300, 0x42257940, - 0x42247F80, 0x422385C0, 0x42228C00, - 0x42219240, 0x42209880, 0x421F9EC0, - 0x421EA500, 0x421DAB40, 0x421CB180, - 0x421BB7C0, 0x421ABE00, 0x4219C440, - 0x4218CA80, 0x4217D0C0, 0x4216D700, - 0x4215DD40, 0x4214E380, 0x4213E9C0, - 0x4212F000, 0x4211F640, 0x4210FC80, - 0x421002C0, 0x420F0900, 0x420E0F40, - 0x420D1580, 0x420C1BC0, 0x420B2200, - 0x420A2840, 0x42092E80, 0x420834C0, - 0x42073B00, 0x42064140, 0x42054780, - 0x42044DC0, 0x42035400, 0x42025A40, - 0x42016080, 0x420066C0, 0x41FF6D00, - 0x41FE7340, 0x41FD7980, 0x41FC7FC0, - 0x41FB8600, 0x41FA8C40, 0x41F99280, - 0x41F898C0, 0x41F79F00, 0x41F6A540, - 0x41F5AB80, 0x41F4B1C0, 0x41F3B800, - 0x41F2BE40, 0x41F1C480, 0x41F0CAC0, - 0x41EFD100, 0x41EED740, 0x41EDDD80, - 0x41ECE3C0, 0x41EBEA00, 0x41EAF040, - 0x41E9F680, 0x41E8FCC0, 0x41E80300, - 0x41E70940, 0x41E60F80, 0x41E515C0, - 0x41E41C00, 0x41E32240, 0x41E22880, - 0x41E12EC0, 0x41E03500, 0x41DF3B40, - 0x41DE4180, 0x41DD47C0, 0x41DC4E00, - 0x41DB5440, 0x41DA5A80, 0x41D960C0, - 0x41D86700, 0x41D76D40, 0x41D67380, - 0x41D579C0, 0x41D48000, 0x41D38640, - 0x41D28C80, 0x41D192C0, 0x41D09900, - 0x41CF9F40, 0x41CEA580, 0x41CDABC0, - 0x41CCB200, 0x41CBB840, 0x41CABE80, - 0x41C9C4C0, 0x41C8CB00, 0x41C7D140, - 0x41C6D780, 0x41C5DDC0, 0x41C4E400, - 0x41C3EA40, 0x41C2F080, 0x41C1F6C0, - 0x41C0FD00, 0x41C00340, 0x41BF0980, - 0x41BE0FC0, 0x41BD1600, 0x41BC1C40, - 0x41BB2280, 0x41BA28C0, 0x41B92F00, - 0x41B83540, 0x41B73B80, 0x41B641C0, - 0x41B54800, 0x41B44E40, 0x41B35480, - 0x41B25AC0, 0x41B16100, 0x41B06740, - 0x41AF6D80, 0x41AE73C0, 0x41AD7A00, - 0x41AC8040, 0x41AB8680, 0x41AA8CC0, - 0x41A99300, 0x41A89940, 0x41A79F80, - 0x41A6A5C0, 0x41A5AC00, 0x41A4B240, - 0x41A3B880, 0x41A2BEC0, 0x41A1C500, - 0x41A0CB40, 0x419FD180, 0x419ED7C0, - 0x419DDE00, 0x419CE440, 0x419BEA80, - 0x419AF0C0, 0x4199F700, 0x4198FD40, - 0x41980380, 0x419709C0, 0x41961000, - 0x41951640, 0x41941C80, 0x419322C0, - 0x41922900, 0x41912F40, 0x41903580, - 0x418F3BC0, 0x418E4200, 0x418D4840, - 0x418C4E80, 0x418B54C0, 0x418A5B00, - 0x41896140, 0x41886780, 0x41876DC0, - 0x41867400, 0x41857A40, 0x41848080, - 0x418386C0, 0x41828D00, 0x41819340, - 0x41809980, 0x417F9FC0, 0x417EA600, - 0x417DAC40, 0x417CB280, 0x417BB8C0, - 0x417ABF00, 0x4179C540, 0x4178CB80, - 0x4177D1C0, 0x4176D800, 0x4175DE40, - 0x4174E480, 0x4173EAC0, 0x4172F100, - 0x4171F740, 0x4170FD80, 0x417003C0, - 0x416F0A00, 0x416E1040, 0x416D1680, - 0x416C1CC0, 0x416B2300, 0x416A2940, - 0x41692F80, 0x416835C0, 0x41673C00, - 0x41664240, 0x41654880, 0x41644EC0, - 0x41635500, 0x41625B40, 0x41616180, - 0x416067C0, 0x415F6E00, 0x415E7440, - 0x415D7A80, 0x415C80C0, 0x415B8700, - 0x415A8D40, 0x41599380, 0x415899C0, - 0x4157A000, 0x4156A640, 0x4155AC80, - 0x4154B2C0, 0x4153B900, 0x4152BF40, - 0x4151C580, 0x4150CBC0, 0x414FD200, - 0x414ED840, 0x414DDE80, 0x414CE4C0, - 0x414BEB00, 0x414AF140, 0x4149F780, - 0x4148FDC0, 0x41480400, 0x41470A40, - 0x41461080, 0x414516C0, 0x41441D00, - 0x41432340, 0x41422980, 0x41412FC0, - 0x41403600, 0x413F3C40, 0x413E4280, - 0x413D48C0, 0x413C4F00, 0x413B5540, - 0x413A5B80, 0x413961C0, 0x41386800, - 0x41376E40, 0x41367480, 0x41357AC0, - 0x41348100, 0x41338740, 0x41328D80, - 0x413193C0, 0x41309A00, 0x412FA040, - 0x412EA680, 0x412DACC0, 0x412CB300, - 0x412BB940, 0x412ABF80, 0x4129C5C0, - 0x4128CC00, 0x4127D240, 0x4126D880, - 0x4125DEC0, 0x4124E500, 0x4123EB40, - 0x4122F180, 0x4121F7C0, 0x4120FE00, - 0x41200440, 0x411F0A80, 0x411E10C0, - 0x411D1700, 0x411C1D40, 0x411B2380, - 0x411A29C0, 0x41193000, 0x41183640, - 0x41173C80, 0x411642C0, 0x41154900, - 0x41144F40, 0x41135580, 0x41125BC0, - 0x41116200, 0x41106840, 0x410F6E80, - 0x410E74C0, 0x410D7B00, 0x410C8140, - 0x410B8780, 0x410A8DC0, 0x41099400, - 0x41089A40, 0x4107A080, 0x4106A6C0, - 0x4105AD00, 0x4104B340, 0x4103B980, - 0x4102BFC0, 0x4101C600, 0x4100CC40, - 0x40FFD280, 0x40FED8C0, 0x40FDDF00, - 0x40FCE540, 0x40FBEB80, 0x40FAF1C0, - 0x40F9F800, 0x40F8FE40, 0x40F80480, - 0x40F70AC0, 0x40F61100, 0x40F51740, - 0x40F41D80, 0x40F323C0, 0x40F22A00, - 0x40F13040, 0x40F03680, 0x40EF3CC0, - 0x40EE4300, 0x40ED4940, 0x40EC4F80, - 0x40EB55C0, 0x40EA5C00, 0x40E96240, - 0x40E86880, 0x40E76EC0, 0x40E67500, - 0x40E57B40, 0x40E48180, 0x40E387C0, - 0x40E28E00, 0x40E19440, 0x40E09A80, - 0x40DFA0C0, 0x40DEA700, 0x40DDAD40, - 0x40DCB380, 0x40DBB9C0, 0x40DAC000, - 0x40D9C640, 0x40D8CC80, 0x40D7D2C0, - 0x40D6D900, 0x40D5DF40, 0x40D4E580, - 0x40D3EBC0, 0x40D2F200, 0x40D1F840, - 0x40D0FE80, 0x40D004C0, 0x40CF0B00, - 0x40CE1140, 0x40CD1780, 0x40CC1DC0, - 0x40CB2400, 0x40CA2A40, 0x40C93080, - 0x40C836C0, 0x40C73D00, 0x40C64340, - 0x40C54980, 0x40C44FC0, 0x40C35600, - 0x40C25C40, 0x40C16280, 0x40C068C0, - 0x40BF6F00, 0x40BE7540, 0x40BD7B80, - 0x40BC81C0, 0x40BB8800, 0x40BA8E40, - 0x40B99480, 0x40B89AC0, 0x40B7A100, - 0x40B6A740, 0x40B5AD80, 0x40B4B3C0, - 0x40B3BA00, 0x40B2C040, 0x40B1C680, - 0x40B0CCC0, 0x40AFD300, 0x40AED940, - 0x40ADDF80, 0x40ACE5C0, 0x40ABEC00, - 0x40AAF240, 0x40A9F880, 0x40A8FEC0, - 0x40A80500, 0x40A70B40, 0x40A61180, - 0x40A517C0, 0x40A41E00, 0x40A32440, - 0x40A22A80, 0x40A130C0, 0x40A03700, - 0x409F3D40, 0x409E4380, 0x409D49C0, - 0x409C5000, 0x409B5640, 0x409A5C80, - 0x409962C0, 0x40986900, 0x40976F40, - 0x40967580, 0x40957BC0, 0x40948200, - 0x40938840, 0x40928E80, 0x409194C0, - 0x40909B00, 0x408FA140, 0x408EA780, - 0x408DADC0, 0x408CB400, 0x408BBA40, - 0x408AC080, 0x4089C6C0, 0x4088CD00, - 0x4087D340, 0x4086D980, 0x4085DFC0, - 0x4084E600, 0x4083EC40, 0x4082F280, - 0x4081F8C0, 0x4080FF00, 0x40800540, - 0x407F0B80, 0x407E11C0, 0x407D1800, - 0x407C1E40, 0x407B2480, 0x407A2AC0, - 0x40793100, 0x40783740, 0x40773D80, - 0x407643C0, 0x40754A00, 0x40745040, - 0x40735680, 0x40725CC0, 0x40716300, - 0x40706940, 0x406F6F80, 0x406E75C0, - 0x406D7C00, 0x406C8240, 0x406B8880, - 0x406A8EC0, 0x40699500, 0x40689B40, - 0x4067A180, 0x4066A7C0, 0x4065AE00, - 0x4064B440, 0x4063BA80, 0x4062C0C0, - 0x4061C700, 0x4060CD40, 0x405FD380, - 0x405ED9C0, 0x405DE000, 0x405CE640, - 0x405BEC80, 0x405AF2C0, 0x4059F900, - 0x4058FF40, 0x40580580, 0x40570BC0, - 0x40561200, 0x40551840, 0x40541E80, - 0x405324C0, 0x40522B00, 0x40513140, - 0x40503780, 0x404F3DC0, 0x404E4400, - 0x404D4A40, 0x404C5080, 0x404B56C0, - 0x404A5D00, 0x40496340, 0x40486980, - 0x40476FC0, 0x40467600, 0x40457C40, - 0x40448280, 0x404388C0, 0x40428F00, - 0x40419540, 0x40409B80, 0x403FA1C0, - 0x403EA800, 0x403DAE40, 0x403CB480, - 0x403BBAC0, 0x403AC100, 0x4039C740, - 0x4038CD80, 0x4037D3C0, 0x4036DA00, - 0x4035E040, 0x4034E680, 0x4033ECC0, - 0x4032F300, 0x4031F940, 0x4030FF80, - 0x403005C0, 0x402F0C00, 0x402E1240, - 0x402D1880, 0x402C1EC0, 0x402B2500, - 0x402A2B40, 0x40293180, 0x402837C0, - 0x40273E00, 0x40264440, 0x40254A80, - 0x402450C0, 0x40235700, 0x40225D40, - 0x40216380, 0x402069C0, 0x401F7000, - 0x401E7640, 0x401D7C80, 0x401C82C0, - 0x401B8900, 0x401A8F40, 0x40199580, - 0x40189BC0, 0x4017A200, 0x4016A840, - 0x4015AE80, 0x4014B4C0, 0x4013BB00, - 0x4012C140, 0x4011C780, 0x4010CDC0, - 0x400FD400, 0x400EDA40, 0x400DE080, - 0x400CE6C0, 0x400BED00, 0x400AF340, - 0x4009F980, 0x4008FFC0, 0x40080600, - 0x40070C40, 0x40061280, 0x400518C0, - 0x40041F00, 0x40032540, 0x40022B80, - 0x400131C0, 0x40003800, 0x3FFF3E40, - 0x3FFE4480, 0x3FFD4AC0, 0x3FFC5100, - 0x3FFB5740, 0x3FFA5D80, 0x3FF963C0, - 0x3FF86A00, 0x3FF77040, 0x3FF67680, - 0x3FF57CC0, 0x3FF48300, 0x3FF38940, - 0x3FF28F80, 0x3FF195C0, 0x3FF09C00, - 0x3FEFA240, 0x3FEEA880, 0x3FEDAEC0, - 0x3FECB500, 0x3FEBBB40, 0x3FEAC180, - 0x3FE9C7C0, 0x3FE8CE00, 0x3FE7D440, - 0x3FE6DA80, 0x3FE5E0C0, 0x3FE4E700, - 0x3FE3ED40, 0x3FE2F380, 0x3FE1F9C0, - 0x3FE10000, 0x3FE00640, 0x3FDF0C80, - 0x3FDE12C0, 0x3FDD1900, 0x3FDC1F40, - 0x3FDB2580, 0x3FDA2BC0, 0x3FD93200, - 0x3FD83840, 0x3FD73E80, 0x3FD644C0, - 0x3FD54B00, 0x3FD45140, 0x3FD35780, - 0x3FD25DC0, 0x3FD16400, 0x3FD06A40, - 0x3FCF7080, 0x3FCE76C0, 0x3FCD7D00, - 0x3FCC8340, 0x3FCB8980, 0x3FCA8FC0, - 0x3FC99600, 0x3FC89C40, 0x3FC7A280, - 0x3FC6A8C0, 0x3FC5AF00, 0x3FC4B540, - 0x3FC3BB80, 0x3FC2C1C0, 0x3FC1C800, - 0x3FC0CE40, 0x3FBFD480, 0x3FBEDAC0, - 0x3FBDE100, 0x3FBCE740, 0x3FBBED80, - 0x3FBAF3C0, 0x3FB9FA00, 0x3FB90040, - 0x3FB80680, 0x3FB70CC0, 0x3FB61300, - 0x3FB51940, 0x3FB41F80, 0x3FB325C0, - 0x3FB22C00, 0x3FB13240, 0x3FB03880, - 0x3FAF3EC0, 0x3FAE4500, 0x3FAD4B40, - 0x3FAC5180, 0x3FAB57C0, 0x3FAA5E00, - 0x3FA96440, 0x3FA86A80, 0x3FA770C0, - 0x3FA67700, 0x3FA57D40, 0x3FA48380, - 0x3FA389C0, 0x3FA29000, 0x3FA19640, - 0x3FA09C80, 0x3F9FA2C0, 0x3F9EA900, - 0x3F9DAF40, 0x3F9CB580, 0x3F9BBBC0, - 0x3F9AC200, 0x3F99C840, 0x3F98CE80, - 0x3F97D4C0, 0x3F96DB00, 0x3F95E140, - 0x3F94E780, 0x3F93EDC0, 0x3F92F400, - 0x3F91FA40, 0x3F910080, 0x3F9006C0, - 0x3F8F0D00, 0x3F8E1340, 0x3F8D1980, - 0x3F8C1FC0, 0x3F8B2600, 0x3F8A2C40, - 0x3F893280, 0x3F8838C0, 0x3F873F00, - 0x3F864540, 0x3F854B80, 0x3F8451C0, - 0x3F835800, 0x3F825E40, 0x3F816480, - 0x3F806AC0, 0x3F7F7100, 0x3F7E7740, - 0x3F7D7D80, 0x3F7C83C0, 0x3F7B8A00, - 0x3F7A9040, 0x3F799680, 0x3F789CC0, - 0x3F77A300, 0x3F76A940, 0x3F75AF80, - 0x3F74B5C0, 0x3F73BC00, 0x3F72C240, - 0x3F71C880, 0x3F70CEC0, 0x3F6FD500, - 0x3F6EDB40, 0x3F6DE180, 0x3F6CE7C0, - 0x3F6BEE00, 0x3F6AF440, 0x3F69FA80, - 0x3F6900C0, 0x3F680700, 0x3F670D40, - 0x3F661380, 0x3F6519C0, 0x3F642000, - 0x3F632640, 0x3F622C80, 0x3F6132C0, - 0x3F603900, 0x3F5F3F40, 0x3F5E4580, - 0x3F5D4BC0, 0x3F5C5200, 0x3F5B5840, - 0x3F5A5E80, 0x3F5964C0, 0x3F586B00, - 0x3F577140, 0x3F567780, 0x3F557DC0, - 0x3F548400, 0x3F538A40, 0x3F529080, - 0x3F5196C0, 0x3F509D00, 0x3F4FA340, - 0x3F4EA980, 0x3F4DAFC0, 0x3F4CB600, - 0x3F4BBC40, 0x3F4AC280, 0x3F49C8C0, - 0x3F48CF00, 0x3F47D540, 0x3F46DB80, - 0x3F45E1C0, 0x3F44E800, 0x3F43EE40, - 0x3F42F480, 0x3F41FAC0, 0x3F410100, - 0x3F400740, 0x3F3F0D80, 0x3F3E13C0, - 0x3F3D1A00, 0x3F3C2040, 0x3F3B2680, - 0x3F3A2CC0, 0x3F393300, 0x3F383940, - 0x3F373F80, 0x3F3645C0, 0x3F354C00, - 0x3F345240, 0x3F335880, 0x3F325EC0, - 0x3F316500, 0x3F306B40, 0x3F2F7180, - 0x3F2E77C0, 0x3F2D7E00, 0x3F2C8440, - 0x3F2B8A80, 0x3F2A90C0, 0x3F299700, - 0x3F289D40, 0x3F27A380, 0x3F26A9C0, - 0x3F25B000, 0x3F24B640, 0x3F23BC80, - 0x3F22C2C0, 0x3F21C900, 0x3F20CF40, - 0x3F1FD580, 0x3F1EDBC0, 0x3F1DE200, - 0x3F1CE840, 0x3F1BEE80, 0x3F1AF4C0, - 0x3F19FB00, 0x3F190140, 0x3F180780, - 0x3F170DC0, 0x3F161400, 0x3F151A40, - 0x3F142080, 0x3F1326C0, 0x3F122D00, - 0x3F113340, 0x3F103980, 0x3F0F3FC0, - 0x3F0E4600, 0x3F0D4C40, 0x3F0C5280, - 0x3F0B58C0, 0x3F0A5F00, 0x3F096540, - 0x3F086B80, 0x3F0771C0, 0x3F067800, - 0x3F057E40, 0x3F048480, 0x3F038AC0, - 0x3F029100, 0x3F019740, 0x3F009D80, - 0x3EFFA3C0, 0x3EFEAA00, 0x3EFDB040, - 0x3EFCB680, 0x3EFBBCC0, 0x3EFAC300, - 0x3EF9C940, 0x3EF8CF80, 0x3EF7D5C0, - 0x3EF6DC00, 0x3EF5E240, 0x3EF4E880, - 0x3EF3EEC0, 0x3EF2F500, 0x3EF1FB40, - 0x3EF10180, 0x3EF007C0, 0x3EEF0E00, - 0x3EEE1440, 0x3EED1A80, 0x3EEC20C0, - 0x3EEB2700, 0x3EEA2D40, 0x3EE93380, - 0x3EE839C0, 0x3EE74000, 0x3EE64640, - 0x3EE54C80, 0x3EE452C0, 0x3EE35900, - 0x3EE25F40, 0x3EE16580, 0x3EE06BC0, - 0x3EDF7200, 0x3EDE7840, 0x3EDD7E80, - 0x3EDC84C0, 0x3EDB8B00, 0x3EDA9140, - 0x3ED99780, 0x3ED89DC0, 0x3ED7A400, - 0x3ED6AA40, 0x3ED5B080, 0x3ED4B6C0, - 0x3ED3BD00, 0x3ED2C340, 0x3ED1C980, - 0x3ED0CFC0, 0x3ECFD600, 0x3ECEDC40, - 0x3ECDE280, 0x3ECCE8C0, 0x3ECBEF00, - 0x3ECAF540, 0x3EC9FB80, 0x3EC901C0, - 0x3EC80800, 0x3EC70E40, 0x3EC61480, - 0x3EC51AC0, 0x3EC42100, 0x3EC32740, - 0x3EC22D80, 0x3EC133C0, 0x3EC03A00, - 0x3EBF4040, 0x3EBE4680, 0x3EBD4CC0, - 0x3EBC5300, 0x3EBB5940, 0x3EBA5F80, - 0x3EB965C0, 0x3EB86C00, 0x3EB77240, - 0x3EB67880, 0x3EB57EC0, 0x3EB48500, - 0x3EB38B40, 0x3EB29180, 0x3EB197C0, - 0x3EB09E00, 0x3EAFA440, 0x3EAEAA80, - 0x3EADB0C0, 0x3EACB700, 0x3EABBD40, - 0x3EAAC380, 0x3EA9C9C0, 0x3EA8D000, - 0x3EA7D640, 0x3EA6DC80, 0x3EA5E2C0, - 0x3EA4E900, 0x3EA3EF40, 0x3EA2F580, - 0x3EA1FBC0, 0x3EA10200, 0x3EA00840, - 0x3E9F0E80, 0x3E9E14C0, 0x3E9D1B00, - 0x3E9C2140, 0x3E9B2780, 0x3E9A2DC0, - 0x3E993400, 0x3E983A40, 0x3E974080, - 0x3E9646C0, 0x3E954D00, 0x3E945340, - 0x3E935980, 0x3E925FC0, 0x3E916600, - 0x3E906C40, 0x3E8F7280, 0x3E8E78C0, - 0x3E8D7F00, 0x3E8C8540, 0x3E8B8B80, - 0x3E8A91C0, 0x3E899800, 0x3E889E40, - 0x3E87A480, 0x3E86AAC0, 0x3E85B100, - 0x3E84B740, 0x3E83BD80, 0x3E82C3C0, - 0x3E81CA00, 0x3E80D040, 0x3E7FD680, - 0x3E7EDCC0, 0x3E7DE300, 0x3E7CE940, - 0x3E7BEF80, 0x3E7AF5C0, 0x3E79FC00, - 0x3E790240, 0x3E780880, 0x3E770EC0, - 0x3E761500, 0x3E751B40, 0x3E742180, - 0x3E7327C0, 0x3E722E00, 0x3E713440, - 0x3E703A80, 0x3E6F40C0, 0x3E6E4700, - 0x3E6D4D40, 0x3E6C5380, 0x3E6B59C0, - 0x3E6A6000, 0x3E696640, 0x3E686C80, - 0x3E6772C0, 0x3E667900, 0x3E657F40, - 0x3E648580, 0x3E638BC0, 0x3E629200, - 0x3E619840, 0x3E609E80, 0x3E5FA4C0, - 0x3E5EAB00, 0x3E5DB140, 0x3E5CB780, - 0x3E5BBDC0, 0x3E5AC400, 0x3E59CA40, - 0x3E58D080, 0x3E57D6C0, 0x3E56DD00, - 0x3E55E340, 0x3E54E980, 0x3E53EFC0, - 0x3E52F600, 0x3E51FC40, 0x3E510280, - 0x3E5008C0, 0x3E4F0F00, 0x3E4E1540, - 0x3E4D1B80, 0x3E4C21C0, 0x3E4B2800, - 0x3E4A2E40, 0x3E493480, 0x3E483AC0, - 0x3E474100, 0x3E464740, 0x3E454D80, - 0x3E4453C0, 0x3E435A00, 0x3E426040, - 0x3E416680, 0x3E406CC0, 0x3E3F7300, - 0x3E3E7940, 0x3E3D7F80, 0x3E3C85C0, - 0x3E3B8C00, 0x3E3A9240, 0x3E399880, - 0x3E389EC0, 0x3E37A500, 0x3E36AB40, - 0x3E35B180, 0x3E34B7C0, 0x3E33BE00, - 0x3E32C440, 0x3E31CA80, 0x3E30D0C0, - 0x3E2FD700, 0x3E2EDD40, 0x3E2DE380, - 0x3E2CE9C0, 0x3E2BF000, 0x3E2AF640, - 0x3E29FC80, 0x3E2902C0, 0x3E280900, - 0x3E270F40, 0x3E261580, 0x3E251BC0, - 0x3E242200, 0x3E232840, 0x3E222E80, - 0x3E2134C0, 0x3E203B00, 0x3E1F4140, - 0x3E1E4780, 0x3E1D4DC0, 0x3E1C5400, - 0x3E1B5A40, 0x3E1A6080, 0x3E1966C0, - 0x3E186D00, 0x3E177340, 0x3E167980, - 0x3E157FC0, 0x3E148600, 0x3E138C40, - 0x3E129280, 0x3E1198C0, 0x3E109F00, - 0x3E0FA540, 0x3E0EAB80, 0x3E0DB1C0, - 0x3E0CB800, 0x3E0BBE40, 0x3E0AC480, - 0x3E09CAC0, 0x3E08D100, 0x3E07D740, - 0x3E06DD80, 0x3E05E3C0, 0x3E04EA00, - 0x3E03F040, 0x3E02F680, 0x3E01FCC0, - 0x3E010300, 0x3E000940, 0x3DFF0F80, - 0x3DFE15C0, 0x3DFD1C00, 0x3DFC2240, - 0x3DFB2880, 0x3DFA2EC0, 0x3DF93500, - 0x3DF83B40, 0x3DF74180, 0x3DF647C0, - 0x3DF54E00, 0x3DF45440, 0x3DF35A80, - 0x3DF260C0, 0x3DF16700, 0x3DF06D40, - 0x3DEF7380, 0x3DEE79C0, 0x3DED8000, - 0x3DEC8640, 0x3DEB8C80, 0x3DEA92C0, - 0x3DE99900, 0x3DE89F40, 0x3DE7A580, - 0x3DE6ABC0, 0x3DE5B200, 0x3DE4B840, - 0x3DE3BE80, 0x3DE2C4C0, 0x3DE1CB00, - 0x3DE0D140, 0x3DDFD780, 0x3DDEDDC0, - 0x3DDDE400, 0x3DDCEA40, 0x3DDBF080, - 0x3DDAF6C0, 0x3DD9FD00, 0x3DD90340, - 0x3DD80980, 0x3DD70FC0, 0x3DD61600, - 0x3DD51C40, 0x3DD42280, 0x3DD328C0, - 0x3DD22F00, 0x3DD13540, 0x3DD03B80, - 0x3DCF41C0, 0x3DCE4800, 0x3DCD4E40, - 0x3DCC5480, 0x3DCB5AC0, 0x3DCA6100, - 0x3DC96740, 0x3DC86D80, 0x3DC773C0, - 0x3DC67A00, 0x3DC58040, 0x3DC48680, - 0x3DC38CC0, 0x3DC29300, 0x3DC19940, - 0x3DC09F80, 0x3DBFA5C0, 0x3DBEAC00, - 0x3DBDB240, 0x3DBCB880, 0x3DBBBEC0, - 0x3DBAC500, 0x3DB9CB40, 0x3DB8D180, - 0x3DB7D7C0, 0x3DB6DE00, 0x3DB5E440, - 0x3DB4EA80, 0x3DB3F0C0, 0x3DB2F700, - 0x3DB1FD40, 0x3DB10380, 0x3DB009C0, - 0x3DAF1000, 0x3DAE1640, 0x3DAD1C80, - 0x3DAC22C0, 0x3DAB2900, 0x3DAA2F40, - 0x3DA93580, 0x3DA83BC0, 0x3DA74200, - 0x3DA64840, 0x3DA54E80, 0x3DA454C0, - 0x3DA35B00, 0x3DA26140, 0x3DA16780, - 0x3DA06DC0, 0x3D9F7400, 0x3D9E7A40, - 0x3D9D8080, 0x3D9C86C0, 0x3D9B8D00, - 0x3D9A9340, 0x3D999980, 0x3D989FC0, - 0x3D97A600, 0x3D96AC40, 0x3D95B280, - 0x3D94B8C0, 0x3D93BF00, 0x3D92C540, - 0x3D91CB80, 0x3D90D1C0, 0x3D8FD800, - 0x3D8EDE40, 0x3D8DE480, 0x3D8CEAC0, - 0x3D8BF100, 0x3D8AF740, 0x3D89FD80, - 0x3D8903C0, 0x3D880A00, 0x3D871040, - 0x3D861680, 0x3D851CC0, 0x3D842300, - 0x3D832940, 0x3D822F80, 0x3D8135C0, - 0x3D803C00, 0x3D7F4240, 0x3D7E4880, - 0x3D7D4EC0, 0x3D7C5500, 0x3D7B5B40, - 0x3D7A6180, 0x3D7967C0, 0x3D786E00, - 0x3D777440, 0x3D767A80, 0x3D7580C0, - 0x3D748700, 0x3D738D40, 0x3D729380, - 0x3D7199C0, 0x3D70A000, 0x3D6FA640, - 0x3D6EAC80, 0x3D6DB2C0, 0x3D6CB900, - 0x3D6BBF40, 0x3D6AC580, 0x3D69CBC0, - 0x3D68D200, 0x3D67D840, 0x3D66DE80, - 0x3D65E4C0, 0x3D64EB00, 0x3D63F140, - 0x3D62F780, 0x3D61FDC0, 0x3D610400, - 0x3D600A40, 0x3D5F1080, 0x3D5E16C0, - 0x3D5D1D00, 0x3D5C2340, 0x3D5B2980, - 0x3D5A2FC0, 0x3D593600, 0x3D583C40, - 0x3D574280, 0x3D5648C0, 0x3D554F00, - 0x3D545540, 0x3D535B80, 0x3D5261C0, - 0x3D516800, 0x3D506E40, 0x3D4F7480, - 0x3D4E7AC0, 0x3D4D8100, 0x3D4C8740, - 0x3D4B8D80, 0x3D4A93C0, 0x3D499A00, - 0x3D48A040, 0x3D47A680, 0x3D46ACC0, - 0x3D45B300, 0x3D44B940, 0x3D43BF80, - 0x3D42C5C0, 0x3D41CC00, 0x3D40D240, - 0x3D3FD880, 0x3D3EDEC0, 0x3D3DE500, - 0x3D3CEB40, 0x3D3BF180, 0x3D3AF7C0, - 0x3D39FE00, 0x3D390440, 0x3D380A80, - 0x3D3710C0, 0x3D361700, 0x3D351D40, - 0x3D342380, 0x3D3329C0, 0x3D323000, - 0x3D313640, 0x3D303C80, 0x3D2F42C0, - 0x3D2E4900, 0x3D2D4F40, 0x3D2C5580, - 0x3D2B5BC0, 0x3D2A6200, 0x3D296840, - 0x3D286E80, 0x3D2774C0, 0x3D267B00, - 0x3D258140, 0x3D248780, 0x3D238DC0, - 0x3D229400, 0x3D219A40, 0x3D20A080, - 0x3D1FA6C0, 0x3D1EAD00, 0x3D1DB340, - 0x3D1CB980, 0x3D1BBFC0, 0x3D1AC600, - 0x3D19CC40, 0x3D18D280, 0x3D17D8C0, - 0x3D16DF00, 0x3D15E540, 0x3D14EB80, - 0x3D13F1C0, 0x3D12F800, 0x3D11FE40, - 0x3D110480, 0x3D100AC0, 0x3D0F1100, - 0x3D0E1740, 0x3D0D1D80, 0x3D0C23C0, - 0x3D0B2A00, 0x3D0A3040, 0x3D093680, - 0x3D083CC0, 0x3D074300, 0x3D064940, - 0x3D054F80, 0x3D0455C0, 0x3D035C00, - 0x3D026240, 0x3D016880, 0x3D006EC0, - 0x3CFF7500, 0x3CFE7B40, 0x3CFD8180, - 0x3CFC87C0, 0x3CFB8E00, 0x3CFA9440, - 0x3CF99A80, 0x3CF8A0C0, 0x3CF7A700, - 0x3CF6AD40, 0x3CF5B380, 0x3CF4B9C0, - 0x3CF3C000, 0x3CF2C640, 0x3CF1CC80, - 0x3CF0D2C0, 0x3CEFD900, 0x3CEEDF40, - 0x3CEDE580, 0x3CECEBC0, 0x3CEBF200, - 0x3CEAF840, 0x3CE9FE80, 0x3CE904C0, - 0x3CE80B00, 0x3CE71140, 0x3CE61780, - 0x3CE51DC0, 0x3CE42400, 0x3CE32A40, - 0x3CE23080, 0x3CE136C0, 0x3CE03D00, - 0x3CDF4340, 0x3CDE4980, 0x3CDD4FC0, - 0x3CDC5600, 0x3CDB5C40, 0x3CDA6280, - 0x3CD968C0, 0x3CD86F00, 0x3CD77540, - 0x3CD67B80, 0x3CD581C0, 0x3CD48800, - 0x3CD38E40, 0x3CD29480, 0x3CD19AC0, - 0x3CD0A100, 0x3CCFA740, 0x3CCEAD80, - 0x3CCDB3C0, 0x3CCCBA00, 0x3CCBC040, - 0x3CCAC680, 0x3CC9CCC0, 0x3CC8D300, - 0x3CC7D940, 0x3CC6DF80, 0x3CC5E5C0, - 0x3CC4EC00, 0x3CC3F240, 0x3CC2F880, - 0x3CC1FEC0, 0x3CC10500, 0x3CC00B40, - 0x3CBF1180, 0x3CBE17C0, 0x3CBD1E00, - 0x3CBC2440, 0x3CBB2A80, 0x3CBA30C0, - 0x3CB93700, 0x3CB83D40, 0x3CB74380, - 0x3CB649C0, 0x3CB55000, 0x3CB45640, - 0x3CB35C80, 0x3CB262C0, 0x3CB16900, - 0x3CB06F40, 0x3CAF7580, 0x3CAE7BC0, - 0x3CAD8200, 0x3CAC8840, 0x3CAB8E80, - 0x3CAA94C0, 0x3CA99B00, 0x3CA8A140, - 0x3CA7A780, 0x3CA6ADC0, 0x3CA5B400, - 0x3CA4BA40, 0x3CA3C080, 0x3CA2C6C0, - 0x3CA1CD00, 0x3CA0D340, 0x3C9FD980, - 0x3C9EDFC0, 0x3C9DE600, 0x3C9CEC40, - 0x3C9BF280, 0x3C9AF8C0, 0x3C99FF00, - 0x3C990540, 0x3C980B80, 0x3C9711C0, - 0x3C961800, 0x3C951E40, 0x3C942480, - 0x3C932AC0, 0x3C923100, 0x3C913740, - 0x3C903D80, 0x3C8F43C0, 0x3C8E4A00, - 0x3C8D5040, 0x3C8C5680, 0x3C8B5CC0, - 0x3C8A6300, 0x3C896940, 0x3C886F80, - 0x3C8775C0, 0x3C867C00, 0x3C858240, - 0x3C848880, 0x3C838EC0, 0x3C829500, - 0x3C819B40, 0x3C80A180, 0x3C7FA7C0, - 0x3C7EAE00, 0x3C7DB440, 0x3C7CBA80, - 0x3C7BC0C0, 0x3C7AC700, 0x3C79CD40, - 0x3C78D380, 0x3C77D9C0, 0x3C76E000, - 0x3C75E640, 0x3C74EC80, 0x3C73F2C0, - 0x3C72F900, 0x3C71FF40, 0x3C710580, - 0x3C700BC0, 0x3C6F1200, 0x3C6E1840, - 0x3C6D1E80, 0x3C6C24C0, 0x3C6B2B00, - 0x3C6A3140, 0x3C693780, 0x3C683DC0, - 0x3C674400, 0x3C664A40, 0x3C655080, - 0x3C6456C0, 0x3C635D00, 0x3C626340, - 0x3C616980, 0x3C606FC0, 0x3C5F7600, - 0x3C5E7C40, 0x3C5D8280, 0x3C5C88C0, - 0x3C5B8F00, 0x3C5A9540, 0x3C599B80, - 0x3C58A1C0, 0x3C57A800, 0x3C56AE40, - 0x3C55B480, 0x3C54BAC0, 0x3C53C100, - 0x3C52C740, 0x3C51CD80, 0x3C50D3C0, - 0x3C4FDA00, 0x3C4EE040, 0x3C4DE680, - 0x3C4CECC0, 0x3C4BF300, 0x3C4AF940, - 0x3C49FF80, 0x3C4905C0, 0x3C480C00, - 0x3C471240, 0x3C461880, 0x3C451EC0, - 0x3C442500, 0x3C432B40, 0x3C423180, - 0x3C4137C0, 0x3C403E00, 0x3C3F4440, - 0x3C3E4A80, 0x3C3D50C0, 0x3C3C5700, - 0x3C3B5D40, 0x3C3A6380, 0x3C3969C0, - 0x3C387000, 0x3C377640, 0x3C367C80, - 0x3C3582C0, 0x3C348900, 0x3C338F40, - 0x3C329580, 0x3C319BC0, 0x3C30A200, - 0x3C2FA840, 0x3C2EAE80, 0x3C2DB4C0, - 0x3C2CBB00, 0x3C2BC140, 0x3C2AC780, - 0x3C29CDC0, 0x3C28D400, 0x3C27DA40, - 0x3C26E080, 0x3C25E6C0, 0x3C24ED00, - 0x3C23F340, 0x3C22F980, 0x3C21FFC0, - 0x3C210600, 0x3C200C40, 0x3C1F1280, - 0x3C1E18C0, 0x3C1D1F00, 0x3C1C2540, - 0x3C1B2B80, 0x3C1A31C0, 0x3C193800, - 0x3C183E40, 0x3C174480, 0x3C164AC0, - 0x3C155100, 0x3C145740, 0x3C135D80, - 0x3C1263C0, 0x3C116A00, 0x3C107040, - 0x3C0F7680, 0x3C0E7CC0, 0x3C0D8300, - 0x3C0C8940, 0x3C0B8F80, 0x3C0A95C0, - 0x3C099C00, 0x3C08A240, 0x3C07A880, - 0x3C06AEC0, 0x3C05B500, 0x3C04BB40, - 0x3C03C180, 0x3C02C7C0, 0x3C01CE00, - 0x3C00D440, 0x3BFFDA80, 0x3BFEE0C0, - 0x3BFDE700, 0x3BFCED40, 0x3BFBF380, - 0x3BFAF9C0, 0x3BFC0000, 0x3BFB1780, - 0x3BFA2F00, 0x3BF94680, 0x3BF85E00, - 0x3BF77580, 0x3BF68D00, 0x3BF5A480, - 0x3BF4BC00, 0x3BF3D380, 0x3BF2EB00, - 0x3BF20280, 0x3BF11A00, 0x3BF03180, - 0x3BEF4900, 0x3BEE6080, 0x3BED7800, - 0x3BEC8F80, 0x3BEBA700, 0x3BEABE80, - 0x3BE9D600, 0x3BE8ED80, 0x3BE80500, - 0x3BE71C80, 0x3BE63400, 0x3BE54B80, - 0x3BE46300, 0x3BE37A80, 0x3BE29200, - 0x3BE1A980, 0x3BE0C100, 0x3BDFD880, - 0x3BDEF000, 0x3BDE0780, 0x3BDD1F00, - 0x3BDC3680, 0x3BDB4E00, 0x3BDA6580, - 0x3BD97D00, 0x3BD89480, 0x3BD7AC00, - 0x3BD6C380, 0x3BD5DB00, 0x3BD4F280, - 0x3BD40A00, 0x3BD32180, 0x3BD23900, - 0x3BD15080, 0x3BD06800, 0x3BCF7F80, - 0x3BCE9700, 0x3BCDAE80, 0x3BCCC600, - 0x3BCBDD80, 0x3BCAF500, 0x3BCA0C80, - 0x3BC92400, 0x3BC83B80, 0x3BC75300, - 0x3BC66A80, 0x3BC58200, 0x3BC49980, - 0x3BC3B100, 0x3BC2C880, 0x3BC1E000, - 0x3BC0F780, 0x3BC00F00, 0x3BBF2680, - 0x3BBE3E00, 0x3BBD5580, 0x3BBC6D00, - 0x3BBB8480, 0x3BBA9C00, 0x3BB9B380, - 0x3BB8CB00, 0x3BB7E280, 0x3BB6FA00, - 0x3BB61180, 0x3BB52900, 0x3BB44080, - 0x3BB35800, 0x3BB26F80, 0x3BB18700, - 0x3BB09E80, 0x3BAFB600, 0x3BAECD80, - 0x3BADE500, 0x3BACFC80, 0x3BAC1400, - 0x3BAB2B80, 0x3BAA4300, 0x3BA95A80, - 0x3BA87200, 0x3BA78980, 0x3BA6A100, - 0x3BA5B880, 0x3BA4D000, 0x3BA3E780, - 0x3BA2FF00, 0x3BA21680, 0x3BA12E00, - 0x3BA04580, 0x3B9F5D00, 0x3B9E7480, - 0x3B9D8C00, 0x3B9CA380, 0x3B9BBB00, - 0x3B9AD280, 0x3B99EA00, 0x3B990180, - 0x3B981900, 0x3B973080, 0x3B964800, - 0x3B955F80, 0x3B947700, 0x3B938E80, - 0x3B92A600, 0x3B91BD80, 0x3B90D500, - 0x3B8FEC80, 0x3B8F0400, 0x3B8E1B80, - 0x3B8D3300, 0x3B8C4A80, 0x3B8B6200, - 0x3B8A7980, 0x3B899100, 0x3B88A880, - 0x3B87C000, 0x3B86D780, 0x3B85EF00, - 0x3B850680, 0x3B841E00, 0x3B833580, - 0x3B824D00, 0x3B816480, 0x3B807C00, - 0x3B7F9380, 0x3B7EAB00, 0x3B7DC280, - 0x3B7CDA00, 0x3B7BF180, 0x3B7B0900, - 0x3B7A2080, 0x3B793800, 0x3B784F80, - 0x3B776700, 0x3B767E80, 0x3B759600, - 0x3B74AD80, 0x3B73C500, 0x3B72DC80, - 0x3B71F400, 0x3B710B80, 0x3B702300, - 0x3B6F3A80, 0x3B6E5200, 0x3B6D6980, - 0x3B6C8100, 0x3B6B9880, 0x3B6AB000, - 0x3B69C780, 0x3B68DF00, 0x3B67F680, - 0x3B670E00, 0x3B662580, 0x3B653D00, - 0x3B645480, 0x3B636C00, 0x3B628380, - 0x3B619B00, 0x3B60B280, 0x3B5FCA00, - 0x3B5EE180, 0x3B5DF900, 0x3B5D1080, - 0x3B5C2800, 0x3B5B3F80, 0x3B5A5700, - 0x3B596E80, 0x3B588600, 0x3B579D80, - 0x3B56B500, 0x3B55CC80, 0x3B54E400, - 0x3B53FB80, 0x3B531300, 0x3B522A80, - 0x3B514200, 0x3B505980, 0x3B4F7100, - 0x3B4E8880, 0x3B4DA000, 0x3B4CB780, - 0x3B4BCF00, 0x3B4AE680, 0x3B49FE00, - 0x3B491580, 0x3B482D00, 0x3B474480, - 0x3B465C00, 0x3B457380, 0x3B448B00, - 0x3B43A280, 0x3B42BA00, 0x3B41D180, - 0x3B40E900, 0x3B400080, 0x3B3F1800, - 0x3B3E2F80, 0x3B3D4700, 0x3B3C5E80, - 0x3B3B7600, 0x3B3A8D80, 0x3B39A500, - 0x3B38BC80, 0x3B37D400, 0x3B36EB80, - 0x3B360300, 0x3B351A80, 0x3B343200, - 0x3B334980, 0x3B326100, 0x3B317880, - 0x3B309000, 0x3B2FA780, 0x3B2EBF00, - 0x3B2DD680, 0x3B2CEE00, 0x3B2C0580, - 0x3B2B1D00, 0x3B2A3480, 0x3B294C00, - 0x3B286380, 0x3B277B00, 0x3B269280, - 0x3B25AA00, 0x3B24C180, 0x3B23D900, - 0x3B22F080, 0x3B220800, 0x3B211F80, - 0x3B203700, 0x3B1F4E80, 0x3B1E6600, - 0x3B1D7D80, 0x3B1C9500, 0x3B1BAC80, - 0x3B1AC400, 0x3B19DB80, 0x3B18F300, - 0x3B180A80, 0x3B172200, 0x3B163980, - 0x3B155100, 0x3B146880, 0x3B138000, - 0x3B129780, 0x3B11AF00, 0x3B10C680, - 0x3B0FDE00, 0x3B0EF580, 0x3B0E0D00, - 0x3B0D2480, 0x3B0C3C00, 0x3B0B5380, - 0x3B0A6B00, 0x3B098280, 0x3B089A00, - 0x3B07B180, 0x3B06C900, 0x3B05E080, - 0x3B04F800, 0x3B040F80, 0x3B032700, - 0x3B023E80, 0x3B015600, 0x3B006D80, - 0x3AFF8500, 0x3AFE9C80, 0x3AFDB400, - 0x3AFCCB80, 0x3AFBE300, 0x3AFAFA80, - 0x3AFA1200, 0x3AF92980, 0x3AF84100, - 0x3AF75880, 0x3AF67000, 0x3AF58780, - 0x3AF49F00, 0x3AF3B680, 0x3AF2CE00, - 0x3AF1E580, 0x3AF0FD00, 0x3AF01480, - 0x3AEF2C00, 0x3AEE4380, 0x3AED5B00, - 0x3AEC7280, 0x3AEB8A00, 0x3AEAA180, - 0x3AE9B900, 0x3AE8D080, 0x3AE7E800, - 0x3AE6FF80, 0x3AE61700, 0x3AE52E80, - 0x3AE44600, 0x3AE35D80, 0x3AE27500, - 0x3AE18C80, 0x3AE0A400, 0x3ADFBB80, - 0x3ADED300, 0x3ADDEA80, 0x3ADD0200, - 0x3ADC1980, 0x3ADB3100, 0x3ADA4880, - 0x3AD96000, 0x3AD87780, 0x3AD78F00, - 0x3AD6A680, 0x3AD5BE00, 0x3AD4D580, - 0x3AD3ED00, 0x3AD30480, 0x3AD21C00, - 0x3AD13380, 0x3AD04B00, 0x3ACF6280, - 0x3ACE7A00, 0x3ACD9180, 0x3ACCA900, - 0x3ACBC080, 0x3ACAD800, 0x3AC9EF80, - 0x3AC90700, 0x3AC81E80, 0x3AC73600, - 0x3AC64D80, 0x3AC56500, 0x3AC47C80, - 0x3AC39400, 0x3AC2AB80, 0x3AC1C300, - 0x3AC0DA80, 0x3ABFF200, 0x3ABF0980, - 0x3ABE2100, 0x3ABD3880, 0x3ABC5000, - 0x3ABB6780, 0x3ABA7F00, 0x3AB99680, - 0x3AB8AE00, 0x3AB7C580, 0x3AB6DD00, - 0x3AB5F480, 0x3AB50C00, 0x3AB42380, - 0x3AB33B00, 0x3AB25280, 0x3AB16A00, - 0x3AB08180, 0x3AAF9900, 0x3AAEB080, - 0x3AADC800, 0x3AACDF80, 0x3AABF700, - 0x3AAB0E80, 0x3AAA2600, 0x3AA93D80, - 0x3AA85500, 0x3AA76C80, 0x3AA68400, - 0x3AA59B80, 0x3AA4B300, 0x3AA3CA80, - 0x3AA2E200, 0x3AA1F980, 0x3AA11100, - 0x3AA02880, 0x3A9F4000, 0x3A9E5780, - 0x3A9D6F00, 0x3A9C8680, 0x3A9B9E00, - 0x3A9AB580, 0x3A99CD00, 0x3A98E480, - 0x3A97FC00, 0x3A971380, 0x3A962B00, - 0x3A954280, 0x3A945A00, 0x3A937180, - 0x3A928900, 0x3A91A080, 0x3A90B800, - 0x3A8FCF80, 0x3A8EE700, 0x3A8DFE80, - 0x3A8D1600, 0x3A8C2D80, 0x3A8B4500, - 0x3A8A5C80, 0x3A897400, 0x3A888B80, - 0x3A87A300, 0x3A86BA80, 0x3A85D200, - 0x3A84E980, 0x3A840100, 0x3A831880, - 0x3A823000, 0x3A814780, 0x3A805F00, - 0x3A7F7680, 0x3A7E8E00, 0x3A7DA580, - 0x3A7CBD00, 0x3A7BD480, 0x3A7AEC00, - 0x3A7A0380, 0x3A791B00, 0x3A783280, - 0x3A774A00, 0x3A766180, 0x3A757900, - 0x3A749080, 0x3A73A800, 0x3A72BF80, - 0x3A71D700, 0x3A70EE80, 0x3A700600, - 0x3A6F1D80, 0x3A6E3500, 0x3A6D4C80, - 0x3A6C6400, 0x3A6B7B80, 0x3A6A9300, - 0x3A69AA80, 0x3A68C200, 0x3A67D980, - 0x3A66F100, 0x3A660880, 0x3A652000, - 0x3A643780, 0x3A634F00, 0x3A626680, - 0x3A617E00, 0x3A609580, 0x3A5FAD00, - 0x3A5EC480, 0x3A5DDC00, 0x3A5CF380, - 0x3A5C0B00, 0x3A5B2280, 0x3A5A3A00, - 0x3A595180, 0x3A586900, 0x3A578080, - 0x3A569800, 0x3A55AF80, 0x3A54C700, - 0x3A53DE80, 0x3A52F600, 0x3A520D80, - 0x3A512500, 0x3A503C80, 0x3A4F5400, - 0x3A4E6B80, 0x3A4D8300, 0x3A4C9A80, - 0x3A4BB200, 0x3A4AC980, 0x3A49E100, - 0x3A48F880, 0x3A481000, 0x3A472780, - 0x3A463F00, 0x3A455680, 0x3A446E00, - 0x3A438580, 0x3A429D00, 0x3A41B480, - 0x3A40CC00, 0x3A3FE380, 0x3A3EFB00, - 0x3A3E1280, 0x3A3D2A00, 0x3A3C4180, - 0x3A3B5900, 0x3A3A7080, 0x3A398800, - 0x3A389F80, 0x3A37B700, 0x3A36CE80, - 0x3A35E600, 0x3A34FD80, 0x3A341500, - 0x3A332C80, 0x3A324400, 0x3A315B80, - 0x3A307300, 0x3A2F8A80, 0x3A2EA200, - 0x3A2DB980, 0x3A2CD100, 0x3A2BE880, - 0x3A2B0000, 0x3A2A1780, 0x3A292F00, - 0x3A284680, 0x3A275E00, 0x3A267580, - 0x3A258D00, 0x3A24A480, 0x3A23BC00, - 0x3A22D380, 0x3A21EB00, 0x3A210280, - 0x3A201A00, 0x3A1F3180, 0x3A1E4900, - 0x3A1D6080, 0x3A1C7800, 0x3A1B8F80, - 0x3A1AA700, 0x3A19BE80, 0x3A18D600, - 0x3A17ED80, 0x3A170500, 0x3A161C80, - 0x3A153400, 0x3A144B80, 0x3A136300, - 0x3A127A80, 0x3A119200, 0x3A10A980, - 0x3A0FC100, 0x3A0ED880, 0x3A0DF000, - 0x3A0D0780, 0x3A0C1F00, 0x3A0B3680, - 0x3A0A4E00, 0x3A096580, 0x3A087D00, - 0x3A079480, 0x3A06AC00, 0x3A05C380, - 0x3A04DB00, 0x3A03F280, 0x3A030A00, - 0x3A022180, 0x3A013900, 0x3A005080, - 0x39FF6800, 0x39FE7F80, 0x39FD9700, - 0x39FCAE80, 0x39FBC600, 0x39FADD80, - 0x39F9F500, 0x39F90C80, 0x39F82400, - 0x39F73B80, 0x39F65300, 0x39F56A80, - 0x39F48200, 0x39F39980, 0x39F2B100, - 0x39F1C880, 0x39F0E000, 0x39EFF780, - 0x39EF0F00, 0x39EE2680, 0x39ED3E00, - 0x39EC5580, 0x39EB6D00, 0x39EA8480, - 0x39E99C00, 0x39E8B380, 0x39E7CB00, - 0x39E6E280, 0x39E5FA00, 0x39E51180, - 0x39E42900, 0x39E34080, 0x39E25800, - 0x39E16F80, 0x39E08700, 0x39DF9E80, - 0x39DEB600, 0x39DDCD80, 0x39DCE500, - 0x39DBFC80, 0x39DB1400, 0x39DA2B80, - 0x39D94300, 0x39D85A80, 0x39D77200, - 0x39D68980, 0x39D5A100, 0x39D4B880, - 0x39D3D000, 0x39D2E780, 0x39D1FF00, - 0x39D11680, 0x39D02E00, 0x39CF4580, - 0x39CE5D00, 0x39CD7480, 0x39CC8C00, - 0x39CBA380, 0x39CABB00, 0x39C9D280, - 0x39C8EA00, 0x39C80180, 0x39C71900, - 0x39C63080, 0x39C54800, 0x39C45F80, - 0x39C37700, 0x39C28E80, 0x39C1A600, - 0x39C0BD80, 0x39BFD500, 0x39BEEC80, - 0x39BE0400, 0x39BD1B80, 0x39BC3300, - 0x39BB4A80, 0x39BA6200, 0x39B97980, - 0x39B89100, 0x39B7A880, 0x39B6C000, - 0x39B5D780, 0x39B4EF00, 0x39B40680, - 0x39B31E00, 0x39B23580, 0x39B14D00, - 0x39B06480, 0x39AF7C00, 0x39AE9380, - 0x39ADAB00, 0x39ACC280, 0x39ABDA00, - 0x39AAF180, 0x39AA0900, 0x39A92080, - 0x39A83800, 0x39A74F80, 0x39A66700, - 0x39A57E80, 0x39A49600, 0x39A3AD80, - 0x39A2C500, 0x39A1DC80, 0x39A0F400, - 0x39A00B80, 0x399F2300, 0x399E3A80, - 0x399D5200, 0x399C6980, 0x399B8100, - 0x399A9880, 0x3999B000, 0x3998C780, - 0x3997DF00, 0x3996F680, 0x39960E00, - 0x39952580, 0x39943D00, 0x39935480, - 0x39926C00, 0x39918380, 0x39909B00, - 0x398FB280, 0x398ECA00, 0x398DE180, - 0x398CF900, 0x398C1080, 0x398B2800, - 0x398A3F80, 0x39895700, 0x39886E80, - 0x39878600, 0x39869D80, 0x3985B500, - 0x3984CC80, 0x3983E400, 0x3982FB80, - 0x39821300, 0x39812A80, 0x39804200, - 0x397F5980, 0x397E7100, 0x397D8880, - 0x397CA000, 0x397BB780, 0x397ACF00, - 0x3979E680, 0x3978FE00, 0x39781580, - 0x39772D00, 0x39764480, 0x39755C00, - 0x39747380, 0x39738B00, 0x3972A280, - 0x3971BA00, 0x3970D180, 0x396FE900, - 0x396F0080, 0x396E1800, 0x396D2F80, - 0x396C4700, 0x396B5E80, 0x396A7600, - 0x39698D80, 0x3968A500, 0x3967BC80, - 0x3966D400, 0x3965EB80, 0x39650300, - 0x39641A80, 0x39633200, 0x39624980, - 0x39616100, 0x39607880, 0x395F9000, - 0x395EA780, 0x395DBF00, 0x395CD680, - 0x395BEE00, 0x395B0580, 0x395A1D00, - 0x39593480, 0x39584C00, 0x39576380, - 0x39567B00, 0x39559280, 0x3954AA00, - 0x3953C180, 0x3952D900, 0x3951F080, - 0x39510800, 0x39501F80, 0x394F3700, - 0x394E4E80, 0x394D6600, 0x394C7D80, - 0x394B9500, 0x394AAC80, 0x3949C400, - 0x3948DB80, 0x3947F300, 0x39470A80, - 0x39462200, 0x39453980, 0x39445100, - 0x39436880, 0x39428000, 0x39419780, - 0x3940AF00, 0x393FC680, 0x393EDE00, - 0x393DF580, 0x393D0D00, 0x393C2480, - 0x393B3C00, 0x393A5380, 0x39396B00, - 0x39388280, 0x39379A00, 0x3936B180, - 0x3935C900, 0x3934E080, 0x3933F800, - 0x39330F80, 0x39322700, 0x39313E80, - 0x39305600, 0x392F6D80, 0x392E8500, - 0x392D9C80, 0x392CB400, 0x392BCB80, - 0x392AE300, 0x3929FA80, 0x39291200, - 0x39282980, 0x39274100, 0x39265880, - 0x39257000, 0x39248780, 0x39239F00, - 0x3922B680, 0x3921CE00, 0x3920E580, - 0x391FFD00, 0x391F1480, 0x391E2C00, - 0x391D4380, 0x391C5B00, 0x391B7280, - 0x391A8A00, 0x3919A180, 0x3918B900, - 0x3917D080, 0x3916E800, 0x3915FF80, - 0x39151700, 0x39142E80, 0x39134600, - 0x39125D80, 0x39117500, 0x39108C80, - 0x390FA400, 0x390EBB80, 0x390DD300, - 0x390CEA80, 0x390C0200, 0x390B1980, - 0x390A3100, 0x39094880, 0x39086000, - 0x39077780, 0x39068F00, 0x3905A680, - 0x3904BE00, 0x3903D580, 0x3902ED00, - 0x39020480, 0x39011C00, 0x39003380, - 0x38FF4B00, 0x38FE6280, 0x38FD7A00, - 0x38FC9180, 0x38FBA900, 0x38FAC080, - 0x38F9D800, 0x38F8EF80, 0x38F80700, - 0x38F71E80, 0x38F63600, 0x38F54D80, - 0x38F46500, 0x38F37C80, 0x38F29400, - 0x38F1AB80, 0x38F0C300, 0x38EFDA80, - 0x38EEF200, 0x38EE0980, 0x38ED2100, - 0x38EC3880, 0x38EB5000, 0x38EA6780, - 0x38E97F00, 0x38E89680, 0x38E7AE00, - 0x38E6C580, 0x38E5DD00, 0x38E4F480, - 0x38E40C00, 0x38E32380, 0x38E23B00, - 0x38E15280, 0x38E06A00, 0x38DF8180, - 0x38DE9900, 0x38DDB080, 0x38DCC800, - 0x38DBDF80, 0x38DAF700, 0x38DA0E80, - 0x38D92600, 0x38D83D80, 0x38D75500, - 0x38D66C80, 0x38D58400, 0x38D49B80, - 0x38D3B300, 0x38D2CA80, 0x38D1E200, - 0x38D0F980, 0x38D01100, 0x38CF2880, - 0x38CE4000, 0x38CD5780, 0x38CC6F00, - 0x38CB8680, 0x38CA9E00, 0x38C9B580, - 0x38C8CD00, 0x38C7E480, 0x38C6FC00, - 0x38C61380, 0x38C52B00, 0x38C44280, - 0x38C35A00, 0x38C27180, 0x38C18900, - 0x38C0A080, 0x38BFB800, 0x38BECF80, - 0x38BDE700, 0x38BCFE80, 0x38BC1600, - 0x38BB2D80, 0x38BA4500, 0x38B95C80, - 0x38B87400, 0x38B78B80, 0x38B6A300, - 0x38B5BA80, 0x38B4D200, 0x38B3E980, - 0x38B30100, 0x38B21880, 0x38B13000, - 0x38B04780, 0x38AF5F00, 0x38AE7680, - 0x38AD8E00, 0x38ACA580, 0x38ABBD00, - 0x38AAD480, 0x38A9EC00, 0x38A90380, - 0x38A81B00, 0x38A73280, 0x38A64A00, - 0x38A56180, 0x38A47900, 0x38A39080, - 0x38A2A800, 0x38A1BF80, 0x38A0D700, - 0x389FEE80, 0x389F0600, 0x389E1D80, - 0x389D3500, 0x389C4C80, 0x389B6400, - 0x389A7B80, 0x38999300, 0x3898AA80, - 0x3897C200, 0x3896D980, 0x3895F100, - 0x38950880, 0x38942000, 0x38933780, - 0x38924F00, 0x38916680, 0x38907E00, - 0x388F9580, 0x388EAD00, 0x388DC480, - 0x388CDC00, 0x388BF380, 0x388B0B00, - 0x388A2280, 0x38893A00, 0x38885180, - 0x38876900, 0x38868080, 0x38859800, - 0x3884AF80, 0x3883C700, 0x3882DE80, - 0x3881F600, 0x38810D80, 0x38802500, - 0x387F3C80, 0x387E5400, 0x387D6B80, - 0x387C8300, 0x387B9A80, 0x387AB200, - 0x3879C980, 0x3878E100, 0x3877F880, - 0x38771000, 0x38762780, 0x38753F00, - 0x38745680, 0x38736E00, 0x38728580, - 0x38719D00, 0x3870B480, 0x386FCC00, - 0x386EE380, 0x386DFB00, 0x386D1280, - 0x386C2A00, 0x386B4180, 0x386A5900, - 0x38697080, 0x38688800, 0x38679F80, - 0x3866B700, 0x3865CE80, 0x3864E600, - 0x3863FD80, 0x38631500, 0x38622C80, - 0x38614400, 0x38605B80, 0x385F7300, - 0x385E8A80, 0x385DA200, 0x385CB980, - 0x385BD100, 0x385AE880, 0x385A0000, - 0x38591780, 0x38582F00, 0x38574680, - 0x38565E00, 0x38557580, 0x38548D00, - 0x3853A480, 0x3852BC00, 0x3851D380, - 0x3850EB00, 0x38500280, 0x384F1A00, - 0x384E3180, 0x384D4900, 0x384C6080, - 0x384B7800, 0x384A8F80, 0x3849A700, - 0x3848BE80, 0x3847D600, 0x3846ED80, - 0x38460500, 0x38451C80, 0x38443400, - 0x38434B80, 0x38426300, 0x38417A80, - 0x38409200, 0x383FA980, 0x383EC100, - 0x383DD880, 0x383CF000, 0x383C0780, - 0x383B1F00, 0x383A3680, 0x38394E00, - 0x38386580, 0x38377D00, 0x38369480, - 0x3835AC00, 0x3834C380, 0x3833DB00, - 0x3832F280, 0x38320A00, 0x38312180, - 0x38303900, 0x382F5080, 0x382E6800, - 0x382D7F80, 0x382C9700, 0x382BAE80, - 0x382AC600, 0x3829DD80, 0x3828F500, - 0x38280C80, 0x38272400, 0x38263B80, - 0x38255300, 0x38246A80, 0x38238200, - 0x38229980, 0x3821B100, 0x3820C880, - 0x381FE000, 0x381EF780, 0x381E0F00, - 0x381D2680, 0x381C3E00, 0x381B5580, - 0x381A6D00, 0x38198480, 0x38189C00, - 0x3817B380, 0x3816CB00, 0x3815E280, - 0x3814FA00, 0x38141180, 0x38132900, - 0x38124080, 0x38115800, 0x38106F80, - 0x380F8700, 0x380E9E80, 0x380DB600, - 0x380CCD80, 0x380BE500, 0x380AFC80, - 0x380A1400, 0x38092B80, 0x38084300, - 0x38075A80, 0x38067200, 0x38058980, - 0x3804A100, 0x3803B880, 0x3802D000, - 0x3801E780, 0x3800FF00, 0x38001680, - 0x37FF2E00, 0x37FE4580, 0x37FD5D00, - 0x37FC7480, 0x37FB8C00, 0x37FAA380, - 0x37F9BB00, 0x37F8D280, 0x37F7EA00, - 0x37F70180, 0x37F61900, 0x37F53080, - 0x37F44800, 0x37F35F80, 0x37F27700, - 0x37F18E80, 0x37F0A600, 0x37EFBD80, - 0x37EED500, 0x37EDEC80, 0x37ED0400, - 0x37EC1B80, 0x37EB3300, 0x37EA4A80, - 0x37E96200, 0x37E87980, 0x37E79100, - 0x37E6A880, 0x37E5C000, 0x37E4D780, - 0x37E3EF00, 0x37E30680, 0x37E21E00, - 0x37E13580, 0x37E04D00, 0x37DF6480, - 0x37DE7C00, 0x37DD9380, 0x37DCAB00, - 0x37DBC280, 0x37DADA00, 0x37D9F180, - 0x37D90900, 0x37D82080, 0x37D73800, - 0x37D64F80, 0x37D56700, 0x37D47E80, - 0x37D39600, 0x37D2AD80, 0x37D1C500, - 0x37D0DC80, 0x37CFF400, 0x37CF0B80, - 0x37CE2300, 0x37CD3A80, 0x37CC5200, - 0x37CB6980, 0x37CA8100, 0x37C99880, - 0x37C8B000, 0x37C7C780, 0x37C6DF00, - 0x37C5F680, 0x37C50E00, 0x37C42580, - 0x37C33D00, 0x37C25480, 0x37C16C00, - 0x37C08380, 0x37BF9B00, 0x37BEB280, - 0x37BDCA00, 0x37BCE180, 0x37BBF900, - 0x37BB1080, 0x37BA2800, 0x37B93F80, - 0x37B85700, 0x37B76E80, 0x37B68600, - 0x37B59D80, 0x37B4B500, 0x37B3CC80, - 0x37B2E400, 0x37B1FB80, 0x37B11300, - 0x37B02A80, 0x37AF4200, 0x37AE5980, - 0x37AD7100, 0x37AC8880, 0x37ABA000, - 0x37AAB780, 0x37A9CF00, 0x37A8E680, - 0x37A7FE00, 0x37A71580, 0x37A62D00, - 0x37A54480, 0x37A45C00, 0x37A37380, - 0x37A28B00, 0x37A1A280, 0x37A0BA00, - 0x379FD180, 0x379EE900, 0x379E0080, - 0x379D1800, 0x379C2F80, 0x379B4700, - 0x379A5E80, 0x37997600, 0x37988D80, - 0x3797A500, 0x3796BC80, 0x3795D400, - 0x3794EB80, 0x37940300, 0x37931A80, - 0x37923200, 0x37914980, 0x37906100, - 0x378F7880, 0x378E9000, 0x378DA780, - 0x378CBF00, 0x378BD680, 0x378AEE00, - 0x378A0580, 0x37891D00, 0x37883480, - 0x37874C00, 0x37866380, 0x37857B00, - 0x37849280, 0x3783AA00, 0x3782C180, - 0x3781D900, 0x3780F080, 0x37800800, - 0x377F1F80, 0x377E3700, 0x377D4E80, - 0x377C6600, 0x377B7D80, 0x377A9500, - 0x3779AC80, 0x3778C400, 0x3777DB80, - 0x3776F300, 0x37760A80, 0x37752200, - 0x37743980, 0x37735100, 0x37726880, - 0x37718000, 0x37709780, 0x376FAF00, - 0x376EC680, 0x376DDE00, 0x376CF580, - 0x376C0D00, 0x376B2480, 0x376A3C00, - 0x37695380, 0x37686B00, 0x37678280, - 0x37669A00, 0x3765B180, 0x3764C900, - 0x3763E080, 0x3762F800, 0x37620F80, - 0x37612700, 0x37603E80, 0x375F5600, - 0x375E6D80, 0x375D8500, 0x375C9C80, - 0x375BB400, 0x375ACB80, 0x3759E300, - 0x3758FA80, 0x37581200, 0x37572980, - 0x37564100, 0x37555880, 0x37547000, - 0x37538780, 0x37529F00, 0x3751B680, - 0x3750CE00, 0x374FE580, 0x374EFD00, - 0x374E1480, 0x374D2C00, 0x374C4380, - 0x374B5B00, 0x374A7280, 0x37498A00, - 0x3748A180, 0x3747B900, 0x3746D080, - 0x3745E800, 0x3744FF80, 0x37441700, - 0x37432E80, 0x37424600, 0x37415D80, - 0x37407500, 0x373F8C80, 0x373EA400, - 0x373DBB80, 0x373CD300, 0x373BEA80, - 0x373B0200, 0x373A1980, 0x37393100, - 0x37384880, 0x37376000, 0x37367780, - 0x37358F00, 0x3734A680, 0x3733BE00, - 0x3732D580, 0x3731ED00, 0x37310480, - 0x37301C00, 0x372F3380, 0x372E4B00, - 0x372D6280, 0x372C7A00, 0x372B9180, - 0x372AA900, 0x3729C080, 0x3728D800, - 0x3727EF80, 0x37270700, 0x37261E80, - 0x37253600, 0x37244D80, 0x37236500, - 0x37227C80, 0x37219400, 0x3720AB80, - 0x371FC300, 0x371EDA80, 0x371DF200, - 0x371D0980, 0x371C2100, 0x371B3880, - 0x371A5000, 0x37196780, 0x37187F00, - 0x37179680, 0x3716AE00, 0x3715C580, - 0x3714DD00, 0x3713F480, 0x37130C00, - 0x37122380, 0x37113B00, 0x37105280, - 0x370F6A00, 0x370E8180, 0x370D9900, - 0x370CB080, 0x370BC800, 0x370ADF80, - 0x3709F700, 0x37090E80, 0x37082600, - 0x37073D80, 0x37065500, 0x37056C80, - 0x37048400, 0x37039B80, 0x3702B300, - 0x3701CA80, 0x3700E200, 0x36FFF980, - 0x36FF1100, 0x36FE2880, 0x36FD4000, - 0x36FC5780, 0x36FB6F00, 0x36FA8680, - 0x36F99E00, 0x36F8B580, 0x36F7CD00, - 0x36F6E480, 0x36F5FC00, 0x36F51380, - 0x36F42B00, 0x36F34280, 0x36F25A00, - 0x36F17180, 0x36F08900, 0x36EFA080, - 0x36EEB800, 0x36EDCF80, 0x36ECE700, - 0x36EBFE80, 0x36EB1600, 0x36EA2D80, - 0x36E94500, 0x36E85C80, 0x36E77400, - 0x36E68B80, 0x36E5A300, 0x36E4BA80, - 0x36E3D200, 0x36E2E980, 0x36E20100, - 0x36E11880, 0x36E03000, 0x36DF4780, - 0x36DE5F00, 0x36DD7680, 0x36DC8E00, - 0x36DBA580, 0x36DABD00, 0x36D9D480, - 0x36D8EC00, 0x36D80380, 0x36D71B00, - 0x36D63280, 0x36D54A00, 0x36D46180, - 0x36D37900, 0x36D29080, 0x36D1A800, - 0x36D0BF80, 0x36CFD700, 0x36CEEE80, - 0x36CE0600, 0x36CD1D80, 0x36CC3500, - 0x36CB4C80, 0x36CA6400, 0x36C97B80, - 0x36C89300, 0x36C7AA80, 0x36C6C200, - 0x36C5D980, 0x36C4F100, 0x36C40880, - 0x36C32000, 0x36C23780, 0x36C14F00, - 0x36C06680, 0x36BF7E00, 0x36BE9580, - 0x36BDAD00, 0x36BCC480, 0x36BBDC00, - 0x36BAF380, 0x36BA0B00, 0x36B92280, - 0x36B83A00, 0x36B75180, 0x36B66900, - 0x36B58080, 0x36B49800, 0x36B3AF80, - 0x36B2C700, 0x36B1DE80, 0x36B0F600, - 0x36B00D80, 0x36AF2500, 0x36AE3C80, - 0x36AD5400, 0x36AC6B80, 0x36AB8300, - 0x36AA9A80, 0x36A9B200, 0x36A8C980, - 0x36A7E100, 0x36A6F880, 0x36A61000, - 0x36A52780, 0x36A43F00, 0x36A35680, - 0x36A26E00, 0x36A18580, 0x36A09D00, - 0x369FB480, 0x369ECC00, 0x369DE380, - 0x369CFB00, 0x369C1280, 0x369B2A00, - 0x369A4180, 0x36995900, 0x36987080, - 0x36978800, 0x36969F80, 0x3695B700, - 0x3694CE80, 0x3693E600, 0x3692FD80, - 0x36921500, 0x36912C80, 0x36904400, - 0x368F5B80, 0x368E7300, 0x368D8A80, - 0x368CA200, 0x368BB980, 0x368AD100, - 0x3689E880, 0x36890000, 0x36881780, - 0x36872F00, 0x36864680, 0x36855E00, - 0x36847580, 0x36838D00, 0x3682A480, - 0x3681BC00, 0x3680D380, 0x367FEB00, - 0x367F0280, 0x367E1A00, 0x367D3180, - 0x367C4900, 0x367B6080, 0x367A7800, - 0x36798F80, 0x3678A700, 0x3677BE80, - 0x3676D600, 0x3675ED80, 0x36750500, - 0x36741C80, 0x36733400, 0x36724B80, - 0x36716300, 0x36707A80, 0x366F9200, - 0x366EA980, 0x366DC100, 0x366CD880, - 0x366BF000, 0x366B0780, 0x366A1F00, - 0x36693680, 0x36684E00, 0x36676580, - 0x36667D00, 0x36659480, 0x3664AC00, - 0x3663C380, 0x3662DB00, 0x3661F280, - 0x36610A00, 0x36602180, 0x365F3900, - 0x365E5080, 0x365D6800, 0x365C7F80, - 0x365B9700, 0x365AAE80, 0x3659C600, - 0x3658DD80, 0x3657F500, 0x36570C80, - 0x36562400, 0x36553B80, 0x36545300, - 0x36536A80, 0x36528200, 0x36519980, - 0x3650B100, 0x364FC880, 0x364EE000, - 0x364DF780, 0x364D0F00, 0x364C2680, - 0x364B3E00, 0x364A5580, 0x36496D00, - 0x36488480, 0x36479C00, 0x3646B380, - 0x3645CB00, 0x3644E280, 0x3643FA00, - 0x36431180, 0x36422900, 0x36414080, - 0x36405800, 0x363F6F80, 0x363E8700, - 0x363D9E80, 0x363CB600, 0x363BCD80, - 0x363AE500, 0x3639FC80, 0x36391400, - 0x36382B80, 0x36374300, 0x36365A80, - 0x36357200, 0x36348980, 0x3633A100, - 0x3632B880, 0x3631D000, 0x3630E780, - 0x362FFF00, 0x362F1680, 0x362E2E00, - 0x362D4580, 0x362C5D00, 0x362B7480, - 0x362A8C00, 0x3629A380, 0x3628BB00, - 0x3627D280, 0x3626EA00, 0x36260180, - 0x36251900, 0x36243080, 0x36234800, - 0x36225F80, 0x36217700, 0x36208E80, - 0x361FA600, 0x361EBD80, 0x361DD500, - 0x361CEC80, 0x361C0400, 0x361B1B80, - 0x361A3300, 0x36194A80, 0x36186200, - 0x36177980, 0x36169100, 0x3615A880, - 0x3614C000, 0x3613D780, 0x3612EF00, - 0x36120680, 0x36111E00, 0x36103580, - 0x360F4D00, 0x360E6480, 0x360D7C00, - 0x360C9380, 0x360BAB00, 0x360AC280, - 0x3609DA00, 0x3608F180, 0x36080900, - 0x36072080, 0x36063800, 0x36054F80, - 0x36046700, 0x36037E80, 0x36029600, - 0x3601AD80, 0x3600C500, 0x35FFDC80, - 0x35FEF400, 0x35FE0B80, 0x35FD2300, - 0x35FC3A80, 0x35FB5200, 0x35FA6980, - 0x35F98100, 0x35F89880, 0x35F7B000, - 0x35F6C780, 0x35F5DF00, 0x35F4F680, - 0x35F40E00, 0x35F32580, 0x35F23D00, - 0x35F15480, 0x35F06C00, 0x35EF8380, - 0x35EE9B00, 0x35EDB280, 0x35ECCA00, - 0x35EBE180, 0x35EAF900, 0x35EA1080, - 0x35E92800, 0x35E83F80, 0x35E75700, - 0x35E66E80, 0x35E58600, 0x35E49D80, - 0x35E3B500, 0x35E2CC80, 0x35E1E400, - 0x35E0FB80, 0x35E01300, 0x35DF2A80, - 0x35DE4200, 0x35DD5980, 0x35DC7100, - 0x35DB8880, 0x35DAA000, 0x35D9B780, - 0x35D8CF00, 0x35D7E680, 0x35D6FE00, - 0x35D61580, 0x35D52D00, 0x35D44480, - 0x35D35C00, 0x35D27380, 0x35D18B00, - 0x35D0A280, 0x35CFBA00, 0x35CED180, - 0x35CDE900, 0x35CD0080, 0x35CC1800, - 0x35CB2F80, 0x35CA4700, 0x35C95E80, - 0x35C87600, 0x35C78D80, 0x35C6A500, - 0x35C5BC80, 0x35C4D400, 0x35C3EB80, - 0x35C30300, 0x35C21A80, 0x35C13200, - 0x35C04980, 0x35BF6100, 0x35BE7880, - 0x35BD9000, 0x35BCA780, 0x35BBBF00, - 0x35BAD680, 0x35B9EE00, 0x35B90580, - 0x35B81D00, 0x35B73480, 0x35B64C00, - 0x35B56380, 0x35B47B00, 0x35B39280, - 0x35B2AA00, 0x35B1C180, 0x35B0D900, - 0x35AFF080, 0x35AF0800, 0x35AE1F80, - 0x35AD3700, 0x35AC4E80, 0x35AB6600, - 0x35AA7D80, 0x35A99500, 0x35A8AC80, - 0x35A7C400, 0x35A6DB80, 0x35A5F300, - 0x35A50A80, 0x35A42200, 0x35A33980, - 0x35A25100, 0x35A16880, 0x35A08000, - 0x359F9780, 0x359EAF00, 0x359DC680, - 0x359CDE00, 0x359BF580, 0x359B0D00, - 0x359A2480, 0x35993C00, 0x35985380, - 0x35976B00, 0x35968280, 0x35959A00, - 0x3594B180, 0x3593C900, 0x3592E080, - 0x3591F800, 0x35910F80, 0x35902700, - 0x358F3E80, 0x358E5600, 0x358D6D80, - 0x358C8500, 0x358B9C80, 0x358AB400, - 0x3589CB80, 0x3588E300, 0x3587FA80, - 0x35871200, 0x35862980, 0x35854100, - 0x35845880, 0x35837000, 0x35828780, - 0x35819F00, 0x3580B680, 0x357FCE00, - 0x357EE580, 0x357DFD00, 0x357D1480, - 0x357C2C00, 0x357B4380, 0x357A5B00, - 0x35797280, 0x35788A00, 0x3577A180, - 0x3576B900, 0x3575D080, 0x3574E800, - 0x3573FF80, 0x35731700, 0x35722E80, - 0x35714600, 0x35705D80, 0x356F7500, - 0x356E8C80, 0x356DA400, 0x356CBB80, - 0x356BD300, 0x356AEA80, 0x356A0200, - 0x35691980, 0x35683100, 0x35674880, - 0x35666000, 0x35657780, 0x35648F00, - 0x3563A680, 0x3562BE00, 0x3561D580, - 0x3560ED00, 0x35600480, 0x355F1C00, - 0x355E3380, 0x355D4B00, 0x355C6280, - 0x355B7A00, 0x355A9180, 0x3559A900, - 0x3558C080, 0x3557D800, 0x3556EF80, - 0x35560700, 0x35551E80, 0x35543600, - 0x35534D80, 0x35526500, 0x35517C80, - 0x35509400, 0x354FAB80, 0x354EC300, - 0x354DDA80, 0x354CF200, 0x354C0980, - 0x354B2100, 0x354A3880, 0x35495000, - 0x35486780, 0x35477F00, 0x35469680, - 0x3545AE00, 0x3544C580, 0x3543DD00, - 0x3542F480, 0x35420C00, 0x35412380, - 0x35403B00, 0x353F5280, 0x353E6A00, - 0x353D8180, 0x353C9900, 0x353BB080, - 0x353AC800, 0x3539DF80, 0x3538F700, - 0x35380E80, 0x35372600, 0x35363D80, - 0x35355500, 0x35346C80, 0x35338400, - 0x35329B80, 0x3531B300, 0x3530CA80, - 0x352FE200, 0x352EF980, 0x352E1100, - 0x352D2880, 0x352C4000, 0x352B5780, - 0x352A6F00, 0x35298680, 0x35289E00, - 0x3527B580, 0x3526CD00, 0x3525E480, - 0x3524FC00, 0x35241380, 0x35232B00, - 0x35224280, 0x35215A00, 0x35207180, - 0x351F8900, 0x351EA080, 0x351DB800, - 0x351CCF80, 0x351BE700, 0x351AFE80, - 0x351A1600, 0x35192D80, 0x35184500, - 0x35175C80, 0x35167400, 0x35158B80, - 0x3514A300, 0x3513BA80, 0x3512D200, - 0x3511E980, 0x35110100, 0x35101880, - 0x350F3000, 0x350E4780, 0x350D5F00, - 0x350C7680, 0x350B8E00, 0x350AA580, - 0x3509BD00, 0x3508D480, 0x3507EC00, - 0x35070380, 0x35061B00, 0x35053280, - 0x35044A00, 0x35036180, 0x35027900, - 0x35019080, 0x3500A800, 0x34FFBF80, - 0x34FED700, 0x34FDEE80, 0x34FD0600, - 0x34FC1D80, 0x34FB3500, 0x34FA4C80, - 0x34F96400, 0x34F87B80, 0x34F79300, - 0x34F6AA80, 0x34F5C200, 0x34F4D980, - 0x34F3F100, 0x34F30880, 0x34F22000, - 0x34F13780, 0x34F04F00, 0x34EF6680, - 0x34EE7E00, 0x34ED9580, 0x34ECAD00, - 0x34EBC480, 0x34EADC00, 0x34E9F380, - 0x34E90B00, 0x34E82280, 0x34E73A00, - 0x34E65180, 0x34E56900, 0x34E48080, - 0x34E39800, 0x34E2AF80, 0x34E1C700, - 0x34E0DE80, 0x34DFF600, 0x34DF0D80, - 0x34DE2500, 0x34DD3C80, 0x34DC5400, - 0x34DB6B80, 0x34DA8300, 0x34D99A80, - 0x34D8B200, 0x34D7C980, 0x34D6E100, - 0x34D5F880, 0x34D51000, 0x34D42780, - 0x34D33F00, 0x34D25680, 0x34D16E00, - 0x34D08580, 0x34CF9D00, 0x34CEB480, - 0x34CDCC00, 0x34CCE380, 0x34CBFB00, - 0x34CB1280, 0x34CA2A00, 0x34C94180, - 0x34C85900, 0x34C77080, 0x34C68800, - 0x34C59F80, 0x34C4B700, 0x34C3CE80, - 0x34C2E600, 0x34C1FD80, 0x34C11500, - 0x34C02C80, 0x34BF4400, 0x34BE5B80, - 0x34BD7300, 0x34BC8A80, 0x34BBA200, - 0x34BAB980, 0x34B9D100, 0x34B8E880, - 0x34B80000, 0x34B726C0, 0x34B64D80, - 0x34B57440, 0x34B49B00, 0x34B3C1C0, - 0x34B2E880, 0x34B20F40, 0x34B13600, - 0x34B05CC0, 0x34AF8380, 0x34AEAA40, - 0x34ADD100, 0x34ACF7C0, 0x34AC1E80, - 0x34AB4540, 0x34AA6C00, 0x34A992C0, - 0x34A8B980, 0x34A7E040, 0x34A70700, - 0x34A62DC0, 0x34A55480, 0x34A47B40, - 0x34A3A200, 0x34A2C8C0, 0x34A1EF80, - 0x34A11640, 0x34A03D00, 0x349F63C0, - 0x349E8A80, 0x349DB140, 0x349CD800, - 0x349BFEC0, 0x349B2580, 0x349A4C40, - 0x34997300, 0x349899C0, 0x3497C080, - 0x3496E740, 0x34960E00, 0x349534C0, - 0x34945B80, 0x34938240, 0x3492A900, - 0x3491CFC0, 0x3490F680, 0x34901D40, - 0x348F4400, 0x348E6AC0, 0x348D9180, - 0x348CB840, 0x348BDF00, 0x348B05C0, - 0x348A2C80, 0x34895340, 0x34887A00, - 0x3487A0C0, 0x3486C780, 0x3485EE40, - 0x34851500, 0x34843BC0, 0x34836280, - 0x34828940, 0x3481B000, 0x3480D6C0, - 0x347FFD80, 0x347F2440, 0x347E4B00, - 0x347D71C0, 0x347C9880, 0x347BBF40, - 0x347AE600, 0x347A0CC0, 0x34793380, - 0x34785A40, 0x34778100, 0x3476A7C0, - 0x3475CE80, 0x3474F540, 0x34741C00, - 0x347342C0, 0x34726980, 0x34719040, - 0x3470B700, 0x346FDDC0, 0x346F0480, - 0x346E2B40, 0x346D5200, 0x346C78C0, - 0x346B9F80, 0x346AC640, 0x3469ED00, - 0x346913C0, 0x34683A80, 0x34676140, - 0x34668800, 0x3465AEC0, 0x3464D580, - 0x3463FC40, 0x34632300, 0x346249C0, - 0x34617080, 0x34609740, 0x345FBE00, - 0x345EE4C0, 0x345E0B80, 0x345D3240, - 0x345C5900, 0x345B7FC0, 0x345AA680, - 0x3459CD40, 0x3458F400, 0x34581AC0, - 0x34574180, 0x34566840, 0x34558F00, - 0x3454B5C0, 0x3453DC80, 0x34530340, - 0x34522A00, 0x345150C0, 0x34507780, - 0x344F9E40, 0x344EC500, 0x344DEBC0, - 0x344D1280, 0x344C3940, 0x344B6000, - 0x344A86C0, 0x3449AD80, 0x3448D440, - 0x3447FB00, 0x344721C0, 0x34464880, - 0x34456F40, 0x34449600, 0x3443BCC0, - 0x3442E380, 0x34420A40, 0x34413100, - 0x344057C0, 0x343F7E80, 0x343EA540, - 0x343DCC00, 0x343CF2C0, 0x343C1980, - 0x343B4040, 0x343A6700, 0x34398DC0, - 0x3438B480, 0x3437DB40, 0x34370200, - 0x343628C0, 0x34354F80, 0x34347640, - 0x34339D00, 0x3432C3C0, 0x3431EA80, - 0x34311140, 0x34303800, 0x342F5EC0, - 0x342E8580, 0x342DAC40, 0x342CD300, - 0x342BF9C0, 0x342B2080, 0x342A4740, - 0x34296E00, 0x342894C0, 0x3427BB80, - 0x3426E240, 0x34260900, 0x34252FC0, - 0x34245680, 0x34237D40, 0x3422A400, - 0x3421CAC0, 0x3420F180, 0x34201840, - 0x341F3F00, 0x341E65C0, 0x341D8C80, - 0x341CB340, 0x341BDA00, 0x341B00C0, - 0x341A2780, 0x34194E40, 0x34187500, - 0x34179BC0, 0x3416C280, 0x3415E940, - 0x34151000, 0x341436C0, 0x34135D80, - 0x34128440, 0x3411AB00, 0x3410D1C0, - 0x340FF880, 0x340F1F40, 0x340E4600, - 0x340D6CC0, 0x340C9380, 0x340BBA40, - 0x340AE100, 0x340A07C0, 0x34092E80, - 0x34085540, 0x34077C00, 0x3406A2C0, - 0x3405C980, 0x3404F040, 0x34041700, - 0x34033DC0, 0x34026480, 0x34018B40, - 0x3400B200, 0x33FFD8C0, 0x33FEFF80, - 0x33FE2640, 0x33FD4D00, 0x33FC73C0, - 0x33FB9A80, 0x33FAC140, 0x33F9E800, - 0x33F90EC0, 0x33F83580, 0x33F75C40, - 0x33F68300, 0x33F5A9C0, 0x33F4D080, - 0x33F3F740, 0x33F31E00, 0x33F244C0, - 0x33F16B80, 0x33F09240, 0x33EFB900, - 0x33EEDFC0, 0x33EE0680, 0x33ED2D40, - 0x33EC5400, 0x33EB7AC0, 0x33EAA180, - 0x33E9C840, 0x33E8EF00, 0x33E815C0, - 0x33E73C80, 0x33E66340, 0x33E58A00, - 0x33E4B0C0, 0x33E3D780, 0x33E2FE40, - 0x33E22500, 0x33E14BC0, 0x33E07280, - 0x33DF9940, 0x33DEC000, 0x33DDE6C0, - 0x33DD0D80, 0x33DC3440, 0x33DB5B00, - 0x33DA81C0, 0x33D9A880, 0x33D8CF40, - 0x33D7F600, 0x33D71CC0, 0x33D64380, - 0x33D56A40, 0x33D49100, 0x33D3B7C0, - 0x33D2DE80, 0x33D20540, 0x33D12C00, - 0x33D052C0, 0x33CF7980, 0x33CEA040, - 0x33CDC700, 0x33CCEDC0, 0x33CC1480, - 0x33CB3B40, 0x33CA6200, 0x33C988C0, - 0x33C8AF80, 0x33C7D640, 0x33C6FD00, - 0x33C623C0, 0x33C54A80, 0x33C47140, - 0x33C39800, 0x33C2BEC0, 0x33C1E580, - 0x33C10C40, 0x33C03300, 0x33BF59C0, - 0x33BE8080, 0x33BDA740, 0x33BCCE00, - 0x33BBF4C0, 0x33BB1B80, 0x33BA4240, - 0x33B96900, 0x33B88FC0, 0x33B7B680, - 0x33B6DD40, 0x33B60400, 0x33B52AC0, - 0x33B45180, 0x33B37840, 0x33B29F00, - 0x33B1C5C0, 0x33B0EC80, 0x33B01340, - 0x33AF3A00, 0x33AE60C0, 0x33AD8780, - 0x33ACAE40, 0x33ABD500, 0x33AAFBC0, - 0x33AA2280, 0x33A94940, 0x33A87000, - 0x33A796C0, 0x33A6BD80, 0x33A5E440, - 0x33A50B00, 0x33A431C0, 0x33A35880, - 0x33A27F40, 0x33A1A600, 0x33A0CCC0, - 0x339FF380, 0x339F1A40, 0x339E4100, - 0x339D67C0, 0x339C8E80, 0x339BB540, - 0x339ADC00, 0x339A02C0, 0x33992980, - 0x33985040, 0x33977700, 0x33969DC0, - 0x3395C480, 0x3394EB40, 0x33941200, - 0x339338C0, 0x33925F80, 0x33918640, - 0x3390AD00, 0x338FD3C0, 0x338EFA80, - 0x338E2140, 0x338D4800, 0x338C6EC0, - 0x338B9580, 0x338ABC40, 0x3389E300, - 0x338909C0, 0x33883080, 0x33875740, - 0x33867E00, 0x3385A4C0, 0x3384CB80, - 0x3383F240, 0x33831900, 0x33823FC0, - 0x33816680, 0x33808D40, 0x337FB400, - 0x337EDAC0, 0x337E0180, 0x337D2840, - 0x337C4F00, 0x337B75C0, 0x337A9C80, - 0x3379C340, 0x3378EA00, 0x337810C0, - 0x33773780, 0x33765E40, 0x33758500, - 0x3374ABC0, 0x3373D280, 0x3372F940, - 0x33722000, 0x337146C0, 0x33706D80, - 0x336F9440, 0x336EBB00, 0x336DE1C0, - 0x336D0880, 0x336C2F40, 0x336B5600, - 0x336A7CC0, 0x3369A380, 0x3368CA40, - 0x3367F100, 0x336717C0, 0x33663E80, - 0x33656540, 0x33648C00, 0x3363B2C0, - 0x3362D980, 0x33620040, 0x33612700, - 0x33604DC0, 0x335F7480, 0x335E9B40, - 0x335DC200, 0x335CE8C0, 0x335C0F80, - 0x335B3640, 0x335A5D00, 0x335983C0, - 0x3358AA80, 0x3357D140, 0x3356F800, - 0x33561EC0, 0x33554580, 0x33546C40, - 0x33539300, 0x3352B9C0, 0x3351E080, - 0x33510740, 0x33502E00, 0x334F54C0, - 0x334E7B80, 0x334DA240, 0x334CC900, - 0x334BEFC0, 0x334B1680, 0x334A3D40, - 0x33496400, 0x33488AC0, 0x3347B180, - 0x3346D840, 0x3345FF00, 0x334525C0, - 0x33444C80, 0x33437340, 0x33429A00, - 0x3341C0C0, 0x3340E780, 0x33400E40, - 0x333F3500, 0x333E5BC0, 0x333D8280, - 0x333CA940, 0x333BD000, 0x333AF6C0, - 0x333A1D80, 0x33394440, 0x33386B00, - 0x333791C0, 0x3336B880, 0x3335DF40, - 0x33350600, 0x33342CC0, 0x33335380, - 0x33327A40, 0x3331A100, 0x3330C7C0, - 0x332FEE80, 0x332F1540, 0x332E3C00, - 0x332D62C0, 0x332C8980, 0x332BB040, - 0x332AD700, 0x3329FDC0, 0x33292480, - 0x33284B40, 0x33277200, 0x332698C0, - 0x3325BF80, 0x3324E640, 0x33240D00, - 0x332333C0, 0x33225A80, 0x33218140, - 0x3320A800, 0x331FCEC0, 0x331EF580, - 0x331E1C40, 0x331D4300, 0x331C69C0, - 0x331B9080, 0x331AB740, 0x3319DE00, - 0x331904C0, 0x33182B80, 0x33175240, - 0x33167900, 0x33159FC0, 0x3314C680, - 0x3313ED40, 0x33131400, 0x33123AC0, - 0x33116180, 0x33108840, 0x330FAF00, - 0x330ED5C0, 0x330DFC80, 0x330D2340, - 0x330C4A00, 0x330B70C0, 0x330A9780, - 0x3309BE40, 0x3308E500, 0x33080BC0, - 0x33073280, 0x33065940, 0x33058000, - 0x3304A6C0, 0x3303CD80, 0x3302F440, - 0x33021B00, 0x330141C0, 0x33006880, - 0x32FF8F40, 0x32FEB600, 0x32FDDCC0, - 0x32FD0380, 0x32FC2A40, 0x32FB5100, - 0x32FA77C0, 0x32F99E80, 0x32F8C540, - 0x32F7EC00, 0x32F712C0, 0x32F63980, - 0x32F56040, 0x32F48700, 0x32F3ADC0, - 0x32F2D480, 0x32F1FB40, 0x32F12200, - 0x32F048C0, 0x32EF6F80, 0x32EE9640, - 0x32EDBD00, 0x32ECE3C0, 0x32EC0A80, - 0x32EB3140, 0x32EA5800, 0x32E97EC0, - 0x32E8A580, 0x32E7CC40, 0x32E6F300, - 0x32E619C0, 0x32E54080, 0x32E46740, - 0x32E38E00, 0x32E2B4C0, 0x32E1DB80, - 0x32E10240, 0x32E02900, 0x32DF4FC0, - 0x32DE7680, 0x32DD9D40, 0x32DCC400, - 0x32DBEAC0, 0x32DB1180, 0x32DA3840, - 0x32D95F00, 0x32D885C0, 0x32D7AC80, - 0x32D6D340, 0x32D5FA00, 0x32D520C0, - 0x32D44780, 0x32D36E40, 0x32D29500, - 0x32D1BBC0, 0x32D0E280, 0x32D00940, - 0x32CF3000, 0x32CE56C0, 0x32CD7D80, - 0x32CCA440, 0x32CBCB00, 0x32CAF1C0, - 0x32CA1880, 0x32C93F40, 0x32C86600, - 0x32C78CC0, 0x32C6B380, 0x32C5DA40, - 0x32C50100, 0x32C427C0, 0x32C34E80, - 0x32C27540, 0x32C19C00, 0x32C0C2C0, - 0x32BFE980, 0x32BF1040, 0x32BE3700, - 0x32BD5DC0, 0x32BC8480, 0x32BBAB40, - 0x32BAD200, 0x32B9F8C0, 0x32B91F80, - 0x32B84640, 0x32B76D00, 0x32B693C0, - 0x32B5BA80, 0x32B4E140, 0x32B40800, - 0x32B32EC0, 0x32B25580, 0x32B17C40, - 0x32B0A300, 0x32AFC9C0, 0x32AEF080, - 0x32AE1740, 0x32AD3E00, 0x32AC64C0, - 0x32AB8B80, 0x32AAB240, 0x32A9D900, - 0x32A8FFC0, 0x32A82680, 0x32A74D40, - 0x32A67400, 0x32A59AC0, 0x32A4C180, - 0x32A3E840, 0x32A30F00, 0x32A235C0, - 0x32A15C80, 0x32A08340, 0x329FAA00, - 0x329ED0C0, 0x329DF780, 0x329D1E40, - 0x329C4500, 0x329B6BC0, 0x329A9280, - 0x3299B940, 0x3298E000, 0x329806C0, - 0x32972D80, 0x32965440, 0x32957B00, - 0x3294A1C0, 0x3293C880, 0x3292EF40, - 0x32921600, 0x32913CC0, 0x32906380, - 0x328F8A40, 0x328EB100, 0x328DD7C0, - 0x328CFE80, 0x328C2540, 0x328B4C00, - 0x328A72C0, 0x32899980, 0x3288C040, - 0x3287E700, 0x32870DC0, 0x32863480, - 0x32855B40, 0x32848200, 0x3283A8C0, - 0x3282CF80, 0x3281F640, 0x32811D00, - 0x328043C0, 0x327F6A80, 0x327E9140, - 0x327DB800, 0x327CDEC0, 0x327C0580, - 0x327B2C40, 0x327A5300, 0x327979C0, - 0x3278A080, 0x3277C740, 0x3276EE00, - 0x327614C0, 0x32753B80, 0x32746240, - 0x32738900, 0x3272AFC0, 0x3271D680, - 0x3270FD40, 0x32702400, 0x326F4AC0, - 0x326E7180, 0x326D9840, 0x326CBF00, - 0x326BE5C0, 0x326B0C80, 0x326A3340, - 0x32695A00, 0x326880C0, 0x3267A780, - 0x3266CE40, 0x3265F500, 0x32651BC0, - 0x32644280, 0x32636940, 0x32629000, - 0x3261B6C0, 0x3260DD80, 0x32600440, - 0x325F2B00, 0x325E51C0, 0x325D7880, - 0x325C9F40, 0x325BC600, 0x325AECC0, - 0x325A1380, 0x32593A40, 0x32586100, - 0x325787C0, 0x3256AE80, 0x3255D540, - 0x3254FC00, 0x325422C0, 0x32534980, - 0x32527040, 0x32519700, 0x3250BDC0, - 0x324FE480, 0x324F0B40, 0x324E3200, - 0x324D58C0, 0x324C7F80, 0x324BA640, - 0x324ACD00, 0x3249F3C0, 0x32491A80, - 0x32484140, 0x32476800, 0x32468EC0, - 0x3245B580, 0x3244DC40, 0x32440300, - 0x324329C0, 0x32425080, 0x32417740, - 0x32409E00, 0x323FC4C0, 0x323EEB80, - 0x323E1240, 0x323D3900, 0x323C5FC0, - 0x323B8680, 0x323AAD40, 0x3239D400, - 0x3238FAC0, 0x32382180, 0x32374840, - 0x32366F00, 0x323595C0, 0x3234BC80, - 0x3233E340, 0x32330A00, 0x323230C0, - 0x32315780, 0x32307E40, 0x322FA500, - 0x322ECBC0, 0x322DF280, 0x322D1940, - 0x322C4000, 0x322B66C0, 0x322A8D80, - 0x3229B440, 0x3228DB00, 0x322801C0, - 0x32272880, 0x32264F40, 0x32257600, - 0x32249CC0, 0x3223C380, 0x3222EA40, - 0x32221100, 0x322137C0, 0x32205E80, - 0x321F8540, 0x321EAC00, 0x321DD2C0, - 0x321CF980, 0x321C2040, 0x321B4700, - 0x321A6DC0, 0x32199480, 0x3218BB40, - 0x3217E200, 0x321708C0, 0x32162F80, - 0x32155640, 0x32147D00, 0x3213A3C0, - 0x3212CA80, 0x3211F140, 0x32111800, - 0x32103EC0, 0x320F6580, 0x320E8C40, - 0x320DB300, 0x320CD9C0, 0x320C0080, - 0x320B2740, 0x320A4E00, 0x320974C0, - 0x32089B80, 0x3207C240, 0x3206E900, - 0x32060FC0, 0x32053680, 0x32045D40, - 0x32038400, 0x3202AAC0, 0x3201D180, - 0x3200F840, 0x32001F00, 0x31FF45C0, - 0x31FE6C80, 0x31FD9340, 0x31FCBA00, - 0x31FBE0C0, 0x31FB0780, 0x31FA2E40, - 0x31F95500, 0x31F87BC0, 0x31F7A280, - 0x31F6C940, 0x31F5F000, 0x31F516C0, - 0x31F43D80, 0x31F36440, 0x31F28B00, - 0x31F1B1C0, 0x31F0D880, 0x31EFFF40, - 0x31EF2600, 0x31EE4CC0, 0x31ED7380, - 0x31EC9A40, 0x31EBC100, 0x31EAE7C0, - 0x31EA0E80, 0x31E93540, 0x31E85C00, - 0x31E782C0, 0x31E6A980, 0x31E5D040, - 0x31E4F700, 0x31E41DC0, 0x31E34480, - 0x31E26B40, 0x31E19200, 0x31E0B8C0, - 0x31DFDF80, 0x31DF0640, 0x31DE2D00, - 0x31DD53C0, 0x31DC7A80, 0x31DBA140, - 0x31DAC800, 0x31D9EEC0, 0x31D91580, - 0x31D83C40, 0x31D76300, 0x31D689C0, - 0x31D5B080, 0x31D4D740, 0x31D3FE00, - 0x31D324C0, 0x31D24B80, 0x31D17240, - 0x31D09900, 0x31CFBFC0, 0x31CEE680, - 0x31CE0D40, 0x31CD3400, 0x31CC5AC0, - 0x31CB8180, 0x31CAA840, 0x31C9CF00, - 0x31C8F5C0, 0x31C81C80, 0x31C74340, - 0x31C66A00, 0x31C590C0, 0x31C4B780, - 0x31C3DE40, 0x31C30500, 0x31C22BC0, - 0x31C15280, 0x31C07940, 0x31BFA000, - 0x31BEC6C0, 0x31BDED80, 0x31BD1440, - 0x31BC3B00, 0x31BB61C0, 0x31BA8880, - 0x31B9AF40, 0x31B8D600, 0x31B7FCC0, - 0x31B72380, 0x31B64A40, 0x31B57100, - 0x31B497C0, 0x31B3BE80, 0x31B2E540, - 0x31B20C00, 0x31B132C0, 0x31B05980, - 0x31AF8040, 0x31AEA700, 0x31ADCDC0, - 0x31ACF480, 0x31AC1B40, 0x31AB4200, - 0x31AA68C0, 0x31A98F80, 0x31A8B640, - 0x31A7DD00, 0x31A703C0, 0x31A62A80, - 0x31A55140, 0x31A47800, 0x31A39EC0, - 0x31A2C580, 0x31A1EC40, 0x31A11300, - 0x31A039C0, 0x319F6080, 0x319E8740, - 0x319DAE00, 0x319CD4C0, 0x319BFB80, - 0x319B2240, 0x319A4900, 0x31996FC0, - 0x31989680, 0x3197BD40, 0x3196E400, - 0x31960AC0, 0x31953180, 0x31945840, - 0x31937F00, 0x3192A5C0, 0x3191CC80, - 0x3190F340, 0x31901A00, 0x318F40C0, - 0x318E6780, 0x318D8E40, 0x318CB500, - 0x318BDBC0, 0x318B0280, 0x318A2940, - 0x31895000, 0x318876C0, 0x31879D80, - 0x3186C440, 0x3185EB00, 0x318511C0, - 0x31843880, 0x31835F40, 0x31828600, - 0x3181ACC0, 0x3180D380, 0x317FFA40, - 0x317F2100, 0x317E47C0, 0x317D6E80, - 0x317C9540, 0x317BBC00, 0x317AE2C0, - 0x317A0980, 0x31793040, 0x31785700, - 0x31777DC0, 0x3176A480, 0x3175CB40, - 0x3174F200, 0x317418C0, 0x31733F80, - 0x31726640, 0x31718D00, 0x3170B3C0, - 0x316FDA80, 0x316F0140, 0x316E2800, - 0x316D4EC0, 0x316C7580, 0x316B9C40, - 0x316AC300, 0x3169E9C0, 0x31691080, - 0x31683740, 0x31675E00, 0x316684C0, - 0x3165AB80, 0x3164D240, 0x3163F900, - 0x31631FC0, 0x31624680, 0x31616D40, - 0x31609400, 0x315FBAC0, 0x315EE180, - 0x315E0840, 0x315D2F00, 0x315C55C0, - 0x315B7C80, 0x315AA340, 0x3159CA00, - 0x3158F0C0, 0x31581780, 0x31573E40, - 0x31566500, 0x31558BC0, 0x3154B280, - 0x3153D940, 0x31530000, 0x315226C0, - 0x31514D80, 0x31507440, 0x314F9B00, - 0x314EC1C0, 0x314DE880, 0x314D0F40, - 0x314C3600, 0x314B5CC0, 0x314A8380, - 0x3149AA40, 0x3148D100, 0x3147F7C0, - 0x31471E80, 0x31464540, 0x31456C00, - 0x314492C0, 0x3143B980, 0x3142E040, - 0x31420700, 0x31412DC0, 0x31405480, - 0x313F7B40, 0x313EA200, 0x313DC8C0, - 0x313CEF80, 0x313C1640, 0x313B3D00, - 0x313A63C0, 0x31398A80, 0x3138B140, - 0x3137D800, 0x3136FEC0, 0x31362580, - 0x31354C40, 0x31347300, 0x313399C0, - 0x3132C080, 0x3131E740, 0x31310E00, - 0x313034C0, 0x312F5B80, 0x312E8240, - 0x312DA900, 0x312CCFC0, 0x312BF680, - 0x312B1D40, 0x312A4400, 0x31296AC0, - 0x31289180, 0x3127B840, 0x3126DF00, - 0x312605C0, 0x31252C80, 0x31245340, - 0x31237A00, 0x3122A0C0, 0x3121C780, - 0x3120EE40, 0x31201500, 0x311F3BC0, - 0x311E6280, 0x311D8940, 0x311CB000, - 0x311BD6C0, 0x311AFD80, 0x311A2440, - 0x31194B00, 0x311871C0, 0x31179880, - 0x3116BF40, 0x3115E600, 0x31150CC0, - 0x31143380, 0x31135A40, 0x31128100, - 0x3111A7C0, 0x3110CE80, 0x310FF540, - 0x310F1C00, 0x310E42C0, 0x310D6980, - 0x310C9040, 0x310BB700, 0x310ADDC0, - 0x310A0480, 0x31092B40, 0x31085200, - 0x310778C0, 0x31069F80, 0x3105C640, - 0x3104ED00, 0x310413C0, 0x31033A80, - 0x31026140, 0x31018800, 0x3100AEC0, - 0x30FFD580, 0x30FEFC40, 0x30FE2300, - 0x30FD49C0, 0x30FC7080, 0x30FB9740, - 0x30FABE00, 0x30F9E4C0, 0x30F90B80, - 0x30F83240, 0x30F75900, 0x30F67FC0, - 0x30F5A680, 0x30F4CD40, 0x30F3F400, - 0x30F31AC0, 0x30F24180, 0x30F16840, - 0x30F08F00, 0x30EFB5C0, 0x30EEDC80, - 0x30EE0340, 0x30ED2A00, 0x30EC50C0, - 0x30EB7780, 0x30EA9E40, 0x30E9C500, - 0x30E8EBC0, 0x30E81280, 0x30E73940, - 0x30E66000, 0x30E586C0, 0x30E4AD80, - 0x30E3D440, 0x30E2FB00, 0x30E221C0, - 0x30E14880, 0x30E06F40, 0x30DF9600, - 0x30DEBCC0, 0x30DDE380, 0x30DD0A40, - 0x30DC3100, 0x30DB57C0, 0x30DA7E80, - 0x30D9A540, 0x30D8CC00, 0x30D7F2C0, - 0x30D71980, 0x30D64040, 0x30D56700, - 0x30D48DC0, 0x30D3B480, 0x30D2DB40, - 0x30D20200, 0x30D128C0, 0x30D04F80, - 0x30CF7640, 0x30CE9D00, 0x30CDC3C0, - 0x30CCEA80, 0x30CC1140, 0x30CB3800, - 0x30CA5EC0, 0x30C98580, 0x30C8AC40, - 0x30C7D300, 0x30C6F9C0, 0x30C62080, - 0x30C54740, 0x30C46E00, 0x30C394C0, - 0x30C2BB80, 0x30C1E240, 0x30C10900, - 0x30C02FC0, 0x30BF5680, 0x30BE7D40, - 0x30BDA400, 0x30BCCAC0, 0x30BBF180, - 0x30BB1840, 0x30BA3F00, 0x30B965C0, - 0x30B88C80, 0x30B7B340, 0x30B6DA00, - 0x30B600C0, 0x30B52780, 0x30B44E40, - 0x30B37500, 0x30B29BC0, 0x30B1C280, - 0x30B0E940, 0x30B01000, 0x30AF36C0, - 0x30AE5D80, 0x30AD8440, 0x30ACAB00, - 0x30ABD1C0, 0x30AAF880, 0x30AA1F40, - 0x30A94600, 0x30A86CC0, 0x30A79380, - 0x30A6BA40, 0x30A5E100, 0x30A507C0, - 0x30A42E80, 0x30A35540, 0x30A27C00, - 0x30A1A2C0, 0x30A0C980, 0x309FF040, - 0x309F1700, 0x309E3DC0, 0x309D6480, - 0x309C8B40, 0x309BB200, 0x309AD8C0, - 0x3099FF80, 0x30992640, 0x30984D00, - 0x309773C0, 0x30969A80, 0x3095C140, - 0x3094E800, 0x30940EC0, 0x30933580, - 0x30925C40, 0x30918300, 0x3090A9C0, - 0x308FD080, 0x308EF740, 0x308E1E00, - 0x308D44C0, 0x308C6B80, 0x308B9240, - 0x308AB900, 0x3089DFC0, 0x30890680, - 0x30882D40, 0x30875400, 0x30867AC0, - 0x3085A180, 0x3084C840, 0x3083EF00, - 0x308315C0, 0x30823C80, 0x30816340, - 0x30808A00, 0x307FB0C0, 0x307ED780, - 0x307DFE40, 0x307D2500, 0x307C4BC0, - 0x307B7280, 0x307A9940, 0x3079C000, - 0x3078E6C0, 0x30780D80, 0x30773440, - 0x30765B00, 0x307581C0, 0x3074A880, - 0x3073CF40, 0x3072F600, 0x30721CC0, - 0x30714380, 0x30706A40, 0x306F9100, - 0x306EB7C0, 0x306DDE80, 0x306D0540, - 0x306C2C00, 0x306B52C0, 0x306A7980, - 0x3069A040, 0x3068C700, 0x3067EDC0, - 0x30671480, 0x30663B40, 0x30656200, - 0x306488C0, 0x3063AF80, 0x3062D640, - 0x3061FD00, 0x306123C0, 0x30604A80, - 0x305F7140, 0x305E9800, 0x305DBEC0, - 0x305CE580, 0x305C0C40, 0x305B3300, - 0x305A59C0, 0x30598080, 0x3058A740, - 0x3057CE00, 0x3056F4C0, 0x30561B80, - 0x30554240, 0x30546900, 0x30538FC0, - 0x3052B680, 0x3051DD40, 0x30510400, - 0x30502AC0, 0x304F5180, 0x304E7840, - 0x304D9F00, 0x304CC5C0, 0x304BEC80, - 0x304B1340, 0x304A3A00, 0x304960C0, - 0x30488780, 0x3047AE40, 0x3046D500, - 0x3045FBC0, 0x30452280, 0x30444940, - 0x30437000, 0x304296C0, 0x3041BD80, - 0x3040E440, 0x30400B00, 0x303F31C0, - 0x303E5880, 0x303D7F40, 0x303CA600, - 0x303BCCC0, 0x303AF380, 0x303A1A40, - 0x30394100, 0x303867C0, 0x30378E80, - 0x3036B540, 0x3035DC00, 0x303502C0, - 0x30342980, 0x30335040, 0x30327700, - 0x30319DC0, 0x3030C480, 0x302FEB40, - 0x302F1200, 0x302E38C0, 0x302D5F80, - 0x302C8640, 0x302BAD00, 0x302AD3C0, - 0x3029FA80, 0x30292140, 0x30284800, - 0x30276EC0, 0x30269580, 0x3025BC40, - 0x3024E300, 0x302409C0, 0x30233080, - 0x30225740, 0x30217E00, 0x3020A4C0, - 0x301FCB80, 0x301EF240, 0x301E1900, - 0x301D3FC0, 0x301C6680, 0x301B8D40, - 0x301AB400, 0x3019DAC0, 0x30190180, - 0x30182840, 0x30174F00, 0x301675C0, - 0x30159C80, 0x3014C340, 0x3013EA00, - 0x301310C0, 0x30123780, 0x30115E40, - 0x30108500, 0x300FABC0, 0x300ED280, - 0x300DF940, 0x300D2000, 0x300C46C0, - 0x300B6D80, 0x300A9440, 0x3009BB00, - 0x3008E1C0, 0x30080880, 0x30072F40, - 0x30065600, 0x30057CC0, 0x3004A380, - 0x3003CA40, 0x3002F100, 0x300217C0, - 0x30013E80, 0x30006540, 0x2FFF8C00, - 0x2FFEB2C0, 0x2FFDD980, 0x2FFD0040, - 0x2FFC2700, 0x2FFB4DC0, 0x2FFA7480, - 0x2FF99B40, 0x2FF8C200, 0x2FF7E8C0, - 0x2FF70F80, 0x2FF63640, 0x2FF55D00, - 0x2FF483C0, 0x2FF3AA80, 0x2FF2D140, - 0x2FF1F800, 0x2FF11EC0, 0x2FF04580, - 0x2FEF6C40, 0x2FEE9300, 0x2FEDB9C0, - 0x2FECE080, 0x2FEC0740, 0x2FEB2E00, - 0x2FEA54C0, 0x2FE97B80, 0x2FE8A240, - 0x2FE7C900, 0x2FE6EFC0, 0x2FE61680, - 0x2FE53D40, 0x2FE46400, 0x2FE38AC0, - 0x2FE2B180, 0x2FE1D840, 0x2FE0FF00, - 0x2FE025C0, 0x2FDF4C80, 0x2FDE7340, - 0x2FDD9A00, 0x2FDCC0C0, 0x2FDBE780, - 0x2FDB0E40, 0x2FDA3500, 0x2FD95BC0, - 0x2FD88280, 0x2FD7A940, 0x2FD6D000, - 0x2FD5F6C0, 0x2FD51D80, 0x2FD44440, - 0x2FD36B00, 0x2FD291C0, 0x2FD1B880, - 0x2FD0DF40, 0x2FD00600, 0x2FCF2CC0, - 0x2FCE5380, 0x2FCD7A40, 0x2FCCA100, - 0x2FCBC7C0, 0x2FCAEE80, 0x2FCA1540, - 0x2FC93C00, 0x2FC862C0, 0x2FC78980, - 0x2FC6B040, 0x2FC5D700, 0x2FC4FDC0, - 0x2FC42480, 0x2FC34B40, 0x2FC27200, - 0x2FC198C0, 0x2FC0BF80, 0x2FBFE640, - 0x2FBF0D00, 0x2FBE33C0, 0x2FBD5A80, - 0x2FBC8140, 0x2FBBA800, 0x2FBACEC0, - 0x2FB9F580, 0x2FB91C40, 0x2FB84300, - 0x2FB769C0, 0x2FB69080, 0x2FB5B740, - 0x2FB4DE00, 0x2FB404C0, 0x2FB32B80, - 0x2FB25240, 0x2FB17900, 0x2FB09FC0, - 0x2FAFC680, 0x2FAEED40, 0x2FAE1400, - 0x2FAD3AC0, 0x2FAC6180, 0x2FAB8840, - 0x2FAAAF00, 0x2FA9D5C0, 0x2FA8FC80, - 0x2FA82340, 0x2FA74A00, 0x2FA670C0, - 0x2FA59780, 0x2FA4BE40, 0x2FA3E500, - 0x2FA30BC0, 0x2FA23280, 0x2FA15940, - 0x2FA08000, 0x2F9FA6C0, 0x2F9ECD80, - 0x2F9DF440, 0x2F9D1B00, 0x2F9C41C0, - 0x2F9B6880, 0x2F9A8F40, 0x2F99B600, - 0x2F98DCC0, 0x2F980380, 0x2F972A40, - 0x2F965100, 0x2F9577C0, 0x2F949E80, - 0x2F93C540, 0x2F92EC00, 0x2F9212C0, - 0x2F913980, 0x2F906040, 0x2F8F8700, - 0x2F8EADC0, 0x2F8DD480, 0x2F8CFB40, - 0x2F8C2200, 0x2F8B48C0, 0x2F8A6F80, - 0x2F899640, 0x2F88BD00, 0x2F87E3C0, - 0x2F870A80, 0x2F863140, 0x2F855800, - 0x2F847EC0, 0x2F83A580, 0x2F82CC40, - 0x2F81F300, 0x2F8119C0, 0x2F804080, - 0x2F7F6740, 0x2F7E8E00, 0x2F7DB4C0, - 0x2F7CDB80, 0x2F7C0240, 0x2F7B2900, - 0x2F7A4FC0, 0x2F797680, 0x2F789D40, - 0x2F77C400, 0x2F76EAC0, 0x2F761180, - 0x2F753840, 0x2F745F00, 0x2F7385C0, - 0x2F72AC80, 0x2F71D340, 0x2F70FA00, - 0x2F7020C0, 0x2F6F4780, 0x2F6E6E40, - 0x2F6D9500, 0x2F6CBBC0, 0x2F6BE280, - 0x2F6B0940, 0x2F6A3000, 0x2F6956C0, - 0x2F687D80, 0x2F67A440, 0x2F66CB00, - 0x2F65F1C0, 0x2F651880, 0x2F643F40, - 0x2F636600, 0x2F628CC0, 0x2F61B380, - 0x2F60DA40, 0x2F600100, 0x2F5F27C0, - 0x2F5E4E80, 0x2F5D7540, 0x2F5C9C00, - 0x2F5BC2C0, 0x2F5AE980, 0x2F5A1040, - 0x2F593700, 0x2F585DC0, 0x2F578480, - 0x2F56AB40, 0x2F55D200, 0x2F54F8C0, - 0x2F541F80, 0x2F534640, 0x2F526D00, - 0x2F5193C0, 0x2F50BA80, 0x2F4FE140, - 0x2F4F0800, 0x2F4E2EC0, 0x2F4D5580, - 0x2F4C7C40, 0x2F4BA300, 0x2F4AC9C0, - 0x2F49F080, 0x2F491740, 0x2F483E00, - 0x2F4764C0, 0x2F468B80, 0x2F45B240, - 0x2F44D900, 0x2F43FFC0, 0x2F432680, - 0x2F424D40, 0x2F417400, 0x2F409AC0, - 0x2F3FC180, 0x2F3EE840, 0x2F3E0F00, - 0x2F3D35C0, 0x2F3C5C80, 0x2F3B8340, - 0x2F3AAA00, 0x2F39D0C0, 0x2F38F780, - 0x2F381E40, 0x2F374500, 0x2F366BC0, - 0x2F359280, 0x2F34B940, 0x2F33E000, - 0x2F3306C0, 0x2F322D80, 0x2F315440, - 0x2F307B00, 0x2F2FA1C0, 0x2F2EC880, - 0x2F2DEF40, 0x2F2D1600, 0x2F2C3CC0, - 0x2F2B6380, 0x2F2A8A40, 0x2F29B100, - 0x2F28D7C0, 0x2F27FE80, 0x2F272540, - 0x2F264C00, 0x2F2572C0, 0x2F249980, - 0x2F23C040, 0x2F22E700, 0x2F220DC0, - 0x2F213480, 0x2F205B40, 0x2F1F8200, - 0x2F1EA8C0, 0x2F1DCF80, 0x2F1CF640, - 0x2F1C1D00, 0x2F1B43C0, 0x2F1A6A80, - 0x2F199140, 0x2F18B800, 0x2F17DEC0, - 0x2F170580, 0x2F162C40, 0x2F155300, - 0x2F1479C0, 0x2F13A080, 0x2F12C740, - 0x2F11EE00, 0x2F1114C0, 0x2F103B80, - 0x2F0F6240, 0x2F0E8900, 0x2F0DAFC0, - 0x2F0CD680, 0x2F0BFD40, 0x2F0B2400, - 0x2F0A4AC0, 0x2F097180, 0x2F089840, - 0x2F07BF00, 0x2F06E5C0, 0x2F060C80, - 0x2F053340, 0x2F045A00, 0x2F0380C0, - 0x2F02A780, 0x2F01CE40, 0x2F00F500, - 0x2F001BC0, 0x2EFF4280, 0x2EFE6940, - 0x2EFD9000, 0x2EFCB6C0, 0x2EFBDD80, - 0x2EFB0440, 0x2EFA2B00, 0x2EF951C0, - 0x2EF87880, 0x2EF79F40, 0x2EF6C600, - 0x2EF5ECC0, 0x2EF51380, 0x2EF43A40, - 0x2EF36100, 0x2EF287C0, 0x2EF1AE80, - 0x2EF0D540, 0x2EEFFC00, 0x2EEF22C0, - 0x2EEE4980, 0x2EED7040, 0x2EEC9700, - 0x2EEBBDC0, 0x2EEAE480, 0x2EEA0B40, - 0x2EE93200, 0x2EE858C0, 0x2EE77F80, - 0x2EE6A640, 0x2EE5CD00, 0x2EE4F3C0, - 0x2EE41A80, 0x2EE34140, 0x2EE26800, - 0x2EE18EC0, 0x2EE0B580, 0x2EDFDC40, - 0x2EDF0300, 0x2EDE29C0, 0x2EDD5080, - 0x2EDC7740, 0x2EDB9E00, 0x2EDAC4C0, - 0x2ED9EB80, 0x2ED91240, 0x2ED83900, - 0x2ED75FC0, 0x2ED68680, 0x2ED5AD40, - 0x2ED4D400, 0x2ED3FAC0, 0x2ED32180, - 0x2ED24840, 0x2ED16F00, 0x2ED095C0, - 0x2ECFBC80, 0x2ECEE340, 0x2ECE0A00, - 0x2ECD30C0, 0x2ECC5780, 0x2ECB7E40, - 0x2ECAA500, 0x2EC9CBC0, 0x2EC8F280, - 0x2EC81940, 0x2EC74000, 0x2EC666C0, - 0x2EC58D80, 0x2EC4B440, 0x2EC3DB00, - 0x2EC301C0, 0x2EC22880, 0x2EC14F40, - 0x2EC07600, 0x2EBF9CC0, 0x2EBEC380, - 0x2EBDEA40, 0x2EBD1100, 0x2EBC37C0, - 0x2EBB5E80, 0x2EBA8540, 0x2EB9AC00, - 0x2EB8D2C0, 0x2EB7F980, 0x2EB72040, - 0x2EB64700, 0x2EB56DC0, 0x2EB49480, - 0x2EB3BB40, 0x2EB2E200, 0x2EB208C0, - 0x2EB12F80, 0x2EB05640, 0x2EAF7D00, - 0x2EAEA3C0, 0x2EADCA80, 0x2EACF140, - 0x2EAC1800, 0x2EAB3EC0, 0x2EAA6580, - 0x2EA98C40, 0x2EA8B300, 0x2EA7D9C0, - 0x2EA70080, 0x2EA62740, 0x2EA54E00, - 0x2EA474C0, 0x2EA39B80, 0x2EA2C240, - 0x2EA1E900, 0x2EA10FC0, 0x2EA03680, - 0x2E9F5D40, 0x2E9E8400, 0x2E9DAAC0, - 0x2E9CD180, 0x2E9BF840, 0x2E9B1F00, - 0x2E9A45C0, 0x2E996C80, 0x2E989340, - 0x2E97BA00, 0x2E96E0C0, 0x2E960780, - 0x2E952E40, 0x2E945500, 0x2E937BC0, - 0x2E92A280, 0x2E91C940, 0x2E90F000, - 0x2E9016C0, 0x2E8F3D80, 0x2E8E6440, - 0x2E8D8B00, 0x2E8CB1C0, 0x2E8BD880, - 0x2E8AFF40, 0x2E8A2600, 0x2E894CC0, - 0x2E887380, 0x2E879A40, 0x2E86C100, - 0x2E85E7C0, 0x2E850E80, 0x2E843540, - 0x2E835C00, 0x2E8282C0, 0x2E81A980, - 0x2E80D040, 0x2E7FF700, 0x2E7F1DC0, - 0x2E7E4480, 0x2E7D6B40, 0x2E7C9200, - 0x2E7BB8C0, 0x2E7ADF80, 0x2E7A0640, - 0x2E792D00, 0x2E7853C0, 0x2E777A80, - 0x2E76A140, 0x2E75C800, 0x2E74EEC0, - 0x2E741580, 0x2E733C40, 0x2E726300, - 0x2E7189C0, 0x2E70B080, 0x2E6FD740, - 0x2E6EFE00, 0x2E6E24C0, 0x2E6D4B80, - 0x2E6C7240, 0x2E6B9900, 0x2E6ABFC0, - 0x2E69E680, 0x2E690D40, 0x2E683400, - 0x2E675AC0, 0x2E668180, 0x2E65A840, - 0x2E64CF00, 0x2E63F5C0, 0x2E631C80, - 0x2E624340, 0x2E616A00, 0x2E6090C0, - 0x2E5FB780, 0x2E5EDE40, 0x2E5E0500, - 0x2E5D2BC0, 0x2E5C5280, 0x2E5B7940, - 0x2E5AA000, 0x2E59C6C0, 0x2E58ED80, - 0x2E581440, 0x2E573B00, 0x2E5661C0, - 0x2E558880, 0x2E54AF40, 0x2E53D600, - 0x2E52FCC0, 0x2E522380, 0x2E514A40, - 0x2E507100, 0x2E4F97C0, 0x2E4EBE80, - 0x2E4DE540, 0x2E4D0C00, 0x2E4C32C0, - 0x2E4B5980, 0x2E4A8040, 0x2E49A700, - 0x2E48CDC0, 0x2E47F480, 0x2E471B40, - 0x2E464200, 0x2E4568C0, 0x2E448F80, - 0x2E43B640, 0x2E42DD00, 0x2E4203C0, - 0x2E412A80, 0x2E405140, 0x2E3F7800, - 0x2E3E9EC0, 0x2E3DC580, 0x2E3CEC40, - 0x2E3C1300, 0x2E3B39C0, 0x2E3A6080, - 0x2E398740, 0x2E38AE00, 0x2E37D4C0, - 0x2E36FB80, 0x2E362240, 0x2E354900, - 0x2E346FC0, 0x2E339680, 0x2E32BD40, - 0x2E31E400, 0x2E310AC0, 0x2E303180, - 0x2E2F5840, 0x2E2E7F00, 0x2E2DA5C0, - 0x2E2CCC80, 0x2E2BF340, 0x2E2B1A00, - 0x2E2A40C0, 0x2E296780, 0x2E288E40, - 0x2E27B500, 0x2E26DBC0, 0x2E260280, - 0x2E252940, 0x2E245000, 0x2E2376C0, - 0x2E229D80, 0x2E21C440, 0x2E20EB00, - 0x2E2011C0, 0x2E1F3880, 0x2E1E5F40, - 0x2E1D8600, 0x2E1CACC0, 0x2E1BD380, - 0x2E1AFA40, 0x2E1A2100, 0x2E1947C0, - 0x2E186E80, 0x2E179540, 0x2E16BC00, - 0x2E15E2C0, 0x2E150980, 0x2E143040, - 0x2E135700, 0x2E127DC0, 0x2E11A480, - 0x2E10CB40, 0x2E0FF200, 0x2E0F18C0, - 0x2E0E3F80, 0x2E0D6640, 0x2E0C8D00, - 0x2E0BB3C0, 0x2E0ADA80, 0x2E0A0140, - 0x2E092800, 0x2E084EC0, 0x2E077580, - 0x2E069C40, 0x2E05C300, 0x2E04E9C0, - 0x2E041080, 0x2E033740, 0x2E025E00, - 0x2E0184C0, 0x2E00AB80, 0x2DFFD240, - 0x2DFEF900, 0x2DFE1FC0, 0x2DFD4680, - 0x2DFC6D40, 0x2DFB9400, 0x2DFABAC0, - 0x2DF9E180, 0x2DF90840, 0x2DF82F00, - 0x2DF755C0, 0x2DF67C80, 0x2DF5A340, - 0x2DF4CA00, 0x2DF3F0C0, 0x2DF31780, - 0x2DF23E40, 0x2DF16500, 0x2DF08BC0, - 0x2DEFB280, 0x2DEED940, 0x2DF00000, - 0x2DEF3480, 0x2DEE6900, 0x2DED9D80, - 0x2DECD200, 0x2DEC0680, 0x2DEB3B00, - 0x2DEA6F80, 0x2DE9A400, 0x2DE8D880, - 0x2DE80D00, 0x2DE74180, 0x2DE67600, - 0x2DE5AA80, 0x2DE4DF00, 0x2DE41380, - 0x2DE34800, 0x2DE27C80, 0x2DE1B100, - 0x2DE0E580, 0x2DE01A00, 0x2DDF4E80, - 0x2DDE8300, 0x2DDDB780, 0x2DDCEC00, - 0x2DDC2080, 0x2DDB5500, 0x2DDA8980, - 0x2DD9BE00, 0x2DD8F280, 0x2DD82700, - 0x2DD75B80, 0x2DD69000, 0x2DD5C480, - 0x2DD4F900, 0x2DD42D80, 0x2DD36200, - 0x2DD29680, 0x2DD1CB00, 0x2DD0FF80, - 0x2DD03400, 0x2DCF6880, 0x2DCE9D00, - 0x2DCDD180, 0x2DCD0600, 0x2DCC3A80, - 0x2DCB6F00, 0x2DCAA380, 0x2DC9D800, - 0x2DC90C80, 0x2DC84100, 0x2DC77580, - 0x2DC6AA00, 0x2DC5DE80, 0x2DC51300, - 0x2DC44780, 0x2DC37C00, 0x2DC2B080, - 0x2DC1E500, 0x2DC11980, 0x2DC04E00, - 0x2DBF8280, 0x2DBEB700, 0x2DBDEB80, - 0x2DBD2000, 0x2DBC5480, 0x2DBB8900, - 0x2DBABD80, 0x2DB9F200, 0x2DB92680, - 0x2DB85B00, 0x2DB78F80, 0x2DB6C400, - 0x2DB5F880, 0x2DB52D00, 0x2DB46180, - 0x2DB39600, 0x2DB2CA80, 0x2DB1FF00, - 0x2DB13380, 0x2DB06800, 0x2DAF9C80, - 0x2DAED100, 0x2DAE0580, 0x2DAD3A00, - 0x2DAC6E80, 0x2DABA300, 0x2DAAD780, - 0x2DAA0C00, 0x2DA94080, 0x2DA87500, - 0x2DA7A980, 0x2DA6DE00, 0x2DA61280, - 0x2DA54700, 0x2DA47B80, 0x2DA3B000, - 0x2DA2E480, 0x2DA21900, 0x2DA14D80, - 0x2DA08200, 0x2D9FB680, 0x2D9EEB00, - 0x2D9E1F80, 0x2D9D5400, 0x2D9C8880, - 0x2D9BBD00, 0x2D9AF180, 0x2D9A2600, - 0x2D995A80, 0x2D988F00, 0x2D97C380, - 0x2D96F800, 0x2D962C80, 0x2D956100, - 0x2D949580, 0x2D93CA00, 0x2D92FE80, - 0x2D923300, 0x2D916780, 0x2D909C00, - 0x2D8FD080, 0x2D8F0500, 0x2D8E3980, - 0x2D8D6E00, 0x2D8CA280, 0x2D8BD700, - 0x2D8B0B80, 0x2D8A4000, 0x2D897480, - 0x2D88A900, 0x2D87DD80, 0x2D871200, - 0x2D864680, 0x2D857B00, 0x2D84AF80, - 0x2D83E400, 0x2D831880, 0x2D824D00, - 0x2D818180, 0x2D80B600, 0x2D7FEA80, - 0x2D7F1F00, 0x2D7E5380, 0x2D7D8800, - 0x2D7CBC80, 0x2D7BF100, 0x2D7B2580, - 0x2D7A5A00, 0x2D798E80, 0x2D78C300, - 0x2D77F780, 0x2D772C00, 0x2D766080, - 0x2D759500, 0x2D74C980, 0x2D73FE00, - 0x2D733280, 0x2D726700, 0x2D719B80, - 0x2D70D000, 0x2D700480, 0x2D6F3900, - 0x2D6E6D80, 0x2D6DA200, 0x2D6CD680, - 0x2D6C0B00, 0x2D6B3F80, 0x2D6A7400, - 0x2D69A880, 0x2D68DD00, 0x2D681180, - 0x2D674600, 0x2D667A80, 0x2D65AF00, - 0x2D64E380, 0x2D641800, 0x2D634C80, - 0x2D628100, 0x2D61B580, 0x2D60EA00, - 0x2D601E80, 0x2D5F5300, 0x2D5E8780, - 0x2D5DBC00, 0x2D5CF080, 0x2D5C2500, - 0x2D5B5980, 0x2D5A8E00, 0x2D59C280, - 0x2D58F700, 0x2D582B80, 0x2D576000, - 0x2D569480, 0x2D55C900, 0x2D54FD80, - 0x2D543200, 0x2D536680, 0x2D529B00, - 0x2D51CF80, 0x2D510400, 0x2D503880, - 0x2D4F6D00, 0x2D4EA180, 0x2D4DD600, - 0x2D4D0A80, 0x2D4C3F00, 0x2D4B7380, - 0x2D4AA800, 0x2D49DC80, 0x2D491100, - 0x2D484580, 0x2D477A00, 0x2D46AE80, - 0x2D45E300, 0x2D451780, 0x2D444C00, - 0x2D438080, 0x2D42B500, 0x2D41E980, - 0x2D411E00, 0x2D405280, 0x2D3F8700, - 0x2D3EBB80, 0x2D3DF000, 0x2D3D2480, - 0x2D3C5900, 0x2D3B8D80, 0x2D3AC200, - 0x2D39F680, 0x2D392B00, 0x2D385F80, - 0x2D379400, 0x2D36C880, 0x2D35FD00, - 0x2D353180, 0x2D346600, 0x2D339A80, - 0x2D32CF00, 0x2D320380, 0x2D313800, - 0x2D306C80, 0x2D2FA100, 0x2D2ED580, - 0x2D2E0A00, 0x2D2D3E80, 0x2D2C7300, - 0x2D2BA780, 0x2D2ADC00, 0x2D2A1080, - 0x2D294500, 0x2D287980, 0x2D27AE00, - 0x2D26E280, 0x2D261700, 0x2D254B80, - 0x2D248000, 0x2D23B480, 0x2D22E900, - 0x2D221D80, 0x2D215200, 0x2D208680, - 0x2D1FBB00, 0x2D1EEF80, 0x2D1E2400, - 0x2D1D5880, 0x2D1C8D00, 0x2D1BC180, - 0x2D1AF600, 0x2D1A2A80, 0x2D195F00, - 0x2D189380, 0x2D17C800, 0x2D16FC80, - 0x2D163100, 0x2D156580, 0x2D149A00, - 0x2D13CE80, 0x2D130300, 0x2D123780, - 0x2D116C00, 0x2D10A080, 0x2D0FD500, - 0x2D0F0980, 0x2D0E3E00, 0x2D0D7280, - 0x2D0CA700, 0x2D0BDB80, 0x2D0B1000, - 0x2D0A4480, 0x2D097900, 0x2D08AD80, - 0x2D07E200, 0x2D071680, 0x2D064B00, - 0x2D057F80, 0x2D04B400, 0x2D03E880, - 0x2D031D00, 0x2D025180, 0x2D018600, - 0x2D00BA80, 0x2CFFEF00, 0x2CFF2380, - 0x2CFE5800, 0x2CFD8C80, 0x2CFCC100, - 0x2CFBF580, 0x2CFB2A00, 0x2CFA5E80, - 0x2CF99300, 0x2CF8C780, 0x2CF7FC00, - 0x2CF73080, 0x2CF66500, 0x2CF59980, - 0x2CF4CE00, 0x2CF40280, 0x2CF33700, - 0x2CF26B80, 0x2CF1A000, 0x2CF0D480, - 0x2CF00900, 0x2CEF3D80, 0x2CEE7200, - 0x2CEDA680, 0x2CECDB00, 0x2CEC0F80, - 0x2CEB4400, 0x2CEA7880, 0x2CE9AD00, - 0x2CE8E180, 0x2CE81600, 0x2CE74A80, - 0x2CE67F00, 0x2CE5B380, 0x2CE4E800, - 0x2CE41C80, 0x2CE35100, 0x2CE28580, - 0x2CE1BA00, 0x2CE0EE80, 0x2CE02300, - 0x2CDF5780, 0x2CDE8C00, 0x2CDDC080, - 0x2CDCF500, 0x2CDC2980, 0x2CDB5E00, - 0x2CDA9280, 0x2CD9C700, 0x2CD8FB80, - 0x2CD83000, 0x2CD76480, 0x2CD69900, - 0x2CD5CD80, 0x2CD50200, 0x2CD43680, - 0x2CD36B00, 0x2CD29F80, 0x2CD1D400, - 0x2CD10880, 0x2CD03D00, 0x2CCF7180, - 0x2CCEA600, 0x2CCDDA80, 0x2CCD0F00, - 0x2CCC4380, 0x2CCB7800, 0x2CCAAC80, - 0x2CC9E100, 0x2CC91580, 0x2CC84A00, - 0x2CC77E80, 0x2CC6B300, 0x2CC5E780, - 0x2CC51C00, 0x2CC45080, 0x2CC38500, - 0x2CC2B980, 0x2CC1EE00, 0x2CC12280, - 0x2CC05700, 0x2CBF8B80, 0x2CBEC000, - 0x2CBDF480, 0x2CBD2900, 0x2CBC5D80, - 0x2CBB9200, 0x2CBAC680, 0x2CB9FB00, - 0x2CB92F80, 0x2CB86400, 0x2CB79880, - 0x2CB6CD00, 0x2CB60180, 0x2CB53600, - 0x2CB46A80, 0x2CB39F00, 0x2CB2D380, - 0x2CB20800, 0x2CB13C80, 0x2CB07100, - 0x2CAFA580, 0x2CAEDA00, 0x2CAE0E80, - 0x2CAD4300, 0x2CAC7780, 0x2CABAC00, - 0x2CAAE080, 0x2CAA1500, 0x2CA94980, - 0x2CA87E00, 0x2CA7B280, 0x2CA6E700, - 0x2CA61B80, 0x2CA55000, 0x2CA48480, - 0x2CA3B900, 0x2CA2ED80, 0x2CA22200, - 0x2CA15680, 0x2CA08B00, 0x2C9FBF80, - 0x2C9EF400, 0x2C9E2880, 0x2C9D5D00, - 0x2C9C9180, 0x2C9BC600, 0x2C9AFA80, - 0x2C9A2F00, 0x2C996380, 0x2C989800, - 0x2C97CC80, 0x2C970100, 0x2C963580, - 0x2C956A00, 0x2C949E80, 0x2C93D300, - 0x2C930780, 0x2C923C00, 0x2C917080, - 0x2C90A500, 0x2C8FD980, 0x2C8F0E00, - 0x2C8E4280, 0x2C8D7700, 0x2C8CAB80, - 0x2C8BE000, 0x2C8B1480, 0x2C8A4900, - 0x2C897D80, 0x2C88B200, 0x2C87E680, - 0x2C871B00, 0x2C864F80, 0x2C858400, - 0x2C84B880, 0x2C83ED00, 0x2C832180, - 0x2C825600, 0x2C818A80, 0x2C80BF00, - 0x2C7FF380, 0x2C7F2800, 0x2C7E5C80, - 0x2C7D9100, 0x2C7CC580, 0x2C7BFA00, - 0x2C7B2E80, 0x2C7A6300, 0x2C799780, - 0x2C78CC00, 0x2C780080, 0x2C773500, - 0x2C766980, 0x2C759E00, 0x2C74D280, - 0x2C740700, 0x2C733B80, 0x2C727000, - 0x2C71A480, 0x2C70D900, 0x2C700D80, - 0x2C6F4200, 0x2C6E7680, 0x2C6DAB00, - 0x2C6CDF80, 0x2C6C1400, 0x2C6B4880, - 0x2C6A7D00, 0x2C69B180, 0x2C68E600, - 0x2C681A80, 0x2C674F00, 0x2C668380, - 0x2C65B800, 0x2C64EC80, 0x2C642100, - 0x2C635580, 0x2C628A00, 0x2C61BE80, - 0x2C60F300, 0x2C602780, 0x2C5F5C00, - 0x2C5E9080, 0x2C5DC500, 0x2C5CF980, - 0x2C5C2E00, 0x2C5B6280, 0x2C5A9700, - 0x2C59CB80, 0x2C590000, 0x2C583480, - 0x2C576900, 0x2C569D80, 0x2C55D200, - 0x2C550680, 0x2C543B00, 0x2C536F80, - 0x2C52A400, 0x2C51D880, 0x2C510D00, - 0x2C504180, 0x2C4F7600, 0x2C4EAA80, - 0x2C4DDF00, 0x2C4D1380, 0x2C4C4800, - 0x2C4B7C80, 0x2C4AB100, 0x2C49E580, - 0x2C491A00, 0x2C484E80, 0x2C478300, - 0x2C46B780, 0x2C45EC00, 0x2C452080, - 0x2C445500, 0x2C438980, 0x2C42BE00, - 0x2C41F280, 0x2C412700, 0x2C405B80, - 0x2C3F9000, 0x2C3EC480, 0x2C3DF900, - 0x2C3D2D80, 0x2C3C6200, 0x2C3B9680, - 0x2C3ACB00, 0x2C39FF80, 0x2C393400, - 0x2C386880, 0x2C379D00, 0x2C36D180, - 0x2C360600, 0x2C353A80, 0x2C346F00, - 0x2C33A380, 0x2C32D800, 0x2C320C80, - 0x2C314100, 0x2C307580, 0x2C2FAA00, - 0x2C2EDE80, 0x2C2E1300, 0x2C2D4780, - 0x2C2C7C00, 0x2C2BB080, 0x2C2AE500, - 0x2C2A1980, 0x2C294E00, 0x2C288280, - 0x2C27B700, 0x2C26EB80, 0x2C262000, - 0x2C255480, 0x2C248900, 0x2C23BD80, - 0x2C22F200, 0x2C222680, 0x2C215B00, - 0x2C208F80, 0x2C1FC400, 0x2C1EF880, - 0x2C1E2D00, 0x2C1D6180, 0x2C1C9600, - 0x2C1BCA80, 0x2C1AFF00, 0x2C1A3380, - 0x2C196800, 0x2C189C80, 0x2C17D100, - 0x2C170580, 0x2C163A00, 0x2C156E80, - 0x2C14A300, 0x2C13D780, 0x2C130C00, - 0x2C124080, 0x2C117500, 0x2C10A980, - 0x2C0FDE00, 0x2C0F1280, 0x2C0E4700, - 0x2C0D7B80, 0x2C0CB000, 0x2C0BE480, - 0x2C0B1900, 0x2C0A4D80, 0x2C098200, - 0x2C08B680, 0x2C07EB00, 0x2C071F80, - 0x2C065400, 0x2C058880, 0x2C04BD00, - 0x2C03F180, 0x2C032600, 0x2C025A80, - 0x2C018F00, 0x2C00C380, 0x2BFFF800, - 0x2BFF2C80, 0x2BFE6100, 0x2BFD9580, - 0x2BFCCA00, 0x2BFBFE80, 0x2BFB3300, - 0x2BFA6780, 0x2BF99C00, 0x2BF8D080, - 0x2BF80500, 0x2BF73980, 0x2BF66E00, - 0x2BF5A280, 0x2BF4D700, 0x2BF40B80, - 0x2BF34000, 0x2BF27480, 0x2BF1A900, - 0x2BF0DD80, 0x2BF01200, 0x2BEF4680, - 0x2BEE7B00, 0x2BEDAF80, 0x2BECE400, - 0x2BEC1880, 0x2BEB4D00, 0x2BEA8180, - 0x2BE9B600, 0x2BE8EA80, 0x2BE81F00, - 0x2BE75380, 0x2BE68800, 0x2BE5BC80, - 0x2BE4F100, 0x2BE42580, 0x2BE35A00, - 0x2BE28E80, 0x2BE1C300, 0x2BE0F780, - 0x2BE02C00, 0x2BDF6080, 0x2BDE9500, - 0x2BDDC980, 0x2BDCFE00, 0x2BDC3280, - 0x2BDB6700, 0x2BDA9B80, 0x2BD9D000, - 0x2BD90480, 0x2BD83900, 0x2BD76D80, - 0x2BD6A200, 0x2BD5D680, 0x2BD50B00, - 0x2BD43F80, 0x2BD37400, 0x2BD2A880, - 0x2BD1DD00, 0x2BD11180, 0x2BD04600, - 0x2BCF7A80, 0x2BCEAF00, 0x2BCDE380, - 0x2BCD1800, 0x2BCC4C80, 0x2BCB8100, - 0x2BCAB580, 0x2BC9EA00, 0x2BC91E80, - 0x2BC85300, 0x2BC78780, 0x2BC6BC00, - 0x2BC5F080, 0x2BC52500, 0x2BC45980, - 0x2BC38E00, 0x2BC2C280, 0x2BC1F700, - 0x2BC12B80, 0x2BC06000, 0x2BBF9480, - 0x2BBEC900, 0x2BBDFD80, 0x2BBD3200, - 0x2BBC6680, 0x2BBB9B00, 0x2BBACF80, - 0x2BBA0400, 0x2BB93880, 0x2BB86D00, - 0x2BB7A180, 0x2BB6D600, 0x2BB60A80, - 0x2BB53F00, 0x2BB47380, 0x2BB3A800, - 0x2BB2DC80, 0x2BB21100, 0x2BB14580, - 0x2BB07A00, 0x2BAFAE80, 0x2BAEE300, - 0x2BAE1780, 0x2BAD4C00, 0x2BAC8080, - 0x2BABB500, 0x2BAAE980, 0x2BAA1E00, - 0x2BA95280, 0x2BA88700, 0x2BA7BB80, - 0x2BA6F000, 0x2BA62480, 0x2BA55900, - 0x2BA48D80, 0x2BA3C200, 0x2BA2F680, - 0x2BA22B00, 0x2BA15F80, 0x2BA09400, - 0x2B9FC880, 0x2B9EFD00, 0x2B9E3180, - 0x2B9D6600, 0x2B9C9A80, 0x2B9BCF00, - 0x2B9B0380, 0x2B9A3800, 0x2B996C80, - 0x2B98A100, 0x2B97D580, 0x2B970A00, - 0x2B963E80, 0x2B957300, 0x2B94A780, - 0x2B93DC00, 0x2B931080, 0x2B924500, - 0x2B917980, 0x2B90AE00, 0x2B8FE280, - 0x2B8F1700, 0x2B8E4B80, 0x2B8D8000, - 0x2B8CB480, 0x2B8BE900, 0x2B8B1D80, - 0x2B8A5200, 0x2B898680, 0x2B88BB00, - 0x2B87EF80, 0x2B872400, 0x2B865880, - 0x2B858D00, 0x2B84C180, 0x2B83F600, - 0x2B832A80, 0x2B825F00, 0x2B819380, - 0x2B80C800, 0x2B7FFC80, 0x2B7F3100, - 0x2B7E6580, 0x2B7D9A00, 0x2B7CCE80, - 0x2B7C0300, 0x2B7B3780, 0x2B7A6C00, - 0x2B79A080, 0x2B78D500, 0x2B780980, - 0x2B773E00, 0x2B767280, 0x2B75A700, - 0x2B74DB80, 0x2B741000, 0x2B734480, - 0x2B727900, 0x2B71AD80, 0x2B70E200, - 0x2B701680, 0x2B6F4B00, 0x2B6E7F80, - 0x2B6DB400, 0x2B6CE880, 0x2B6C1D00, - 0x2B6B5180, 0x2B6A8600, 0x2B69BA80, - 0x2B68EF00, 0x2B682380, 0x2B675800, - 0x2B668C80, 0x2B65C100, 0x2B64F580, - 0x2B642A00, 0x2B635E80, 0x2B629300, - 0x2B61C780, 0x2B60FC00, 0x2B603080, - 0x2B5F6500, 0x2B5E9980, 0x2B5DCE00, - 0x2B5D0280, 0x2B5C3700, 0x2B5B6B80, - 0x2B5AA000, 0x2B59D480, 0x2B590900, - 0x2B583D80, 0x2B577200, 0x2B56A680, - 0x2B55DB00, 0x2B550F80, 0x2B544400, - 0x2B537880, 0x2B52AD00, 0x2B51E180, - 0x2B511600, 0x2B504A80, 0x2B4F7F00, - 0x2B4EB380, 0x2B4DE800, 0x2B4D1C80, - 0x2B4C5100, 0x2B4B8580, 0x2B4ABA00, - 0x2B49EE80, 0x2B492300, 0x2B485780, - 0x2B478C00, 0x2B46C080, 0x2B45F500, - 0x2B452980, 0x2B445E00, 0x2B439280, - 0x2B42C700, 0x2B41FB80, 0x2B413000, - 0x2B406480, 0x2B3F9900, 0x2B3ECD80, - 0x2B3E0200, 0x2B3D3680, 0x2B3C6B00, - 0x2B3B9F80, 0x2B3AD400, 0x2B3A0880, - 0x2B393D00, 0x2B387180, 0x2B37A600, - 0x2B36DA80, 0x2B360F00, 0x2B354380, - 0x2B347800, 0x2B33AC80, 0x2B32E100, - 0x2B321580, 0x2B314A00, 0x2B307E80, - 0x2B2FB300, 0x2B2EE780, 0x2B2E1C00, - 0x2B2D5080, 0x2B2C8500, 0x2B2BB980, - 0x2B2AEE00, 0x2B2A2280, 0x2B295700, - 0x2B288B80, 0x2B27C000, 0x2B26F480, - 0x2B262900, 0x2B255D80, 0x2B249200, - 0x2B23C680, 0x2B22FB00, 0x2B222F80, - 0x2B216400, 0x2B209880, 0x2B1FCD00, - 0x2B1F0180, 0x2B1E3600, 0x2B1D6A80, - 0x2B1C9F00, 0x2B1BD380, 0x2B1B0800, - 0x2B1A3C80, 0x2B197100, 0x2B18A580, - 0x2B17DA00, 0x2B170E80, 0x2B164300, - 0x2B157780, 0x2B14AC00, 0x2B13E080, - 0x2B131500, 0x2B124980, 0x2B117E00, - 0x2B10B280, 0x2B0FE700, 0x2B0F1B80, - 0x2B0E5000, 0x2B0D8480, 0x2B0CB900, - 0x2B0BED80, 0x2B0B2200, 0x2B0A5680, - 0x2B098B00, 0x2B08BF80, 0x2B07F400, - 0x2B072880, 0x2B065D00, 0x2B059180, - 0x2B04C600, 0x2B03FA80, 0x2B032F00, - 0x2B026380, 0x2B019800, 0x2B00CC80, - 0x2B000100, 0x2AFF3580, 0x2AFE6A00, - 0x2AFD9E80, 0x2AFCD300, 0x2AFC0780, - 0x2AFB3C00, 0x2AFA7080, 0x2AF9A500, - 0x2AF8D980, 0x2AF80E00, 0x2AF74280, - 0x2AF67700, 0x2AF5AB80, 0x2AF4E000, - 0x2AF41480, 0x2AF34900, 0x2AF27D80, - 0x2AF1B200, 0x2AF0E680, 0x2AF01B00, - 0x2AEF4F80, 0x2AEE8400, 0x2AEDB880, - 0x2AECED00, 0x2AEC2180, 0x2AEB5600, - 0x2AEA8A80, 0x2AE9BF00, 0x2AE8F380, - 0x2AE82800, 0x2AE75C80, 0x2AE69100, - 0x2AE5C580, 0x2AE4FA00, 0x2AE42E80, - 0x2AE36300, 0x2AE29780, 0x2AE1CC00, - 0x2AE10080, 0x2AE03500, 0x2ADF6980, - 0x2ADE9E00, 0x2ADDD280, 0x2ADD0700, - 0x2ADC3B80, 0x2ADB7000, 0x2ADAA480, - 0x2AD9D900, 0x2AD90D80, 0x2AD84200, - 0x2AD77680, 0x2AD6AB00, 0x2AD5DF80, - 0x2AD51400, 0x2AD44880, 0x2AD37D00, - 0x2AD2B180, 0x2AD1E600, 0x2AD11A80, - 0x2AD04F00, 0x2ACF8380, 0x2ACEB800, - 0x2ACDEC80, 0x2ACD2100, 0x2ACC5580, - 0x2ACB8A00, 0x2ACABE80, 0x2AC9F300, - 0x2AC92780, 0x2AC85C00, 0x2AC79080, - 0x2AC6C500, 0x2AC5F980, 0x2AC52E00, - 0x2AC46280, 0x2AC39700, 0x2AC2CB80, - 0x2AC20000, 0x2AC13480, 0x2AC06900, - 0x2ABF9D80, 0x2ABED200, 0x2ABE0680, - 0x2ABD3B00, 0x2ABC6F80, 0x2ABBA400, - 0x2ABAD880, 0x2ABA0D00, 0x2AB94180, - 0x2AB87600, 0x2AB7AA80, 0x2AB6DF00, - 0x2AB61380, 0x2AB54800, 0x2AB47C80, - 0x2AB3B100, 0x2AB2E580, 0x2AB21A00, - 0x2AB14E80, 0x2AB08300, 0x2AAFB780, - 0x2AAEEC00, 0x2AAE2080, 0x2AAD5500, - 0x2AAC8980, 0x2AABBE00, 0x2AAAF280, - 0x2AAA2700, 0x2AA95B80, 0x2AA89000, - 0x2AA7C480, 0x2AA6F900, 0x2AA62D80, - 0x2AA56200, 0x2AA49680, 0x2AA3CB00, - 0x2AA2FF80, 0x2AA23400, 0x2AA16880, - 0x2AA09D00, 0x2A9FD180, 0x2A9F0600, - 0x2A9E3A80, 0x2A9D6F00, 0x2A9CA380, - 0x2A9BD800, 0x2A9B0C80, 0x2A9A4100, - 0x2A997580, 0x2A98AA00, 0x2A97DE80, - 0x2A971300, 0x2A964780, 0x2A957C00, - 0x2A94B080, 0x2A93E500, 0x2A931980, - 0x2A924E00, 0x2A918280, 0x2A90B700, - 0x2A8FEB80, 0x2A8F2000, 0x2A8E5480, - 0x2A8D8900, 0x2A8CBD80, 0x2A8BF200, - 0x2A8B2680, 0x2A8A5B00, 0x2A898F80, - 0x2A88C400, 0x2A87F880, 0x2A872D00, - 0x2A866180, 0x2A859600, 0x2A84CA80, - 0x2A83FF00, 0x2A833380, 0x2A826800, - 0x2A819C80, 0x2A80D100, 0x2A800580, - 0x2A7F3A00, 0x2A7E6E80, 0x2A7DA300, - 0x2A7CD780, 0x2A7C0C00, 0x2A7B4080, - 0x2A7A7500, 0x2A79A980, 0x2A78DE00, - 0x2A781280, 0x2A774700, 0x2A767B80, - 0x2A75B000, 0x2A74E480, 0x2A741900, - 0x2A734D80, 0x2A728200, 0x2A71B680, - 0x2A70EB00, 0x2A701F80, 0x2A6F5400, - 0x2A6E8880, 0x2A6DBD00, 0x2A6CF180, - 0x2A6C2600, 0x2A6B5A80, 0x2A6A8F00, - 0x2A69C380, 0x2A68F800, 0x2A682C80, - 0x2A676100, 0x2A669580, 0x2A65CA00, - 0x2A64FE80, 0x2A643300, 0x2A636780, - 0x2A629C00, 0x2A61D080, 0x2A610500, - 0x2A603980, 0x2A5F6E00, 0x2A5EA280, - 0x2A5DD700, 0x2A5D0B80, 0x2A5C4000, - 0x2A5B7480, 0x2A5AA900, 0x2A59DD80, - 0x2A591200, 0x2A584680, 0x2A577B00, - 0x2A56AF80, 0x2A55E400, 0x2A551880, - 0x2A544D00, 0x2A538180, 0x2A52B600, - 0x2A51EA80, 0x2A511F00, 0x2A505380, - 0x2A4F8800, 0x2A4EBC80, 0x2A4DF100, - 0x2A4D2580, 0x2A4C5A00, 0x2A4B8E80, - 0x2A4AC300, 0x2A49F780, 0x2A492C00, - 0x2A486080, 0x2A479500, 0x2A46C980, - 0x2A45FE00, 0x2A453280, 0x2A446700, - 0x2A439B80, 0x2A42D000, 0x2A420480, - 0x2A413900, 0x2A406D80, 0x2A3FA200, - 0x2A3ED680, 0x2A3E0B00, 0x2A3D3F80, - 0x2A3C7400, 0x2A3BA880, 0x2A3ADD00, - 0x2A3A1180, 0x2A394600, 0x2A387A80, - 0x2A37AF00, 0x2A36E380, 0x2A361800, - 0x2A354C80, 0x2A348100, 0x2A33B580, - 0x2A32EA00, 0x2A321E80, 0x2A315300, - 0x2A308780, 0x2A2FBC00, 0x2A2EF080, - 0x2A2E2500, 0x2A2D5980, 0x2A2C8E00, - 0x2A2BC280, 0x2A2AF700, 0x2A2A2B80, - 0x2A296000, 0x2A289480, 0x2A27C900, - 0x2A26FD80, 0x2A263200, 0x2A256680, - 0x2A249B00, 0x2A23CF80, 0x2A230400, - 0x2A223880, 0x2A216D00, 0x2A20A180, - 0x2A1FD600, 0x2A1F0A80, 0x2A1E3F00, - 0x2A1D7380, 0x2A1CA800, 0x2A1BDC80, - 0x2A1B1100, 0x2A1A4580, 0x2A197A00, - 0x2A18AE80, 0x2A17E300, 0x2A171780, - 0x2A164C00, 0x2A158080, 0x2A14B500, - 0x2A13E980, 0x2A131E00, 0x2A125280, - 0x2A118700, 0x2A10BB80, 0x2A0FF000, - 0x2A0F2480, 0x2A0E5900, 0x2A0D8D80, - 0x2A0CC200, 0x2A0BF680, 0x2A0B2B00, - 0x2A0A5F80, 0x2A099400, 0x2A08C880, - 0x2A07FD00, 0x2A073180, 0x2A066600, - 0x2A059A80, 0x2A04CF00, 0x2A040380, - 0x2A033800, 0x2A026C80, 0x2A01A100, - 0x2A00D580, 0x2A000A00, 0x29FF3E80, - 0x29FE7300, 0x29FDA780, 0x29FCDC00, - 0x29FC1080, 0x29FB4500, 0x29FA7980, - 0x29F9AE00, 0x29F8E280, 0x29F81700, - 0x29F74B80, 0x29F68000, 0x29F5B480, - 0x29F4E900, 0x29F41D80, 0x29F35200, - 0x29F28680, 0x29F1BB00, 0x29F0EF80, - 0x29F02400, 0x29EF5880, 0x29EE8D00, - 0x29EDC180, 0x29ECF600, 0x29EC2A80, - 0x29EB5F00, 0x29EA9380, 0x29E9C800, - 0x29E8FC80, 0x29E83100, 0x29E76580, - 0x29E69A00, 0x29E5CE80, 0x29E50300, - 0x29E43780, 0x29E36C00, 0x29E2A080, - 0x29E1D500, 0x29E10980, 0x29E03E00, - 0x29DF7280, 0x29DEA700, 0x29DDDB80, - 0x29DD1000, 0x29DC4480, 0x29DB7900, - 0x29DAAD80, 0x29D9E200, 0x29D91680, - 0x29D84B00, 0x29D77F80, 0x29D6B400, - 0x29D5E880, 0x29D51D00, 0x29D45180, - 0x29D38600, 0x29D2BA80, 0x29D1EF00, - 0x29D12380, 0x29D05800, 0x29CF8C80, - 0x29CEC100, 0x29CDF580, 0x29CD2A00, - 0x29CC5E80, 0x29CB9300, 0x29CAC780, - 0x29C9FC00, 0x29C93080, 0x29C86500, - 0x29C79980, 0x29C6CE00, 0x29C60280, - 0x29C53700, 0x29C46B80, 0x29C3A000, - 0x29C2D480, 0x29C20900, 0x29C13D80, - 0x29C07200, 0x29BFA680, 0x29BEDB00, - 0x29BE0F80, 0x29BD4400, 0x29BC7880, - 0x29BBAD00, 0x29BAE180, 0x29BA1600, - 0x29B94A80, 0x29B87F00, 0x29B7B380, - 0x29B6E800, 0x29B61C80, 0x29B55100, - 0x29B48580, 0x29B3BA00, 0x29B2EE80, - 0x29B22300, 0x29B15780, 0x29B08C00, - 0x29AFC080, 0x29AEF500, 0x29AE2980, - 0x29AD5E00, 0x29AC9280, 0x29ABC700, - 0x29AAFB80, 0x29AA3000, 0x29A96480, - 0x29A89900, 0x29A7CD80, 0x29A70200, - 0x29A63680, 0x29A56B00, 0x29A49F80, - 0x29A3D400, 0x29A30880, 0x29A23D00, - 0x29A17180, 0x29A0A600, 0x299FDA80, - 0x299F0F00, 0x299E4380, 0x299D7800, - 0x299CAC80, 0x299BE100, 0x299B1580, - 0x299A4A00, 0x29997E80, 0x2998B300, - 0x2997E780, 0x29971C00, 0x29965080, - 0x29958500, 0x2994B980, 0x2993EE00, - 0x29932280, 0x29925700, 0x29918B80, - 0x2990C000, 0x298FF480, 0x298F2900, - 0x298E5D80, 0x298D9200, 0x298CC680, - 0x298BFB00, 0x298B2F80, 0x298A6400, - 0x29899880, 0x2988CD00, 0x29880180, - 0x29873600, 0x29866A80, 0x29859F00, - 0x2984D380, 0x29840800, 0x29833C80, - 0x29827100, 0x2981A580, 0x2980DA00, - 0x29800E80, 0x297F4300, 0x297E7780, - 0x297DAC00, 0x297CE080, 0x297C1500, - 0x297B4980, 0x297A7E00, 0x2979B280, - 0x2978E700, 0x29781B80, 0x29775000, - 0x29768480, 0x2975B900, 0x2974ED80, - 0x29742200, 0x29735680, 0x29728B00, - 0x2971BF80, 0x2970F400, 0x29702880, - 0x296F5D00, 0x296E9180, 0x296DC600, - 0x296CFA80, 0x296C2F00, 0x296B6380, - 0x296A9800, 0x2969CC80, 0x29690100, - 0x29683580, 0x29676A00, 0x29669E80, - 0x2965D300, 0x29650780, 0x29643C00, - 0x29637080, 0x2962A500, 0x2961D980, - 0x29610E00, 0x29604280, 0x295F7700, - 0x295EAB80, 0x295DE000, 0x295D1480, - 0x295C4900, 0x295B7D80, 0x295AB200, - 0x2959E680, 0x29591B00, 0x29584F80, - 0x29578400, 0x2956B880, 0x2955ED00, - 0x29552180, 0x29545600, 0x29538A80, - 0x2952BF00, 0x2951F380, 0x29512800, - 0x29505C80, 0x294F9100, 0x294EC580, - 0x294DFA00, 0x294D2E80, 0x294C6300, - 0x294B9780, 0x294ACC00, 0x294A0080, - 0x29493500, 0x29486980, 0x29479E00, - 0x2946D280, 0x29460700, 0x29453B80, - 0x29447000, 0x2943A480, 0x2942D900, - 0x29420D80, 0x29414200, 0x29407680, - 0x293FAB00, 0x293EDF80, 0x293E1400, - 0x293D4880, 0x293C7D00, 0x293BB180, - 0x293AE600, 0x293A1A80, 0x29394F00, - 0x29388380, 0x2937B800, 0x2936EC80, - 0x29362100, 0x29355580, 0x29348A00, - 0x2933BE80, 0x2932F300, 0x29322780, - 0x29315C00, 0x29309080, 0x292FC500, - 0x292EF980, 0x292E2E00, 0x292D6280, - 0x292C9700, 0x292BCB80, 0x292B0000, - 0x292A3480, 0x29296900, 0x29289D80, - 0x2927D200, 0x29270680, 0x29263B00, - 0x29256F80, 0x2924A400, 0x2923D880, - 0x29230D00, 0x29224180, 0x29217600, - 0x2920AA80, 0x291FDF00, 0x291F1380, - 0x291E4800, 0x291D7C80, 0x291CB100, - 0x291BE580, 0x291B1A00, 0x291A4E80, - 0x29198300, 0x2918B780, 0x2917EC00, - 0x29172080, 0x29165500, 0x29158980, - 0x2914BE00, 0x2913F280, 0x29132700, - 0x29125B80, 0x29119000, 0x2910C480, - 0x290FF900, 0x290F2D80, 0x290E6200, - 0x290D9680, 0x290CCB00, 0x290BFF80, - 0x290B3400, 0x290A6880, 0x29099D00, - 0x2908D180, 0x29080600, 0x29073A80, - 0x29066F00, 0x2905A380, 0x2904D800, - 0x29040C80, 0x29034100, 0x29027580, - 0x2901AA00, 0x2900DE80, 0x29001300, - 0x28FF4780, 0x28FE7C00, 0x28FDB080, - 0x28FCE500, 0x28FC1980, 0x28FB4E00, - 0x28FA8280, 0x28F9B700, 0x28F8EB80, - 0x28F82000, 0x28F75480, 0x28F68900, - 0x28F5BD80, 0x28F4F200, 0x28F42680, - 0x28F35B00, 0x28F28F80, 0x28F1C400, - 0x28F0F880, 0x28F02D00, 0x28EF6180, - 0x28EE9600, 0x28EDCA80, 0x28ECFF00, - 0x28EC3380, 0x28EB6800, 0x28EA9C80, - 0x28E9D100, 0x28E90580, 0x28E83A00, - 0x28E76E80, 0x28E6A300, 0x28E5D780, - 0x28E50C00, 0x28E44080, 0x28E37500, - 0x28E2A980, 0x28E1DE00, 0x28E11280, - 0x28E04700, 0x28DF7B80, 0x28DEB000, - 0x28DDE480, 0x28DD1900, 0x28DC4D80, - 0x28DB8200, 0x28DAB680, 0x28D9EB00, - 0x28D91F80, 0x28D85400, 0x28D78880, - 0x28D6BD00, 0x28D5F180, 0x28D52600, - 0x28D45A80, 0x28D38F00, 0x28D2C380, - 0x28D1F800, 0x28D12C80, 0x28D06100, - 0x28CF9580, 0x28CECA00, 0x28CDFE80, - 0x28CD3300, 0x28CC6780, 0x28CB9C00, - 0x28CAD080, 0x28CA0500, 0x28C93980, - 0x28C86E00, 0x28C7A280, 0x28C6D700, - 0x28C60B80, 0x28C54000, 0x28C47480, - 0x28C3A900, 0x28C2DD80, 0x28C21200, - 0x28C14680, 0x28C07B00, 0x28BFAF80, - 0x28BEE400, 0x28BE1880, 0x28BD4D00, - 0x28BC8180, 0x28BBB600, 0x28BAEA80, - 0x28BA1F00, 0x28B95380, 0x28B88800, - 0x28B7BC80, 0x28B6F100, 0x28B62580, - 0x28B55A00, 0x28B48E80, 0x28B3C300, - 0x28B2F780, 0x28B22C00, 0x28B16080, - 0x28B09500, 0x28AFC980, 0x28AEFE00, - 0x28AE3280, 0x28AD6700, 0x28AC9B80, - 0x28ABD000, 0x28AB0480, 0x28AA3900, - 0x28A96D80, 0x28A8A200, 0x28A7D680, - 0x28A70B00, 0x28A63F80, 0x28A57400, - 0x28A4A880, 0x28A3DD00, 0x28A31180, - 0x28A24600, 0x28A17A80, 0x28A0AF00, - 0x289FE380, 0x289F1800, 0x289E4C80, - 0x289D8100, 0x289CB580, 0x289BEA00, - 0x289B1E80, 0x289A5300, 0x28998780, - 0x2898BC00, 0x2897F080, 0x28972500, - 0x28965980, 0x28958E00, 0x2894C280, - 0x2893F700, 0x28932B80, 0x28926000, - 0x28919480, 0x2890C900, 0x288FFD80, - 0x288F3200, 0x288E6680, 0x288D9B00, - 0x288CCF80, 0x288C0400, 0x288B3880, - 0x288A6D00, 0x2889A180, 0x2888D600, - 0x28880A80, 0x28873F00, 0x28867380, - 0x2885A800, 0x2884DC80, 0x28841100, - 0x28834580, 0x28827A00, 0x2881AE80, - 0x2880E300, 0x28801780, 0x287F4C00, - 0x287E8080, 0x287DB500, 0x287CE980, - 0x287C1E00, 0x287B5280, 0x287A8700, - 0x2879BB80, 0x2878F000, 0x28782480, - 0x28775900, 0x28768D80, 0x2875C200, - 0x2874F680, 0x28742B00, 0x28735F80, - 0x28729400, 0x2871C880, 0x2870FD00, - 0x28703180, 0x286F6600, 0x286E9A80, - 0x286DCF00, 0x286D0380, 0x286C3800, - 0x286B6C80, 0x286AA100, 0x2869D580, - 0x28690A00, 0x28683E80, 0x28677300, - 0x2866A780, 0x2865DC00, 0x28651080, - 0x28644500, 0x28637980, 0x2862AE00, - 0x2861E280, 0x28611700, 0x28604B80, - 0x285F8000, 0x285EB480, 0x285DE900, - 0x285D1D80, 0x285C5200, 0x285B8680, - 0x285ABB00, 0x2859EF80, 0x28592400, - 0x28585880, 0x28578D00, 0x2856C180, - 0x2855F600, 0x28552A80, 0x28545F00, - 0x28539380, 0x2852C800, 0x2851FC80, - 0x28513100, 0x28506580, 0x284F9A00, - 0x284ECE80, 0x284E0300, 0x284D3780, - 0x284C6C00, 0x284BA080, 0x284AD500, - 0x284A0980, 0x28493E00, 0x28487280, - 0x2847A700, 0x2846DB80, 0x28461000, - 0x28454480, 0x28447900, 0x2843AD80, - 0x2842E200, 0x28421680, 0x28414B00, - 0x28407F80, 0x283FB400, 0x283EE880, - 0x283E1D00, 0x283D5180, 0x283C8600, - 0x283BBA80, 0x283AEF00, 0x283A2380, - 0x28395800, 0x28388C80, 0x2837C100, - 0x2836F580, 0x28362A00, 0x28355E80, - 0x28349300, 0x2833C780, 0x2832FC00, - 0x28323080, 0x28316500, 0x28309980, - 0x282FCE00, 0x282F0280, 0x282E3700, - 0x282D6B80, 0x282CA000, 0x282BD480, - 0x282B0900, 0x282A3D80, 0x28297200, - 0x2828A680, 0x2827DB00, 0x28270F80, - 0x28264400, 0x28257880, 0x2824AD00, - 0x2823E180, 0x28231600, 0x28224A80, - 0x28217F00, 0x2820B380, 0x281FE800, - 0x281F1C80, 0x281E5100, 0x281D8580, - 0x281CBA00, 0x281BEE80, 0x281B2300, - 0x281A5780, 0x28198C00, 0x2818C080, - 0x2817F500, 0x28172980, 0x28165E00, - 0x28159280, 0x2814C700, 0x2813FB80, - 0x28133000, 0x28126480, 0x28119900, - 0x2810CD80, 0x28100200, 0x280F3680, - 0x280E6B00, 0x280D9F80, 0x280CD400, - 0x280C0880, 0x280B3D00, 0x280A7180, - 0x2809A600, 0x2808DA80, 0x28080F00, - 0x28074380, 0x28067800, 0x2805AC80, - 0x2804E100, 0x28041580, 0x28034A00, - 0x28027E80, 0x2801B300, 0x2800E780, - 0x28001C00, 0x27FF5080, 0x27FE8500, - 0x27FDB980, 0x27FCEE00, 0x27FC2280, - 0x27FB5700, 0x27FA8B80, 0x27F9C000, - 0x27F8F480, 0x27F82900, 0x27F75D80, - 0x27F69200, 0x27F5C680, 0x27F4FB00, - 0x27F42F80, 0x27F36400, 0x27F29880, - 0x27F1CD00, 0x27F10180, 0x27F03600, - 0x27EF6A80, 0x27EE9F00, 0x27EDD380, - 0x27ED0800, 0x27EC3C80, 0x27EB7100, - 0x27EAA580, 0x27E9DA00, 0x27E90E80, - 0x27E84300, 0x27E77780, 0x27E6AC00, - 0x27E5E080, 0x27E51500, 0x27E44980, - 0x27E37E00, 0x27E2B280, 0x27E1E700, - 0x27E11B80, 0x27E05000, 0x27DF8480, - 0x27DEB900, 0x27DDED80, 0x27DD2200, - 0x27DC5680, 0x27DB8B00, 0x27DABF80, - 0x27D9F400, 0x27D92880, 0x27D85D00, - 0x27D79180, 0x27D6C600, 0x27D5FA80, - 0x27D52F00, 0x27D46380, 0x27D39800, - 0x27D2CC80, 0x27D20100, 0x27D13580, - 0x27D06A00, 0x27CF9E80, 0x27CED300, - 0x27CE0780, 0x27CD3C00, 0x27CC7080, - 0x27CBA500, 0x27CAD980, 0x27CA0E00, - 0x27C94280, 0x27C87700, 0x27C7AB80, - 0x27C6E000, 0x27C61480, 0x27C54900, - 0x27C47D80, 0x27C3B200, 0x27C2E680, - 0x27C21B00, 0x27C14F80, 0x27C08400, - 0x27BFB880, 0x27BEED00, 0x27BE2180, - 0x27BD5600, 0x27BC8A80, 0x27BBBF00, - 0x27BAF380, 0x27BA2800, 0x27B95C80, - 0x27B89100, 0x27B7C580, 0x27B6FA00, - 0x27B62E80, 0x27B56300, 0x27B49780, - 0x27B3CC00, 0x27B30080, 0x27B23500, - 0x27B16980, 0x27B09E00, 0x27AFD280, - 0x27AF0700, 0x27AE3B80, 0x27AD7000, - 0x27ACA480, 0x27ABD900, 0x27AB0D80, - 0x27AA4200, 0x27A97680, 0x27A8AB00, - 0x27A7DF80, 0x27A71400, 0x27A64880, - 0x27A57D00, 0x27A4B180, 0x27A3E600, - 0x27A31A80, 0x27A24F00, 0x27A18380, - 0x27A0B800, 0x279FEC80, 0x279F2100, - 0x279E5580, 0x279D8A00, 0x279CBE80, - 0x279BF300, 0x279B2780, 0x279A5C00, - 0x27999080, 0x2798C500, 0x2797F980, - 0x27972E00, 0x27966280, 0x27959700, - 0x2794CB80, 0x27940000, 0x27934100, - 0x27928200, 0x2791C300, 0x27910400, - 0x27904500, 0x278F8600, 0x278EC700, - 0x278E0800, 0x278D4900, 0x278C8A00, - 0x278BCB00, 0x278B0C00, 0x278A4D00, - 0x27898E00, 0x2788CF00, 0x27881000, - 0x27875100, 0x27869200, 0x2785D300, - 0x27851400, 0x27845500, 0x27839600, - 0x2782D700, 0x27821800, 0x27815900, - 0x27809A00, 0x277FDB00, 0x277F1C00, - 0x277E5D00, 0x277D9E00, 0x277CDF00, - 0x277C2000, 0x277B6100, 0x277AA200, - 0x2779E300, 0x27792400, 0x27786500, - 0x2777A600, 0x2776E700, 0x27762800, - 0x27756900, 0x2774AA00, 0x2773EB00, - 0x27732C00, 0x27726D00, 0x2771AE00, - 0x2770EF00, 0x27703000, 0x276F7100, - 0x276EB200, 0x276DF300, 0x276D3400, - 0x276C7500, 0x276BB600, 0x276AF700, - 0x276A3800, 0x27697900, 0x2768BA00, - 0x2767FB00, 0x27673C00, 0x27667D00, - 0x2765BE00, 0x2764FF00, 0x27644000, - 0x27638100, 0x2762C200, 0x27620300, - 0x27614400, 0x27608500, 0x275FC600, - 0x275F0700, 0x275E4800, 0x275D8900, - 0x275CCA00, 0x275C0B00, 0x275B4C00, - 0x275A8D00, 0x2759CE00, 0x27590F00, - 0x27585000, 0x27579100, 0x2756D200, - 0x27561300, 0x27555400, 0x27549500, - 0x2753D600, 0x27531700, 0x27525800, - 0x27519900, 0x2750DA00, 0x27501B00, - 0x274F5C00, 0x274E9D00, 0x274DDE00, - 0x274D1F00, 0x274C6000, 0x274BA100, - 0x274AE200, 0x274A2300, 0x27496400, - 0x2748A500, 0x2747E600, 0x27472700, - 0x27466800, 0x2745A900, 0x2744EA00, - 0x27442B00, 0x27436C00, 0x2742AD00, - 0x2741EE00, 0x27412F00, 0x27407000, - 0x273FB100, 0x273EF200, 0x273E3300, - 0x273D7400, 0x273CB500, 0x273BF600, - 0x273B3700, 0x273A7800, 0x2739B900, - 0x2738FA00, 0x27383B00, 0x27377C00, - 0x2736BD00, 0x2735FE00, 0x27353F00, - 0x27348000, 0x2733C100, 0x27330200, - 0x27324300, 0x27318400, 0x2730C500, - 0x27300600, 0x272F4700, 0x272E8800, - 0x272DC900, 0x272D0A00, 0x272C4B00, - 0x272B8C00, 0x272ACD00, 0x272A0E00, - 0x27294F00, 0x27289000, 0x2727D100, - 0x27271200, 0x27265300, 0x27259400, - 0x2724D500, 0x27241600, 0x27235700, - 0x27229800, 0x2721D900, 0x27211A00, - 0x27205B00, 0x271F9C00, 0x271EDD00, - 0x271E1E00, 0x271D5F00, 0x271CA000, - 0x271BE100, 0x271B2200, 0x271A6300, - 0x2719A400, 0x2718E500, 0x27182600, - 0x27176700, 0x2716A800, 0x2715E900, - 0x27152A00, 0x27146B00, 0x2713AC00, - 0x2712ED00, 0x27122E00, 0x27116F00, - 0x2710B000, 0x270FF100, 0x270F3200, - 0x270E7300, 0x270DB400, 0x270CF500, - 0x270C3600, 0x270B7700, 0x270AB800, - 0x2709F900, 0x27093A00, 0x27087B00, - 0x2707BC00, 0x2706FD00, 0x27063E00, - 0x27057F00, 0x2704C000, 0x27040100, - 0x27034200, 0x27028300, 0x2701C400, - 0x27010500, 0x27004600, 0x26FF8700, - 0x26FEC800, 0x26FE0900, 0x26FD4A00, - 0x26FC8B00, 0x26FBCC00, 0x26FB0D00, - 0x26FA4E00, 0x26F98F00, 0x26F8D000, - 0x26F81100, 0x26F75200, 0x26F69300, - 0x26F5D400, 0x26F51500, 0x26F45600, - 0x26F39700, 0x26F2D800, 0x26F21900, - 0x26F15A00, 0x26F09B00, 0x26EFDC00, - 0x26EF1D00, 0x26EE5E00, 0x26ED9F00, - 0x26ECE000, 0x26EC2100, 0x26EB6200, - 0x26EAA300, 0x26E9E400, 0x26E92500, - 0x26E86600, 0x26E7A700, 0x26E6E800, - 0x26E62900, 0x26E56A00, 0x26E4AB00, - 0x26E3EC00, 0x26E32D00, 0x26E26E00, - 0x26E1AF00, 0x26E0F000, 0x26E03100, - 0x26DF7200, 0x26DEB300, 0x26DDF400, - 0x26DD3500, 0x26DC7600, 0x26DBB700, - 0x26DAF800, 0x26DA3900, 0x26D97A00, - 0x26D8BB00, 0x26D7FC00, 0x26D73D00, - 0x26D67E00, 0x26D5BF00, 0x26D50000, - 0x26D44100, 0x26D38200, 0x26D2C300, - 0x26D20400, 0x26D14500, 0x26D08600, - 0x26CFC700, 0x26CF0800, 0x26CE4900, - 0x26CD8A00, 0x26CCCB00, 0x26CC0C00, - 0x26CB4D00, 0x26CA8E00, 0x26C9CF00, - 0x26C91000, 0x26C85100, 0x26C79200, - 0x26C6D300, 0x26C61400, 0x26C55500, - 0x26C49600, 0x26C3D700, 0x26C31800, - 0x26C25900, 0x26C19A00, 0x26C0DB00, - 0x26C01C00, 0x26BF5D00, 0x26BE9E00, - 0x26BDDF00, 0x26BD2000, 0x26BC6100, - 0x26BBA200, 0x26BAE300, 0x26BA2400, - 0x26B96500, 0x26B8A600, 0x26B7E700, - 0x26B72800, 0x26B66900, 0x26B5AA00, - 0x26B4EB00, 0x26B42C00, 0x26B36D00, - 0x26B2AE00, 0x26B1EF00, 0x26B13000, - 0x26B07100, 0x26AFB200, 0x26AEF300, - 0x26AE3400, 0x26AD7500, 0x26ACB600, - 0x26ABF700, 0x26AB3800, 0x26AA7900, - 0x26A9BA00, 0x26A8FB00, 0x26A83C00, - 0x26A77D00, 0x26A6BE00, 0x26A5FF00, - 0x26A54000, 0x26A48100, 0x26A3C200, - 0x26A30300, 0x26A24400, 0x26A18500, - 0x26A0C600, 0x26A00700, 0x269F4800, - 0x269E8900, 0x269DCA00, 0x269D0B00, - 0x269C4C00, 0x269B8D00, 0x269ACE00, - 0x269A0F00, 0x26995000, 0x26989100, - 0x2697D200, 0x26971300, 0x26965400, - 0x26959500, 0x2694D600, 0x26941700, - 0x26935800, 0x26929900, 0x2691DA00, - 0x26911B00, 0x26905C00, 0x268F9D00, - 0x268EDE00, 0x268E1F00, 0x268D6000, - 0x268CA100, 0x268BE200, 0x268B2300, - 0x268A6400, 0x2689A500, 0x2688E600, - 0x26882700, 0x26876800, 0x2686A900, - 0x2685EA00, 0x26852B00, 0x26846C00, - 0x2683AD00, 0x2682EE00, 0x26822F00, - 0x26817000, 0x2680B100, 0x267FF200, - 0x267F3300, 0x267E7400, 0x267DB500, - 0x267CF600, 0x267C3700, 0x267B7800, - 0x267AB900, 0x2679FA00, 0x26793B00, - 0x26787C00, 0x2677BD00, 0x2676FE00, - 0x26763F00, 0x26758000, 0x2674C100, - 0x26740200, 0x26734300, 0x26728400, - 0x2671C500, 0x26710600, 0x26704700, - 0x266F8800, 0x266EC900, 0x266E0A00, - 0x266D4B00, 0x266C8C00, 0x266BCD00, - 0x266B0E00, 0x266A4F00, 0x26699000, - 0x2668D100, 0x26681200, 0x26675300, - 0x26669400, 0x2665D500, 0x26651600, - 0x26645700, 0x26639800, 0x2662D900, - 0x26621A00, 0x26615B00, 0x26609C00, - 0x265FDD00, 0x265F1E00, 0x265E5F00, - 0x265DA000, 0x265CE100, 0x265C2200, - 0x265B6300, 0x265AA400, 0x2659E500, - 0x26592600, 0x26586700, 0x2657A800, - 0x2656E900, 0x26562A00, 0x26556B00, - 0x2654AC00, 0x2653ED00, 0x26532E00, - 0x26526F00, 0x2651B000, 0x2650F100, - 0x26503200, 0x264F7300, 0x264EB400, - 0x264DF500, 0x264D3600, 0x264C7700, - 0x264BB800, 0x264AF900, 0x264A3A00, - 0x26497B00, 0x2648BC00, 0x2647FD00, - 0x26473E00, 0x26467F00, 0x2645C000, - 0x26450100, 0x26444200, 0x26438300, - 0x2642C400, 0x26420500, 0x26414600, - 0x26408700, 0x263FC800, 0x263F0900, - 0x263E4A00, 0x263D8B00, 0x263CCC00, - 0x263C0D00, 0x263B4E00, 0x263A8F00, - 0x2639D000, 0x26391100, 0x26385200, - 0x26379300, 0x2636D400, 0x26361500, - 0x26355600, 0x26349700, 0x2633D800, - 0x26331900, 0x26325A00, 0x26319B00, - 0x2630DC00, 0x26301D00, 0x262F5E00, - 0x262E9F00, 0x262DE000, 0x262D2100, - 0x262C6200, 0x262BA300, 0x262AE400, - 0x262A2500, 0x26296600, 0x2628A700, - 0x2627E800, 0x26272900, 0x26266A00, - 0x2625AB00, 0x2624EC00, 0x26242D00, - 0x26236E00, 0x2622AF00, 0x2621F000, - 0x26213100, 0x26207200, 0x261FB300, - 0x261EF400, 0x261E3500, 0x261D7600, - 0x261CB700, 0x261BF800, 0x261B3900, - 0x261A7A00, 0x2619BB00, 0x2618FC00, - 0x26183D00, 0x26177E00, 0x2616BF00, - 0x26160000, 0x26154100, 0x26148200, - 0x2613C300, 0x26130400, 0x26124500, - 0x26118600, 0x2610C700, 0x26100800, - 0x260F4900, 0x260E8A00, 0x260DCB00, - 0x260D0C00, 0x260C4D00, 0x260B8E00, - 0x260ACF00, 0x260A1000, 0x26095100, - 0x26089200, 0x2607D300, 0x26071400, - 0x26065500, 0x26059600, 0x2604D700, - 0x26041800, 0x26035900, 0x26029A00, - 0x2601DB00, 0x26011C00, 0x26005D00, - 0x25FF9E00, 0x25FEDF00, 0x25FE2000, - 0x25FD6100, 0x25FCA200, 0x25FBE300, - 0x25FB2400, 0x25FA6500, 0x25F9A600, - 0x25F8E700, 0x25F82800, 0x25F76900, - 0x25F6AA00, 0x25F5EB00, 0x25F52C00, - 0x25F46D00, 0x25F3AE00, 0x25F2EF00, - 0x25F23000, 0x25F17100, 0x25F0B200, - 0x25EFF300, 0x25EF3400, 0x25EE7500, - 0x25EDB600, 0x25ECF700, 0x25EC3800, - 0x25EB7900, 0x25EABA00, 0x25E9FB00, - 0x25E93C00, 0x25E87D00, 0x25E7BE00, - 0x25E6FF00, 0x25E64000, 0x25E58100, - 0x25E4C200, 0x25E40300, 0x25E34400, - 0x25E28500, 0x25E1C600, 0x25E10700, - 0x25E04800, 0x25DF8900, 0x25DECA00, - 0x25DE0B00, 0x25DD4C00, 0x25DC8D00, - 0x25DBCE00, 0x25DB0F00, 0x25DA5000, - 0x25D99100, 0x25D8D200, 0x25D81300, - 0x25D75400, 0x25D69500, 0x25D5D600, - 0x25D51700, 0x25D45800, 0x25D39900, - 0x25D2DA00, 0x25D21B00, 0x25D15C00, - 0x25D09D00, 0x25CFDE00, 0x25CF1F00, - 0x25CE6000, 0x25CDA100, 0x25CCE200, - 0x25CC2300, 0x25CB6400, 0x25CAA500, - 0x25C9E600, 0x25C92700, 0x25C86800, - 0x25C7A900, 0x25C6EA00, 0x25C62B00, - 0x25C56C00, 0x25C4AD00, 0x25C3EE00, - 0x25C32F00, 0x25C27000, 0x25C1B100, - 0x25C0F200, 0x25C03300, 0x25BF7400, - 0x25BEB500, 0x25BDF600, 0x25BD3700, - 0x25BC7800, 0x25BBB900, 0x25BAFA00, - 0x25BA3B00, 0x25B97C00, 0x25B8BD00, - 0x25B7FE00, 0x25B73F00, 0x25B68000, - 0x25B5C100, 0x25B50200, 0x25B44300, - 0x25B38400, 0x25B2C500, 0x25B20600, - 0x25B14700, 0x25B08800, 0x25AFC900, - 0x25AF0A00, 0x25AE4B00, 0x25AD8C00, - 0x25ACCD00, 0x25AC0E00, 0x25AB4F00, - 0x25AA9000, 0x25A9D100, 0x25A91200, - 0x25A85300, 0x25A79400, 0x25A6D500, - 0x25A61600, 0x25A55700, 0x25A49800, - 0x25A3D900, 0x25A31A00, 0x25A25B00, - 0x25A19C00, 0x25A0DD00, 0x25A01E00, - 0x259F5F00, 0x259EA000, 0x259DE100, - 0x259D2200, 0x259C6300, 0x259BA400, - 0x259AE500, 0x259A2600, 0x25996700, - 0x2598A800, 0x2597E900, 0x25972A00, - 0x25966B00, 0x2595AC00, 0x2594ED00, - 0x25942E00, 0x25936F00, 0x2592B000, - 0x2591F100, 0x25913200, 0x25907300, - 0x258FB400, 0x258EF500, 0x258E3600, - 0x258D7700, 0x258CB800, 0x258BF900, - 0x258B3A00, 0x258A7B00, 0x2589BC00, - 0x2588FD00, 0x25883E00, 0x25877F00, - 0x2586C000, 0x25860100, 0x25854200, - 0x25848300, 0x2583C400, 0x25830500, - 0x25824600, 0x25818700, 0x2580C800, - 0x25800900, 0x257F4A00, 0x257E8B00, - 0x257DCC00, 0x257D0D00, 0x257C4E00, - 0x257B8F00, 0x257AD000, 0x257A1100, - 0x25795200, 0x25789300, 0x2577D400, - 0x25771500, 0x25765600, 0x25759700, - 0x2574D800, 0x25741900, 0x25735A00, - 0x25729B00, 0x2571DC00, 0x25711D00, - 0x25705E00, 0x256F9F00, 0x256EE000, - 0x256E2100, 0x256D6200, 0x256CA300, - 0x256BE400, 0x256B2500, 0x256A6600, - 0x2569A700, 0x2568E800, 0x25682900, - 0x25676A00, 0x2566AB00, 0x2565EC00, - 0x25652D00, 0x25646E00, 0x2563AF00, - 0x2562F000, 0x25623100, 0x25617200, - 0x2560B300, 0x255FF400, 0x255F3500, - 0x255E7600, 0x255DB700, 0x255CF800, - 0x255C3900, 0x255B7A00, 0x255ABB00, - 0x2559FC00, 0x25593D00, 0x25587E00, - 0x2557BF00, 0x25570000, 0x25564100, - 0x25558200, 0x2554C300, 0x25540400, - 0x25534500, 0x25528600, 0x2551C700, - 0x25510800, 0x25504900, 0x254F8A00, - 0x254ECB00, 0x254E0C00, 0x254D4D00, - 0x254C8E00, 0x254BCF00, 0x254B1000, - 0x254A5100, 0x25499200, 0x2548D300, - 0x25481400, 0x25475500, 0x25469600, - 0x2545D700, 0x25451800, 0x25445900, - 0x25439A00, 0x2542DB00, 0x25421C00, - 0x25415D00, 0x25409E00, 0x253FDF00, - 0x253F2000, 0x253E6100, 0x253DA200, - 0x253CE300, 0x253C2400, 0x253B6500, - 0x253AA600, 0x2539E700, 0x25392800, - 0x25386900, 0x2537AA00, 0x2536EB00, - 0x25362C00, 0x25356D00, 0x2534AE00, - 0x2533EF00, 0x25333000, 0x25327100, - 0x2531B200, 0x2530F300, 0x25303400, - 0x252F7500, 0x252EB600, 0x252DF700, - 0x252D3800, 0x252C7900, 0x252BBA00, - 0x252AFB00, 0x252A3C00, 0x25297D00, - 0x2528BE00, 0x2527FF00, 0x25274000, - 0x25268100, 0x2525C200, 0x25250300, - 0x25244400, 0x25238500, 0x2522C600, - 0x25220700, 0x25214800, 0x25208900, - 0x251FCA00, 0x251F0B00, 0x251E4C00, - 0x251D8D00, 0x251CCE00, 0x251C0F00, - 0x251B5000, 0x251A9100, 0x2519D200, - 0x25191300, 0x25185400, 0x25179500, - 0x2516D600, 0x25161700, 0x25155800, - 0x25149900, 0x2513DA00, 0x25131B00, - 0x25125C00, 0x25119D00, 0x2510DE00, - 0x25101F00, 0x250F6000, 0x250EA100, - 0x250DE200, 0x250D2300, 0x250C6400, - 0x250BA500, 0x250AE600, 0x250A2700, - 0x25096800, 0x2508A900, 0x2507EA00, - 0x25072B00, 0x25066C00, 0x2505AD00, - 0x2504EE00, 0x25042F00, 0x25037000, - 0x2502B100, 0x2501F200, 0x25013300, - 0x25007400, 0x24FFB500, 0x24FEF600, - 0x24FE3700, 0x24FD7800, 0x24FCB900, - 0x24FBFA00, 0x24FB3B00, 0x24FA7C00, - 0x24F9BD00, 0x24F8FE00, 0x24F83F00, - 0x24F78000, 0x24F6C100, 0x24F60200, - 0x24F54300, 0x24F48400, 0x24F3C500, - 0x24F30600, 0x24F24700, 0x24F18800, - 0x24F0C900, 0x24F00A00, 0x24EF4B00, - 0x24EE8C00, 0x24EDCD00, 0x24ED0E00, - 0x24EC4F00, 0x24EB9000, 0x24EAD100, - 0x24EA1200, 0x24E95300, 0x24E89400, - 0x24E7D500, 0x24E71600, 0x24E65700, - 0x24E59800, 0x24E4D900, 0x24E41A00, - 0x24E35B00, 0x24E29C00, 0x24E1DD00, - 0x24E11E00, 0x24E05F00, 0x24DFA000, - 0x24DEE100, 0x24DE2200, 0x24DD6300, - 0x24DCA400, 0x24DBE500, 0x24DB2600, - 0x24DA6700, 0x24D9A800, 0x24D8E900, - 0x24D82A00, 0x24D76B00, 0x24D6AC00, - 0x24D5ED00, 0x24D52E00, 0x24D46F00, - 0x24D3B000, 0x24D2F100, 0x24D23200, - 0x24D17300, 0x24D0B400, 0x24CFF500, - 0x24CF3600, 0x24CE7700, 0x24CDB800, - 0x24CCF900, 0x24CC3A00, 0x24CB7B00, - 0x24CABC00, 0x24C9FD00, 0x24C93E00, - 0x24C87F00, 0x24C7C000, 0x24C70100, - 0x24C64200, 0x24C58300, 0x24C4C400, - 0x24C40500, 0x24C34600, 0x24C28700, - 0x24C1C800, 0x24C10900, 0x24C04A00, - 0x24BF8B00, 0x24BECC00, 0x24BE0D00, - 0x24BD4E00, 0x24BC8F00, 0x24BBD000, - 0x24BB1100, 0x24BA5200, 0x24B99300, - 0x24B8D400, 0x24B81500, 0x24B75600, - 0x24B69700, 0x24B5D800, 0x24B51900, - 0x24B45A00, 0x24B39B00, 0x24B2DC00, - 0x24B21D00, 0x24B15E00, 0x24B09F00, - 0x24AFE000, 0x24AF2100, 0x24AE6200, - 0x24ADA300, 0x24ACE400, 0x24AC2500, - 0x24AB6600, 0x24AAA700, 0x24A9E800, - 0x24A92900, 0x24A86A00, 0x24A7AB00, - 0x24A6EC00, 0x24A62D00, 0x24A56E00, - 0x24A4AF00, 0x24A3F000, 0x24A33100, - 0x24A27200, 0x24A1B300, 0x24A0F400, - 0x24A03500, 0x249F7600, 0x249EB700, - 0x249DF800, 0x249D3900, 0x249C7A00, - 0x249BBB00, 0x249AFC00, 0x249A3D00, - 0x24997E00, 0x2498BF00, 0x24980000, - 0x24974100, 0x24968200, 0x2495C300, - 0x24950400, 0x24944500, 0x24938600, - 0x2492C700, 0x24920800, 0x24914900, - 0x24908A00, 0x248FCB00, 0x248F0C00, - 0x248E4D00, 0x248D8E00, 0x248CCF00, - 0x248C1000, 0x248B5100, 0x248A9200, - 0x2489D300, 0x24891400, 0x24885500, - 0x24879600, 0x2486D700, 0x24861800, - 0x24855900, 0x24849A00, 0x2483DB00, - 0x24831C00, 0x24825D00, 0x24819E00, - 0x2480DF00, 0x24802000, 0x247F6100, - 0x247EA200, 0x247DE300, 0x247D2400, - 0x247C6500, 0x247BA600, 0x247AE700, - 0x247A2800, 0x24796900, 0x2478AA00, - 0x2477EB00, 0x24772C00, 0x24766D00, - 0x2475AE00, 0x2474EF00, 0x24743000, - 0x24737100, 0x2472B200, 0x2471F300, - 0x24713400, 0x24707500, 0x246FB600, - 0x246EF700, 0x246E3800, 0x246D7900, - 0x246CBA00, 0x246BFB00, 0x246B3C00, - 0x246A7D00, 0x2469BE00, 0x2468FF00, - 0x24684000, 0x24678100, 0x2466C200, - 0x24660300, 0x24654400, 0x24648500, - 0x2463C600, 0x24630700, 0x24624800, - 0x24618900, 0x2460CA00, 0x24600B00, - 0x245F4C00, 0x245E8D00, 0x245DCE00, - 0x245D0F00, 0x245C5000, 0x245B9100, - 0x245AD200, 0x245A1300, 0x24595400, - 0x24589500, 0x2457D600, 0x24571700, - 0x24565800, 0x24559900, 0x2454DA00, - 0x24541B00, 0x24535C00, 0x24529D00, - 0x2451DE00, 0x24511F00, 0x24506000, - 0x244FA100, 0x244EE200, 0x244E2300, - 0x244D6400, 0x244CA500, 0x244BE600, - 0x244B2700, 0x244A6800, 0x2449A900, - 0x2448EA00, 0x24482B00, 0x24476C00, - 0x2446AD00, 0x2445EE00, 0x24452F00, - 0x24447000, 0x2443B100, 0x2442F200, - 0x24423300, 0x24417400, 0x2440B500, - 0x243FF600, 0x243F3700, 0x243E7800, - 0x243DB900, 0x243CFA00, 0x243C3B00, - 0x243B7C00, 0x243ABD00, 0x2439FE00, - 0x24393F00, 0x24388000, 0x2437C100, - 0x24370200, 0x24364300, 0x24358400, - 0x2434C500, 0x24340600, 0x24334700, - 0x24328800, 0x2431C900, 0x24310A00, - 0x24304B00, 0x242F8C00, 0x242ECD00, - 0x242E0E00, 0x242D4F00, 0x242C9000, - 0x242BD100, 0x242B1200, 0x242A5300, - 0x24299400, 0x2428D500, 0x24281600, - 0x24275700, 0x24269800, 0x2425D900, - 0x24251A00, 0x24245B00, 0x24239C00, - 0x2422DD00, 0x24221E00, 0x24215F00, - 0x2420A000, 0x241FE100, 0x241F2200, - 0x241E6300, 0x241DA400, 0x241CE500, - 0x241C2600, 0x241B6700, 0x241AA800, - 0x2419E900, 0x24192A00, 0x24186B00, - 0x2417AC00, 0x2416ED00, 0x24162E00, - 0x24156F00, 0x2414B000, 0x2413F100, - 0x24133200, 0x24127300, 0x2411B400, - 0x2410F500, 0x24103600, 0x240F7700, - 0x240EB800, 0x240DF900, 0x240D3A00, - 0x240C7B00, 0x240BBC00, 0x240AFD00, - 0x240A3E00, 0x24097F00, 0x2408C000, - 0x24080100, 0x24074200, 0x24068300, - 0x2405C400, 0x24050500, 0x24044600, - 0x24038700, 0x2402C800, 0x24020900, - 0x24014A00, 0x24008B00, 0x23FFCC00, - 0x23FF0D00, 0x23FE4E00, 0x23FD8F00, - 0x23FCD000, 0x23FC1100, 0x23FB5200, - 0x23FA9300, 0x23F9D400, 0x23F91500, - 0x23F85600, 0x23F79700, 0x23F6D800, - 0x23F61900, 0x23F55A00, 0x23F49B00, - 0x23F3DC00, 0x23F31D00, 0x23F25E00, - 0x23F19F00, 0x23F0E000, 0x23F02100, - 0x23EF6200, 0x23EEA300, 0x23EDE400, - 0x23ED2500, 0x23EC6600, 0x23EBA700, - 0x23EAE800, 0x23EA2900, 0x23E96A00, - 0x23E8AB00, 0x23E7EC00, 0x23E72D00, - 0x23E66E00, 0x23E5AF00, 0x23E4F000, - 0x23E43100, 0x23E37200, 0x23E2B300, - 0x23E1F400, 0x23E13500, 0x23E07600, - 0x23DFB700, 0x23DEF800, 0x23DE3900, - 0x23DD7A00, 0x23DCBB00, 0x23DBFC00, - 0x23DB3D00, 0x23DA7E00, 0x23D9BF00, - 0x23D90000, 0x23D84100, 0x23D78200, - 0x23D6C300, 0x23D60400, 0x23D54500, - 0x23D48600, 0x23D3C700, 0x23D30800, - 0x23D24900, 0x23D18A00, 0x23D0CB00, - 0x23D00C00, 0x23CF4D00, 0x23CE8E00, - 0x23CDCF00, 0x23CD1000, 0x23CC5100, - 0x23CB9200, 0x23CAD300, 0x23CA1400, - 0x23C95500, 0x23C89600, 0x23C7D700, - 0x23C71800, 0x23C65900, 0x23C59A00, - 0x23C4DB00, 0x23C41C00, 0x23C35D00, - 0x23C29E00, 0x23C1DF00, 0x23C12000, - 0x23C06100, 0x23BFA200, 0x23BEE300, - 0x23BE2400, 0x23BD6500, 0x23BCA600, - 0x23BBE700, 0x23BB2800, 0x23BA6900, - 0x23B9AA00, 0x23B8EB00, 0x23B82C00, - 0x23B76D00, 0x23B6AE00, 0x23B5EF00, - 0x23B53000, 0x23B47100, 0x23B3B200, - 0x23B2F300, 0x23B23400, 0x23B17500, - 0x23B0B600, 0x23AFF700, 0x23AF3800, - 0x23AE7900, 0x23ADBA00, 0x23ACFB00, - 0x23AC3C00, 0x23AB7D00, 0x23AABE00, - 0x23A9FF00, 0x23A94000, 0x23A88100, - 0x23A7C200, 0x23A70300, 0x23A64400, - 0x23A58500, 0x23A4C600, 0x23A40700, - 0x23A34800, 0x23A28900, 0x23A1CA00, - 0x23A10B00, 0x23A04C00, 0x239F8D00, - 0x239ECE00, 0x239E0F00, 0x239D5000, - 0x239C9100, 0x239BD200, 0x239B1300, - 0x239A5400, 0x23999500, 0x2398D600, - 0x23981700, 0x23975800, 0x23969900, - 0x2395DA00, 0x23951B00, 0x23945C00, - 0x23939D00, 0x2392DE00, 0x23921F00, - 0x23916000, 0x2390A100, 0x238FE200, - 0x238F2300, 0x238E6400, 0x238DA500, - 0x238CE600, 0x238C2700, 0x238B6800, - 0x238AA900, 0x2389EA00, 0x23892B00, - 0x23886C00, 0x2387AD00, 0x2386EE00, - 0x23862F00, 0x23857000, 0x2384B100, - 0x2383F200, 0x23833300, 0x23827400, - 0x2381B500, 0x2380F600, 0x23803700, - 0x237F7800, 0x237EB900, 0x237DFA00, - 0x237D3B00, 0x237C7C00, 0x237BBD00, - 0x237AFE00, 0x237A3F00, 0x23798000, - 0x2378C100, 0x23780200, 0x23774300, - 0x23768400, 0x2375C500, 0x23750600, - 0x23744700, 0x23738800, 0x2372C900, - 0x23720A00, 0x23714B00, 0x23708C00, - 0x236FCD00, 0x236F0E00, 0x236E4F00, - 0x236D9000, 0x236CD100, 0x236C1200, - 0x236B5300, 0x236A9400, 0x2369D500, - 0x23691600, 0x23685700, 0x23679800, - 0x2366D900, 0x23661A00, 0x23655B00, - 0x23649C00, 0x2363DD00, 0x23631E00, - 0x23625F00, 0x2361A000, 0x2360E100, - 0x23602200, 0x235F6300, 0x235EA400, - 0x235DE500, 0x235D2600, 0x235C6700, - 0x235BA800, 0x235AE900, 0x235A2A00, - 0x23596B00, 0x2358AC00, 0x2357ED00, - 0x23572E00, 0x23566F00, 0x2355B000, - 0x2354F100, 0x23543200, 0x23537300, - 0x2352B400, 0x2351F500, 0x23513600, - 0x23507700, 0x234FB800, 0x234EF900, - 0x234E3A00, 0x234D7B00, 0x234CBC00, - 0x234BFD00, 0x234B3E00, 0x234A7F00, - 0x2349C000, 0x23490100, 0x23484200, - 0x23478300, 0x2346C400, 0x23460500, - 0x23454600, 0x23448700, 0x2343C800, - 0x23430900, 0x23424A00, 0x23418B00, - 0x2340CC00, 0x23400D00, 0x233F4E00, - 0x233E8F00, 0x233DD000, 0x233D1100, - 0x233C5200, 0x233B9300, 0x233AD400, - 0x233A1500, 0x23395600, 0x23389700, - 0x2337D800, 0x23371900, 0x23365A00, - 0x23359B00, 0x2334DC00, 0x23341D00, - 0x23335E00, 0x23329F00, 0x2331E000, - 0x23312100, 0x23306200, 0x232FA300, - 0x232EE400, 0x232E2500, 0x232D6600, - 0x232CA700, 0x232BE800, 0x232B2900, - 0x232A6A00, 0x2329AB00, 0x2328EC00, - 0x23282D00, 0x23276E00, 0x2326AF00, - 0x2325F000, 0x23253100, 0x23247200, - 0x2323B300, 0x2322F400, 0x23223500, - 0x23217600, 0x2320B700, 0x231FF800, - 0x231F3900, 0x231E7A00, 0x231DBB00, - 0x231CFC00, 0x231C3D00, 0x231B7E00, - 0x231ABF00, 0x231A0000, 0x23194100, - 0x23188200, 0x2317C300, 0x23170400, - 0x23164500, 0x23158600, 0x2314C700, - 0x23140800, 0x23134900, 0x23128A00, - 0x2311CB00, 0x23110C00, 0x23104D00, - 0x230F8E00, 0x230ECF00, 0x230E1000, - 0x230D5100, 0x230C9200, 0x230BD300, - 0x230B1400, 0x230A5500, 0x23099600, - 0x2308D700, 0x23081800, 0x23075900, - 0x23069A00, 0x2305DB00, 0x23051C00, - 0x23045D00, 0x23039E00, 0x2302DF00, - 0x23022000, 0x23016100, 0x2300A200, - 0x22FFE300, 0x22FF2400, 0x22FE6500, - 0x22FDA600, 0x22FCE700, 0x22FC2800, - 0x22FB6900, 0x22FAAA00, 0x22F9EB00, - 0x22F92C00, 0x22F86D00, 0x22F7AE00, - 0x22F6EF00, 0x22F63000, 0x22F57100, - 0x22F4B200, 0x22F3F300, 0x22F33400, - 0x22F27500, 0x22F1B600, 0x22F0F700, - 0x22F03800, 0x22EF7900, 0x22EEBA00, - 0x22EDFB00, 0x22ED3C00, 0x22EC7D00, - 0x22EBBE00, 0x22EAFF00, 0x22EA4000, - 0x22E98100, 0x22E8C200, 0x22E80300, - 0x22E74400, 0x22E68500, 0x22E5C600, - 0x22E50700, 0x22E44800, 0x22E38900, - 0x22E2CA00, 0x22E20B00, 0x22E14C00, - 0x22E08D00, 0x22DFCE00, 0x22DF0F00, - 0x22DE5000, 0x22DD9100, 0x22DCD200, - 0x22DC1300, 0x22DB5400, 0x22DA9500, - 0x22D9D600, 0x22D91700, 0x22D85800, - 0x22D79900, 0x22D6DA00, 0x22D61B00, - 0x22D55C00, 0x22D49D00, 0x22D3DE00, - 0x22D31F00, 0x22D26000, 0x22D1A100, - 0x22D0E200, 0x22D02300, 0x22CF6400, - 0x22CEA500, 0x22CDE600, 0x22CD2700, - 0x22CC6800, 0x22CBA900, 0x22CAEA00, - 0x22CA2B00, 0x22C96C00, 0x22C8AD00, - 0x22C7EE00, 0x22C72F00, 0x22C67000, - 0x22C5B100, 0x22C4F200, 0x22C43300, - 0x22C37400, 0x22C2B500, 0x22C1F600, - 0x22C13700, 0x22C07800, 0x22BFB900, - 0x22BEFA00, 0x22BE3B00, 0x22BD7C00, - 0x22BCBD00, 0x22BBFE00, 0x22BB3F00, - 0x22BA8000, 0x22B9C100, 0x22B90200, - 0x22B84300, 0x22B78400, 0x22B6C500, - 0x22B60600, 0x22B54700, 0x22B48800, - 0x22B3C900, 0x22B30A00, 0x22B24B00, - 0x22B18C00, 0x22B0CD00, 0x22B00E00, - 0x22AF4F00, 0x22AE9000, 0x22ADD100, - 0x22AD1200, 0x22AC5300, 0x22AB9400, - 0x22AAD500, 0x22AA1600, 0x22A95700, - 0x22A89800, 0x22A7D900, 0x22A71A00, - 0x22A65B00, 0x22A59C00, 0x22A4DD00, - 0x22A41E00, 0x22A35F00, 0x22A2A000, - 0x22A1E100, 0x22A12200, 0x22A06300, - 0x229FA400, 0x229EE500, 0x229E2600, - 0x229D6700, 0x229CA800, 0x229BE900, - 0x229B2A00, 0x229A6B00, 0x2299AC00, - 0x2298ED00, 0x22982E00, 0x22976F00, - 0x2296B000, 0x2295F100, 0x22953200, - 0x22947300, 0x2293B400, 0x2292F500, - 0x22923600, 0x22917700, 0x2290B800, - 0x228FF900, 0x228F3A00, 0x228E7B00, - 0x228DBC00, 0x228CFD00, 0x228C3E00, - 0x228B7F00, 0x228AC000, 0x228A0100, - 0x22894200, 0x22888300, 0x2287C400, - 0x22870500, 0x22864600, 0x22858700, - 0x2284C800, 0x22840900, 0x22834A00, - 0x22828B00, 0x2281CC00, 0x22810D00, - 0x22804E00, 0x227F8F00, 0x227ED000, - 0x227E1100, 0x227D5200, 0x227C9300, - 0x227BD400, 0x227B1500, 0x227A5600, - 0x22799700, 0x2278D800, 0x22781900, - 0x22775A00, 0x22769B00, 0x2275DC00, - 0x22751D00, 0x22745E00, 0x22739F00, - 0x2272E000, 0x22722100, 0x22716200, - 0x2270A300, 0x226FE400, 0x226F2500, - 0x226E6600, 0x226DA700, 0x226CE800, - 0x226C2900, 0x226B6A00, 0x226AAB00, - 0x2269EC00, 0x22692D00, 0x22686E00, - 0x2267AF00, 0x2266F000, 0x22663100, - 0x22657200, 0x2264B300, 0x2263F400, - 0x22633500, 0x22627600, 0x2261B700, - 0x2260F800, 0x22603900, 0x225F7A00, - 0x225EBB00, 0x225DFC00, 0x225D3D00, - 0x225C7E00, 0x225BBF00, 0x225B0000, - 0x225A4100, 0x22598200, 0x2258C300, - 0x22580400, 0x22574500, 0x22568600, - 0x2255C700, 0x22550800, 0x22544900, - 0x22538A00, 0x2252CB00, 0x22520C00, - 0x22514D00, 0x22508E00, 0x224FCF00, - 0x224F1000, 0x224E5100, 0x224D9200, - 0x224CD300, 0x224C1400, 0x224B5500, - 0x224A9600, 0x2249D700, 0x22491800, - 0x22485900, 0x22479A00, 0x2246DB00, - 0x22461C00, 0x22455D00, 0x22449E00, - 0x2243DF00, 0x22432000, 0x22426100, - 0x2241A200, 0x2240E300, 0x22402400, - 0x223F6500, 0x223EA600, 0x223DE700, - 0x223D2800, 0x223C6900, 0x223BAA00, - 0x223AEB00, 0x223A2C00, 0x22396D00, - 0x2238AE00, 0x2237EF00, 0x22373000, - 0x22367100, 0x2235B200, 0x2234F300, - 0x22343400, 0x22337500, 0x2232B600, - 0x2231F700, 0x22313800, 0x22307900, - 0x222FBA00, 0x222EFB00, 0x222E3C00, - 0x222D7D00, 0x222CBE00, 0x222BFF00, - 0x222B4000, 0x222A8100, 0x2229C200, - 0x22290300, 0x22284400, 0x22278500, - 0x2226C600, 0x22260700, 0x22254800, - 0x22248900, 0x2223CA00, 0x22230B00, - 0x22224C00, 0x22218D00, 0x2220CE00, - 0x22200F00, 0x221F5000, 0x221E9100, - 0x221DD200, 0x221D1300, 0x221C5400, - 0x221B9500, 0x221AD600, 0x221A1700, - 0x22195800, 0x22189900, 0x2217DA00, - 0x22171B00, 0x22165C00, 0x22159D00, - 0x2214DE00, 0x22141F00, 0x22136000, - 0x2212A100, 0x2211E200, 0x22112300, - 0x22106400, 0x220FA500, 0x220EE600, - 0x220E2700, 0x220D6800, 0x220CA900, - 0x220BEA00, 0x220B2B00, 0x220A6C00, - 0x2209AD00, 0x2208EE00, 0x22082F00, - 0x22077000, 0x2206B100, 0x2205F200, - 0x22053300, 0x22047400, 0x2203B500, - 0x2202F600, 0x22023700, 0x22017800, - 0x2200B900, 0x21FFFA00, 0x21FF3B00, - 0x21FE7C00, 0x21FDBD00, 0x21FCFE00, - 0x21FC3F00, 0x21FB8000, 0x21FAC100, - 0x21FA0200, 0x21F94300, 0x21F88400, - 0x21F7C500, 0x21F70600, 0x21F64700, - 0x21F58800, 0x21F4C900, 0x21F40A00, - 0x21F34B00, 0x21F28C00, 0x21F1CD00, - 0x21F10E00, 0x21F04F00, 0x21EF9000, - 0x21EED100, 0x21EE1200, 0x21ED5300, - 0x21EC9400, 0x21EBD500, 0x21EB1600, - 0x21EA5700, 0x21E99800, 0x21E8D900, - 0x21E81A00, 0x21E75B00, 0x21E69C00, - 0x21E5DD00, 0x21E51E00, 0x21E45F00, - 0x21E3A000, 0x21E2E100, 0x21E22200, - 0x21E16300, 0x21E0A400, 0x21DFE500, - 0x21DF2600, 0x21DE6700, 0x21DDA800, - 0x21DCE900, 0x21DC2A00, 0x21DB6B00, - 0x21DAAC00, 0x21D9ED00, 0x21D92E00, - 0x21D86F00, 0x21D7B000, 0x21D6F100, - 0x21D63200, 0x21D57300, 0x21D4B400, - 0x21D3F500, 0x21D33600, 0x21D27700, - 0x21D1B800, 0x21D0F900, 0x21D03A00, - 0x21CF7B00, 0x21CEBC00, 0x21CDFD00, - 0x21CD3E00, 0x21CC7F00, 0x21CBC000, - 0x21CB0100, 0x21CA4200, 0x21C98300, - 0x21C8C400, 0x21C80500, 0x21C74600, - 0x21C68700, 0x21C5C800, 0x21C50900, - 0x21C44A00, 0x21C38B00, 0x21C2CC00, - 0x21C20D00, 0x21C14E00, 0x21C08F00, - 0x21BFD000, 0x21BF1100, 0x21BE5200, - 0x21BD9300, 0x21BCD400, 0x21BC1500, - 0x21BB5600, 0x21BA9700, 0x21B9D800, - 0x21B91900, 0x21B85A00, 0x21B79B00, - 0x21B6DC00, 0x21B61D00, 0x21B55E00, - 0x21B49F00, 0x21B3E000, 0x21B32100, - 0x21B26200, 0x21B1A300, 0x21B0E400, - 0x21B02500, 0x21AF6600, 0x21AEA700, - 0x21ADE800, 0x21AD2900, 0x21AC6A00, - 0x21ABAB00, 0x21AAEC00, 0x21AA2D00, - 0x21A96E00, 0x21A8AF00, 0x21A7F000, - 0x21A73100, 0x21A67200, 0x21A5B300, - 0x21A4F400, 0x21A43500, 0x21A37600, - 0x21A2B700, 0x21A1F800, 0x21A13900, - 0x21A07A00, 0x219FBB00, 0x219EFC00, - 0x219E3D00, 0x219D7E00, 0x219CBF00, - 0x219C0000, 0x219B4C00, 0x219A9800, - 0x2199E400, 0x21993000, 0x21987C00, - 0x2197C800, 0x21971400, 0x21966000, - 0x2195AC00, 0x2194F800, 0x21944400, - 0x21939000, 0x2192DC00, 0x21922800, - 0x21917400, 0x2190C000, 0x21900C00, - 0x218F5800, 0x218EA400, 0x218DF000, - 0x218D3C00, 0x218C8800, 0x218BD400, - 0x218B2000, 0x218A6C00, 0x2189B800, - 0x21890400, 0x21885000, 0x21879C00, - 0x2186E800, 0x21863400, 0x21858000, - 0x2184CC00, 0x21841800, 0x21836400, - 0x2182B000, 0x2181FC00, 0x21814800, - 0x21809400, 0x217FE000, 0x217F2C00, - 0x217E7800, 0x217DC400, 0x217D1000, - 0x217C5C00, 0x217BA800, 0x217AF400, - 0x217A4000, 0x21798C00, 0x2178D800, - 0x21782400, 0x21777000, 0x2176BC00, - 0x21760800, 0x21755400, 0x2174A000, - 0x2173EC00, 0x21733800, 0x21728400, - 0x2171D000, 0x21711C00, 0x21706800, - 0x216FB400, 0x216F0000, 0x216E4C00, - 0x216D9800, 0x216CE400, 0x216C3000, - 0x216B7C00, 0x216AC800, 0x216A1400, - 0x21696000, 0x2168AC00, 0x2167F800, - 0x21674400, 0x21669000, 0x2165DC00, - 0x21652800, 0x21647400, 0x2163C000, - 0x21630C00, 0x21625800, 0x2161A400, - 0x2160F000, 0x21603C00, 0x215F8800, - 0x215ED400, 0x215E2000, 0x215D6C00, - 0x215CB800, 0x215C0400, 0x215B5000, - 0x215A9C00, 0x2159E800, 0x21593400, - 0x21588000, 0x2157CC00, 0x21571800, - 0x21566400, 0x2155B000, 0x2154FC00, - 0x21544800, 0x21539400, 0x2152E000, - 0x21522C00, 0x21517800, 0x2150C400, - 0x21501000, 0x214F5C00, 0x214EA800, - 0x214DF400, 0x214D4000, 0x214C8C00, - 0x214BD800, 0x214B2400, 0x214A7000, - 0x2149BC00, 0x21490800, 0x21485400, - 0x2147A000, 0x2146EC00, 0x21463800, - 0x21458400, 0x2144D000, 0x21441C00, - 0x21436800, 0x2142B400, 0x21420000, - 0x21414C00, 0x21409800, 0x213FE400, - 0x213F3000, 0x213E7C00, 0x213DC800, - 0x213D1400, 0x213C6000, 0x213BAC00, - 0x213AF800, 0x213A4400, 0x21399000, - 0x2138DC00, 0x21382800, 0x21377400, - 0x2136C000, 0x21360C00, 0x21355800, - 0x2134A400, 0x2133F000, 0x21333C00, - 0x21328800, 0x2131D400, 0x21312000, - 0x21306C00, 0x212FB800, 0x212F0400, - 0x212E5000, 0x212D9C00, 0x212CE800, - 0x212C3400, 0x212B8000, 0x212ACC00, - 0x212A1800, 0x21296400, 0x2128B000, - 0x2127FC00, 0x21274800, 0x21269400, - 0x2125E000, 0x21252C00, 0x21247800, - 0x2123C400, 0x21231000, 0x21225C00, - 0x2121A800, 0x2120F400, 0x21204000, - 0x211F8C00, 0x211ED800, 0x211E2400, - 0x211D7000, 0x211CBC00, 0x211C0800, - 0x211B5400, 0x211AA000, 0x2119EC00, - 0x21193800, 0x21188400, 0x2117D000, - 0x21171C00, 0x21166800, 0x2115B400, - 0x21150000, 0x21144C00, 0x21139800, - 0x2112E400, 0x21123000, 0x21117C00, - 0x2110C800, 0x21101400, 0x210F6000, - 0x210EAC00, 0x210DF800, 0x210D4400, - 0x210C9000, 0x210BDC00, 0x210B2800, - 0x210A7400, 0x2109C000, 0x21090C00, - 0x21085800, 0x2107A400, 0x2106F000, - 0x21063C00, 0x21058800, 0x2104D400, - 0x21042000, 0x21036C00, 0x2102B800, - 0x21020400, 0x21015000, 0x21009C00, - 0x20FFE800, 0x20FF3400, 0x20FE8000, - 0x20FDCC00, 0x20FD1800, 0x20FC6400, - 0x20FBB000, 0x20FAFC00, 0x20FA4800, - 0x20F99400, 0x20F8E000, 0x20F82C00, - 0x20F77800, 0x20F6C400, 0x20F61000, - 0x20F55C00, 0x20F4A800, 0x20F3F400, - 0x20F34000, 0x20F28C00, 0x20F1D800, - 0x20F12400, 0x20F07000, 0x20EFBC00, - 0x20EF0800, 0x20EE5400, 0x20EDA000, - 0x20ECEC00, 0x20EC3800, 0x20EB8400, - 0x20EAD000, 0x20EA1C00, 0x20E96800, - 0x20E8B400, 0x20E80000, 0x20E74C00, - 0x20E69800, 0x20E5E400, 0x20E53000, - 0x20E47C00, 0x20E3C800, 0x20E31400, - 0x20E26000, 0x20E1AC00, 0x20E0F800, - 0x20E04400, 0x20DF9000, 0x20DEDC00, - 0x20DE2800, 0x20DD7400, 0x20DCC000, - 0x20DC0C00, 0x20DB5800, 0x20DAA400, - 0x20D9F000, 0x20D93C00, 0x20D88800, - 0x20D7D400, 0x20D72000, 0x20D66C00, - 0x20D5B800, 0x20D50400, 0x20D45000, - 0x20D39C00, 0x20D2E800, 0x20D23400, - 0x20D18000, 0x20D0CC00, 0x20D01800, - 0x20CF6400, 0x20CEB000, 0x20CDFC00, - 0x20CD4800, 0x20CC9400, 0x20CBE000, - 0x20CB2C00, 0x20CA7800, 0x20C9C400, - 0x20C91000, 0x20C85C00, 0x20C7A800, - 0x20C6F400, 0x20C64000, 0x20C58C00, - 0x20C4D800, 0x20C42400, 0x20C37000, - 0x20C2BC00, 0x20C20800, 0x20C15400, - 0x20C0A000, 0x20BFEC00, 0x20BF3800, - 0x20BE8400, 0x20BDD000, 0x20BD1C00, - 0x20BC6800, 0x20BBB400, 0x20BB0000, - 0x20BA4C00, 0x20B99800, 0x20B8E400, - 0x20B83000, 0x20B77C00, 0x20B6C800, - 0x20B61400, 0x20B56000, 0x20B4AC00, - 0x20B3F800, 0x20B34400, 0x20B29000, - 0x20B1DC00, 0x20B12800, 0x20B07400, - 0x20AFC000, 0x20AF0C00, 0x20AE5800, - 0x20ADA400, 0x20ACF000, 0x20AC3C00, - 0x20AB8800, 0x20AAD400, 0x20AA2000, - 0x20A96C00, 0x20A8B800, 0x20A80400, - 0x20A75000, 0x20A69C00, 0x20A5E800, - 0x20A53400, 0x20A48000, 0x20A3CC00, - 0x20A31800, 0x20A26400, 0x20A1B000, - 0x20A0FC00, 0x20A04800, 0x209F9400, - 0x209EE000, 0x209E2C00, 0x209D7800, - 0x209CC400, 0x209C1000, 0x209B5C00, - 0x209AA800, 0x2099F400, 0x20994000, - 0x20988C00, 0x2097D800, 0x20972400, - 0x20967000, 0x2095BC00, 0x20950800, - 0x20945400, 0x2093A000, 0x2092EC00, - 0x20923800, 0x20918400, 0x2090D000, - 0x20901C00, 0x208F6800, 0x208EB400, - 0x208E0000, 0x208D4C00, 0x208C9800, - 0x208BE400, 0x208B3000, 0x208A7C00, - 0x2089C800, 0x20891400, 0x20886000, - 0x2087AC00, 0x2086F800, 0x20864400, - 0x20859000, 0x2084DC00, 0x20842800, - 0x20837400, 0x2082C000, 0x20820C00, - 0x20815800, 0x2080A400, 0x207FF000, - 0x207F3C00, 0x207E8800, 0x207DD400, - 0x207D2000, 0x207C6C00, 0x207BB800, - 0x207B0400, 0x207A5000, 0x20799C00, - 0x2078E800, 0x20783400, 0x20778000, - 0x2076CC00, 0x20761800, 0x20756400, - 0x2074B000, 0x2073FC00, 0x20734800, - 0x20729400, 0x2071E000, 0x20712C00, - 0x20707800, 0x206FC400, 0x206F1000, - 0x206E5C00, 0x206DA800, 0x206CF400, - 0x206C4000, 0x206B8C00, 0x206AD800, - 0x206A2400, 0x20697000, 0x2068BC00, - 0x20680800, 0x20675400, 0x2066A000, - 0x2065EC00, 0x20653800, 0x20648400, - 0x2063D000, 0x20631C00, 0x20626800, - 0x2061B400, 0x20610000, 0x20604C00, - 0x205F9800, 0x205EE400, 0x205E3000, - 0x205D7C00, 0x205CC800, 0x205C1400, - 0x205B6000, 0x205AAC00, 0x2059F800, - 0x20594400, 0x20589000, 0x2057DC00, - 0x20572800, 0x20567400, 0x2055C000, - 0x20550C00, 0x20545800, 0x2053A400, - 0x2052F000, 0x20523C00, 0x20518800, - 0x2050D400, 0x20502000, 0x204F6C00, - 0x204EB800, 0x204E0400, 0x204D5000, - 0x204C9C00, 0x204BE800, 0x204B3400, - 0x204A8000, 0x2049CC00, 0x20491800, - 0x20486400, 0x2047B000, 0x2046FC00, - 0x20464800, 0x20459400, 0x2044E000, - 0x20442C00, 0x20437800, 0x2042C400, - 0x20421000, 0x20415C00, 0x2040A800, - 0x203FF400, 0x203F4000, 0x203E8C00, - 0x203DD800, 0x203D2400, 0x203C7000, - 0x203BBC00, 0x203B0800, 0x203A5400, - 0x2039A000, 0x2038EC00, 0x20383800, - 0x20378400, 0x2036D000, 0x20361C00, - 0x20356800, 0x2034B400, 0x20340000, - 0x20334C00, 0x20329800, 0x2031E400, - 0x20313000, 0x20307C00, 0x202FC800, - 0x202F1400, 0x202E6000, 0x202DAC00, - 0x202CF800, 0x202C4400, 0x202B9000, - 0x202ADC00, 0x202A2800, 0x20297400, - 0x2028C000, 0x20280C00, 0x20275800, - 0x2026A400, 0x2025F000, 0x20253C00, - 0x20248800, 0x2023D400, 0x20232000, - 0x20226C00, 0x2021B800, 0x20210400, - 0x20205000, 0x201F9C00, 0x201EE800, - 0x201E3400, 0x201D8000, 0x201CCC00, - 0x201C1800, 0x201B6400, 0x201AB000, - 0x2019FC00, 0x20194800, 0x20189400, - 0x2017E000, 0x20172C00, 0x20167800, - 0x2015C400, 0x20151000, 0x20145C00, - 0x2013A800, 0x2012F400, 0x20124000, - 0x20118C00, 0x2010D800, 0x20102400, - 0x200F7000, 0x200EBC00, 0x200E0800, - 0x200D5400, 0x200CA000, 0x200BEC00, - 0x200B3800, 0x200A8400, 0x2009D000, - 0x20091C00, 0x20086800, 0x2007B400, - 0x20070000, 0x20064C00, 0x20059800, - 0x2004E400, 0x20043000, 0x20037C00, - 0x2002C800, 0x20021400, 0x20016000, - 0x2000AC00, 0x1FFFF800, 0x1FFF4400, - 0x1FFE9000, 0x1FFDDC00, 0x1FFD2800, - 0x1FFC7400, 0x1FFBC000, 0x1FFB0C00, - 0x1FFA5800, 0x1FF9A400, 0x1FF8F000, - 0x1FF83C00, 0x1FF78800, 0x1FF6D400, - 0x1FF62000, 0x1FF56C00, 0x1FF4B800, - 0x1FF40400, 0x1FF35000, 0x1FF29C00, - 0x1FF1E800, 0x1FF13400, 0x1FF08000, - 0x1FEFCC00, 0x1FEF1800, 0x1FEE6400, - 0x1FEDB000, 0x1FECFC00, 0x1FEC4800, - 0x1FEB9400, 0x1FEAE000, 0x1FEA2C00, - 0x1FE97800, 0x1FE8C400, 0x1FE81000, - 0x1FE75C00, 0x1FE6A800, 0x1FE5F400, - 0x1FE54000, 0x1FE48C00, 0x1FE3D800, - 0x1FE32400, 0x1FE27000, 0x1FE1BC00, - 0x1FE10800, 0x1FE05400, 0x1FDFA000, - 0x1FDEEC00, 0x1FDE3800, 0x1FDD8400, - 0x1FDCD000, 0x1FDC1C00, 0x1FDB6800, - 0x1FDAB400, 0x1FDA0000, 0x1FD94C00, - 0x1FD89800, 0x1FD7E400, 0x1FD73000, - 0x1FD67C00, 0x1FD5C800, 0x1FD51400, - 0x1FD46000, 0x1FD3AC00, 0x1FD2F800, - 0x1FD24400, 0x1FD19000, 0x1FD0DC00, - 0x1FD02800, 0x1FCF7400, 0x1FCEC000, - 0x1FCE0C00, 0x1FCD5800, 0x1FCCA400, - 0x1FCBF000, 0x1FCB3C00, 0x1FCA8800, - 0x1FC9D400, 0x1FC92000, 0x1FC86C00, - 0x1FC7B800, 0x1FC70400, 0x1FC65000, - 0x1FC59C00, 0x1FC4E800, 0x1FC43400, - 0x1FC38000, 0x1FC2CC00, 0x1FC21800, - 0x1FC16400, 0x1FC0B000, 0x1FBFFC00, - 0x1FBF4800, 0x1FBE9400, 0x1FBDE000, - 0x1FBD2C00, 0x1FBC7800, 0x1FBBC400, - 0x1FBB1000, 0x1FBA5C00, 0x1FB9A800, - 0x1FB8F400, 0x1FB84000, 0x1FB78C00, - 0x1FB6D800, 0x1FB62400, 0x1FB57000, - 0x1FB4BC00, 0x1FB40800, 0x1FB35400, - 0x1FB2A000, 0x1FB1EC00, 0x1FB13800, - 0x1FB08400, 0x1FAFD000, 0x1FAF1C00, - 0x1FAE6800, 0x1FADB400, 0x1FAD0000, - 0x1FAC4C00, 0x1FAB9800, 0x1FAAE400, - 0x1FAA3000, 0x1FA97C00, 0x1FA8C800, - 0x1FA81400, 0x1FA76000, 0x1FA6AC00, - 0x1FA5F800, 0x1FA54400, 0x1FA49000, - 0x1FA3DC00, 0x1FA32800, 0x1FA27400, - 0x1FA1C000, 0x1FA10C00, 0x1FA05800, - 0x1F9FA400, 0x1F9EF000, 0x1F9E3C00, - 0x1F9D8800, 0x1F9CD400, 0x1F9C2000, - 0x1F9B6C00, 0x1F9AB800, 0x1F9A0400, - 0x1F995000, 0x1F989C00, 0x1F97E800, - 0x1F973400, 0x1F968000, 0x1F95CC00, - 0x1F951800, 0x1F946400, 0x1F93B000, - 0x1F92FC00, 0x1F924800, 0x1F919400, - 0x1F90E000, 0x1F902C00, 0x1F8F7800, - 0x1F8EC400, 0x1F8E1000, 0x1F8D5C00, - 0x1F8CA800, 0x1F8BF400, 0x1F8B4000, - 0x1F8A8C00, 0x1F89D800, 0x1F892400, - 0x1F887000, 0x1F87BC00, 0x1F870800, - 0x1F865400, 0x1F85A000, 0x1F84EC00, - 0x1F843800, 0x1F838400, 0x1F82D000, - 0x1F821C00, 0x1F816800, 0x1F80B400, - 0x1F800000, 0x1F7F4C00, 0x1F7E9800, - 0x1F7DE400, 0x1F7D3000, 0x1F7C7C00, - 0x1F7BC800, 0x1F7B1400, 0x1F7A6000, - 0x1F79AC00, 0x1F78F800, 0x1F784400, - 0x1F779000, 0x1F76DC00, 0x1F762800, - 0x1F757400, 0x1F74C000, 0x1F740C00, - 0x1F735800, 0x1F72A400, 0x1F71F000, - 0x1F713C00, 0x1F708800, 0x1F6FD400, - 0x1F6F2000, 0x1F6E6C00, 0x1F6DB800, - 0x1F6D0400, 0x1F6C5000, 0x1F6B9C00, - 0x1F6AE800, 0x1F6A3400, 0x1F698000, - 0x1F68CC00, 0x1F681800, 0x1F676400, - 0x1F66B000, 0x1F65FC00, 0x1F654800, - 0x1F649400, 0x1F63E000, 0x1F632C00, - 0x1F627800, 0x1F61C400, 0x1F611000, - 0x1F605C00, 0x1F5FA800, 0x1F5EF400, - 0x1F5E4000, 0x1F5D8C00, 0x1F5CD800, - 0x1F5C2400, 0x1F5B7000, 0x1F5ABC00, - 0x1F5A0800, 0x1F595400, 0x1F58A000, - 0x1F57EC00, 0x1F573800, 0x1F568400, - 0x1F55D000, 0x1F551C00, 0x1F546800, - 0x1F53B400, 0x1F530000, 0x1F524C00, - 0x1F519800, 0x1F50E400, 0x1F503000, - 0x1F4F7C00, 0x1F4EC800, 0x1F4E1400, - 0x1F4D6000, 0x1F4CAC00, 0x1F4BF800, - 0x1F4B4400, 0x1F4A9000, 0x1F49DC00, - 0x1F492800, 0x1F487400, 0x1F47C000, - 0x1F470C00, 0x1F465800, 0x1F45A400, - 0x1F44F000, 0x1F443C00, 0x1F438800, - 0x1F42D400, 0x1F422000, 0x1F416C00, - 0x1F40B800, 0x1F400400, 0x1F3F5000, - 0x1F3E9C00, 0x1F3DE800, 0x1F3D3400, - 0x1F3C8000, 0x1F3BCC00, 0x1F3B1800, - 0x1F3A6400, 0x1F39B000, 0x1F38FC00, - 0x1F384800, 0x1F379400, 0x1F36E000, - 0x1F362C00, 0x1F357800, 0x1F34C400, - 0x1F341000, 0x1F335C00, 0x1F32A800, - 0x1F31F400, 0x1F314000, 0x1F308C00, - 0x1F2FD800, 0x1F2F2400, 0x1F2E7000, - 0x1F2DBC00, 0x1F2D0800, 0x1F2C5400, - 0x1F2BA000, 0x1F2AEC00, 0x1F2A3800, - 0x1F298400, 0x1F28D000, 0x1F281C00, - 0x1F276800, 0x1F26B400, 0x1F260000, - 0x1F254C00, 0x1F249800, 0x1F23E400, - 0x1F233000, 0x1F227C00, 0x1F21C800, - 0x1F211400, 0x1F206000, 0x1F1FAC00, - 0x1F1EF800, 0x1F1E4400, 0x1F1D9000, - 0x1F1CDC00, 0x1F1C2800, 0x1F1B7400, - 0x1F1AC000, 0x1F1A0C00, 0x1F195800, - 0x1F18A400, 0x1F17F000, 0x1F173C00, - 0x1F168800, 0x1F15D400, 0x1F152000, - 0x1F146C00, 0x1F13B800, 0x1F130400, - 0x1F125000, 0x1F119C00, 0x1F10E800, - 0x1F103400, 0x1F0F8000, 0x1F0ECC00, - 0x1F0E1800, 0x1F0D6400, 0x1F0CB000, - 0x1F0BFC00, 0x1F0B4800, 0x1F0A9400, - 0x1F09E000, 0x1F092C00, 0x1F087800, - 0x1F07C400, 0x1F071000, 0x1F065C00, - 0x1F05A800, 0x1F04F400, 0x1F044000, - 0x1F038C00, 0x1F02D800, 0x1F022400, - 0x1F017000, 0x1F00BC00, 0x1F000800, - 0x1EFF5400, 0x1EFEA000, 0x1EFDEC00, - 0x1EFD3800, 0x1EFC8400, 0x1EFBD000, - 0x1EFB1C00, 0x1EFA6800, 0x1EF9B400, - 0x1EF90000, 0x1EF84C00, 0x1EF79800, - 0x1EF6E400, 0x1EF63000, 0x1EF57C00, - 0x1EF4C800, 0x1EF41400, 0x1EF36000, - 0x1EF2AC00, 0x1EF1F800, 0x1EF14400, - 0x1EF09000, 0x1EEFDC00, 0x1EEF2800, - 0x1EEE7400, 0x1EEDC000, 0x1EED0C00, - 0x1EEC5800, 0x1EEBA400, 0x1EEAF000, - 0x1EEA3C00, 0x1EE98800, 0x1EE8D400, - 0x1EE82000, 0x1EE76C00, 0x1EE6B800, - 0x1EE60400, 0x1EE55000, 0x1EE49C00, - 0x1EE3E800, 0x1EE33400, 0x1EE28000, - 0x1EE1CC00, 0x1EE11800, 0x1EE06400, - 0x1EDFB000, 0x1EDEFC00, 0x1EDE4800, - 0x1EDD9400, 0x1EDCE000, 0x1EDC2C00, - 0x1EDB7800, 0x1EDAC400, 0x1EDA1000, - 0x1ED95C00, 0x1ED8A800, 0x1ED7F400, - 0x1ED74000, 0x1ED68C00, 0x1ED5D800, - 0x1ED52400, 0x1ED47000, 0x1ED3BC00, - 0x1ED30800, 0x1ED25400, 0x1ED1A000, - 0x1ED0EC00, 0x1ED03800, 0x1ECF8400, - 0x1ECED000, 0x1ECE1C00, 0x1ECD6800, - 0x1ECCB400, 0x1ECC0000, 0x1ECB4C00, - 0x1ECA9800, 0x1EC9E400, 0x1EC93000, - 0x1EC87C00, 0x1EC7C800, 0x1EC71400, - 0x1EC66000, 0x1EC5AC00, 0x1EC4F800, - 0x1EC44400, 0x1EC39000, 0x1EC2DC00, - 0x1EC22800, 0x1EC17400, 0x1EC0C000, - 0x1EC00C00, 0x1EBF5800, 0x1EBEA400, - 0x1EBDF000, 0x1EBD3C00, 0x1EBC8800, - 0x1EBBD400, 0x1EBB2000, 0x1EBA6C00, - 0x1EB9B800, 0x1EB90400, 0x1EB85000, - 0x1EB79C00, 0x1EB6E800, 0x1EB63400, - 0x1EB58000, 0x1EB4CC00, 0x1EB41800, - 0x1EB36400, 0x1EB2B000, 0x1EB1FC00, - 0x1EB14800, 0x1EB09400, 0x1EAFE000, - 0x1EAF2C00, 0x1EAE7800, 0x1EADC400, - 0x1EAD1000, 0x1EAC5C00, 0x1EABA800, - 0x1EAAF400, 0x1EAA4000, 0x1EA98C00, - 0x1EA8D800, 0x1EA82400, 0x1EA77000, - 0x1EA6BC00, 0x1EA60800, 0x1EA55400, - 0x1EA4A000, 0x1EA3EC00, 0x1EA33800, - 0x1EA28400, 0x1EA1D000, 0x1EA11C00, - 0x1EA06800, 0x1E9FB400, 0x1E9F0000, - 0x1E9E4C00, 0x1E9D9800, 0x1E9CE400, - 0x1E9C3000, 0x1E9B7C00, 0x1E9AC800, - 0x1E9A1400, 0x1E996000, 0x1E98AC00, - 0x1E97F800, 0x1E974400, 0x1E969000, - 0x1E95DC00, 0x1E952800, 0x1E947400, - 0x1E93C000, 0x1E930C00, 0x1E925800, - 0x1E91A400, 0x1E90F000, 0x1E903C00, - 0x1E8F8800, 0x1E8ED400, 0x1E8E2000, - 0x1E8D6C00, 0x1E8CB800, 0x1E8C0400, - 0x1E8B5000, 0x1E8A9C00, 0x1E89E800, - 0x1E893400, 0x1E888000, 0x1E87CC00, - 0x1E871800, 0x1E866400, 0x1E85B000, - 0x1E84FC00, 0x1E844800, 0x1E839400, - 0x1E82E000, 0x1E822C00, 0x1E817800, - 0x1E80C400, 0x1E801000, 0x1E7F5C00, - 0x1E7EA800, 0x1E7DF400, 0x1E7D4000, - 0x1E7C8C00, 0x1E7BD800, 0x1E7B2400, - 0x1E7A7000, 0x1E79BC00, 0x1E790800, - 0x1E785400, 0x1E77A000, 0x1E76EC00, - 0x1E763800, 0x1E758400, 0x1E74D000, - 0x1E741C00, 0x1E736800, 0x1E72B400, - 0x1E720000, 0x1E714C00, 0x1E709800, - 0x1E6FE400, 0x1E6F3000, 0x1E6E7C00, - 0x1E6DC800, 0x1E6D1400, 0x1E6C6000, - 0x1E6BAC00, 0x1E6AF800, 0x1E6A4400, - 0x1E699000, 0x1E68DC00, 0x1E682800, - 0x1E677400, 0x1E66C000, 0x1E660C00, - 0x1E655800, 0x1E64A400, 0x1E63F000, - 0x1E633C00, 0x1E628800, 0x1E61D400, - 0x1E612000, 0x1E606C00, 0x1E5FB800, - 0x1E5F0400, 0x1E5E5000, 0x1E5D9C00, - 0x1E5CE800, 0x1E5C3400, 0x1E5B8000, - 0x1E5ACC00, 0x1E5A1800, 0x1E596400, - 0x1E58B000, 0x1E57FC00, 0x1E574800, - 0x1E569400, 0x1E55E000, 0x1E552C00, - 0x1E547800, 0x1E53C400, 0x1E531000, - 0x1E525C00, 0x1E51A800, 0x1E50F400, - 0x1E504000, 0x1E4F8C00, 0x1E4ED800, - 0x1E4E2400, 0x1E4D7000, 0x1E4CBC00, - 0x1E4C0800, 0x1E4B5400, 0x1E4AA000, - 0x1E49EC00, 0x1E493800, 0x1E488400, - 0x1E47D000, 0x1E471C00, 0x1E466800, - 0x1E45B400, 0x1E450000, 0x1E444C00, - 0x1E439800, 0x1E42E400, 0x1E423000, - 0x1E417C00, 0x1E40C800, 0x1E401400, - 0x1E3F6000, 0x1E3EAC00, 0x1E3DF800, - 0x1E3D4400, 0x1E3C9000, 0x1E3BDC00, - 0x1E3B2800, 0x1E3A7400, 0x1E39C000, - 0x1E390C00, 0x1E385800, 0x1E37A400, - 0x1E36F000, 0x1E363C00, 0x1E358800, - 0x1E34D400, 0x1E342000, 0x1E336C00, - 0x1E32B800, 0x1E320400, 0x1E315000, - 0x1E309C00, 0x1E2FE800, 0x1E2F3400, - 0x1E2E8000, 0x1E2DCC00, 0x1E2D1800, - 0x1E2C6400, 0x1E2BB000, 0x1E2AFC00, - 0x1E2A4800, 0x1E299400, 0x1E28E000, - 0x1E282C00, 0x1E277800, 0x1E26C400, - 0x1E261000, 0x1E255C00, 0x1E24A800, - 0x1E23F400, 0x1E234000, 0x1E228C00, - 0x1E21D800, 0x1E212400, 0x1E207000, - 0x1E1FBC00, 0x1E1F0800, 0x1E1E5400, - 0x1E1DA000, 0x1E1CEC00, 0x1E1C3800, - 0x1E1B8400, 0x1E1AD000, 0x1E1A1C00, - 0x1E196800, 0x1E18B400, 0x1E180000, - 0x1E174C00, 0x1E169800, 0x1E15E400, - 0x1E153000, 0x1E147C00, 0x1E13C800, - 0x1E131400, 0x1E126000, 0x1E11AC00, - 0x1E10F800, 0x1E104400, 0x1E0F9000, - 0x1E0EDC00, 0x1E0E2800, 0x1E0D7400, - 0x1E0CC000, 0x1E0C0C00, 0x1E0B5800, - 0x1E0AA400, 0x1E09F000, 0x1E093C00, - 0x1E088800, 0x1E07D400, 0x1E072000, - 0x1E066C00, 0x1E05B800, 0x1E050400, - 0x1E045000, 0x1E039C00, 0x1E02E800, - 0x1E023400, 0x1E018000, 0x1E00CC00, - 0x1E001800, 0x1DFF6400, 0x1DFEB000, - 0x1DFDFC00, 0x1DFD4800, 0x1DFC9400, - 0x1DFBE000, 0x1DFB2C00, 0x1DFA7800, - 0x1DF9C400, 0x1DF91000, 0x1DF85C00, - 0x1DF7A800, 0x1DF6F400, 0x1DF64000, - 0x1DF58C00, 0x1DF4D800, 0x1DF42400, - 0x1DF37000, 0x1DF2BC00, 0x1DF20800, - 0x1DF15400, 0x1DF0A000, 0x1DEFEC00, - 0x1DEF3800, 0x1DEE8400, 0x1DEDD000, - 0x1DED1C00, 0x1DEC6800, 0x1DEBB400, - 0x1DEB0000, 0x1DEA4C00, 0x1DE99800, - 0x1DE8E400, 0x1DE83000, 0x1DE77C00, - 0x1DE6C800, 0x1DE61400, 0x1DE56000, - 0x1DE4AC00, 0x1DE3F800, 0x1DE34400, - 0x1DE29000, 0x1DE1DC00, 0x1DE12800, - 0x1DE07400, 0x1DDFC000, 0x1DDF0C00, - 0x1DDE5800, 0x1DDDA400, 0x1DDCF000, - 0x1DDC3C00, 0x1DDB8800, 0x1DDAD400, - 0x1DDA2000, 0x1DD96C00, 0x1DD8B800, - 0x1DD80400, 0x1DD75000, 0x1DD69C00, - 0x1DD5E800, 0x1DD53400, 0x1DD48000, - 0x1DD3CC00, 0x1DD31800, 0x1DD26400, - 0x1DD1B000, 0x1DD0FC00, 0x1DD04800, - 0x1DCF9400, 0x1DCEE000, 0x1DCE2C00, - 0x1DCD7800, 0x1DCCC400, 0x1DCC1000, - 0x1DCB5C00, 0x1DCAA800, 0x1DC9F400, - 0x1DC94000, 0x1DC88C00, 0x1DC7D800, - 0x1DC72400, 0x1DC67000, 0x1DC5BC00, - 0x1DC50800, 0x1DC45400, 0x1DC3A000, - 0x1DC2EC00, 0x1DC23800, 0x1DC18400, - 0x1DC0D000, 0x1DC01C00, 0x1DBF6800, - 0x1DBEB400, 0x1DBE0000, 0x1DBD4C00, - 0x1DBC9800, 0x1DBBE400, 0x1DBB3000, - 0x1DBA7C00, 0x1DB9C800, 0x1DB91400, - 0x1DB86000, 0x1DB7AC00, 0x1DB6F800, - 0x1DB64400, 0x1DB59000, 0x1DB4DC00, - 0x1DB42800, 0x1DB37400, 0x1DB2C000, - 0x1DB20C00, 0x1DB15800, 0x1DB0A400, - 0x1DAFF000, 0x1DAF3C00, 0x1DAE8800, - 0x1DADD400, 0x1DAD2000, 0x1DAC6C00, - 0x1DABB800, 0x1DAB0400, 0x1DAA5000, - 0x1DA99C00, 0x1DA8E800, 0x1DA83400, - 0x1DA78000, 0x1DA6CC00, 0x1DA61800, - 0x1DA56400, 0x1DA4B000, 0x1DA3FC00, - 0x1DA34800, 0x1DA29400, 0x1DA1E000, - 0x1DA12C00, 0x1DA07800, 0x1D9FC400, - 0x1D9F1000, 0x1D9E5C00, 0x1D9DA800, - 0x1D9CF400, 0x1D9C4000, 0x1D9B8C00, - 0x1D9AD800, 0x1D9A2400, 0x1D997000, - 0x1D98BC00, 0x1D980800, 0x1D975400, - 0x1D96A000, 0x1D95EC00, 0x1D953800, - 0x1D948400, 0x1D93D000, 0x1D931C00, - 0x1D926800, 0x1D91B400, 0x1D910000, - 0x1D904C00, 0x1D8F9800, 0x1D8EE400, - 0x1D8E3000, 0x1D8D7C00, 0x1D8CC800, - 0x1D8C1400, 0x1D8B6000, 0x1D8AAC00, - 0x1D89F800, 0x1D894400, 0x1D889000, - 0x1D87DC00, 0x1D872800, 0x1D867400, - 0x1D85C000, 0x1D850C00, 0x1D845800, - 0x1D83A400, 0x1D82F000, 0x1D823C00, - 0x1D818800, 0x1D80D400, 0x1D802000, - 0x1D7F6C00, 0x1D7EB800, 0x1D7E0400, - 0x1D7D5000, 0x1D7C9C00, 0x1D7BE800, - 0x1D7B3400, 0x1D7A8000, 0x1D79CC00, - 0x1D791800, 0x1D786400, 0x1D77B000, - 0x1D76FC00, 0x1D764800, 0x1D759400, - 0x1D74E000, 0x1D742C00, 0x1D737800, - 0x1D72C400, 0x1D721000, 0x1D715C00, - 0x1D70A800, 0x1D6FF400, 0x1D6F4000, - 0x1D6E8C00, 0x1D6DD800, 0x1D6D2400, - 0x1D6C7000, 0x1D6BBC00, 0x1D6B0800, - 0x1D6A5400, 0x1D69A000, 0x1D68EC00, - 0x1D683800, 0x1D678400, 0x1D66D000, - 0x1D661C00, 0x1D656800, 0x1D64B400, - 0x1D640000, 0x1D634C00, 0x1D629800, - 0x1D61E400, 0x1D613000, 0x1D607C00, - 0x1D5FC800, 0x1D5F1400, 0x1D5E6000, - 0x1D5DAC00, 0x1D5CF800, 0x1D5C4400, - 0x1D5B9000, 0x1D5ADC00, 0x1D5A2800, - 0x1D597400, 0x1D58C000, 0x1D580C00, - 0x1D575800, 0x1D56A400, 0x1D55F000, - 0x1D553C00, 0x1D548800, 0x1D53D400, - 0x1D532000, 0x1D526C00, 0x1D51B800, - 0x1D510400, 0x1D505000, 0x1D4F9C00, - 0x1D4EE800, 0x1D4E3400, 0x1D4D8000, - 0x1D4CCC00, 0x1D4C1800, 0x1D4B6400, - 0x1D4AB000, 0x1D49FC00, 0x1D494800, - 0x1D489400, 0x1D47E000, 0x1D472C00, - 0x1D467800, 0x1D45C400, 0x1D451000, - 0x1D445C00, 0x1D43A800, 0x1D42F400, - 0x1D424000, 0x1D418C00, 0x1D40D800, - 0x1D402400, 0x1D3F7000, 0x1D3EBC00, - 0x1D3E0800, 0x1D3D5400, 0x1D3CA000, - 0x1D3BEC00, 0x1D3B3800, 0x1D3A8400, - 0x1D39D000, 0x1D391C00, 0x1D386800, - 0x1D37B400, 0x1D370000, 0x1D364C00, - 0x1D359800, 0x1D34E400, 0x1D343000, - 0x1D337C00, 0x1D32C800, 0x1D321400, - 0x1D316000, 0x1D30AC00, 0x1D2FF800, - 0x1D2F4400, 0x1D2E9000, 0x1D2DDC00, - 0x1D2D2800, 0x1D2C7400, 0x1D2BC000, - 0x1D2B0C00, 0x1D2A5800, 0x1D29A400, - 0x1D28F000, 0x1D283C00, 0x1D278800, - 0x1D26D400, 0x1D262000, 0x1D256C00, - 0x1D24B800, 0x1D240400, 0x1D235000, - 0x1D229C00, 0x1D21E800, 0x1D213400, - 0x1D208000, 0x1D1FCC00, 0x1D1F1800, - 0x1D1E6400, 0x1D1DB000, 0x1D1CFC00, - 0x1D1C4800, 0x1D1B9400, 0x1D1AE000, - 0x1D1A2C00, 0x1D197800, 0x1D18C400, - 0x1D181000, 0x1D175C00, 0x1D16A800, - 0x1D15F400, 0x1D154000, 0x1D148C00, - 0x1D13D800, 0x1D132400, 0x1D127000, - 0x1D11BC00, 0x1D110800, 0x1D105400, - 0x1D0FA000, 0x1D0EEC00, 0x1D0E3800, - 0x1D0D8400, 0x1D0CD000, 0x1D0C1C00, - 0x1D0B6800, 0x1D0AB400, 0x1D0A0000, - 0x1D094C00, 0x1D089800, 0x1D07E400, - 0x1D073000, 0x1D067C00, 0x1D05C800, - 0x1D051400, 0x1D046000, 0x1D03AC00, - 0x1D02F800, 0x1D024400, 0x1D019000, - 0x1D00DC00, 0x1D002800, 0x1CFF7400, - 0x1CFEC000, 0x1CFE0C00, 0x1CFD5800, - 0x1CFCA400, 0x1CFBF000, 0x1CFB3C00, - 0x1CFA8800, 0x1CF9D400, 0x1CF92000, - 0x1CF86C00, 0x1CF7B800, 0x1CF70400, - 0x1CF65000, 0x1CF59C00, 0x1CF4E800, - 0x1CF43400, 0x1CF38000, 0x1CF2CC00, - 0x1CF21800, 0x1CF16400, 0x1CF0B000, - 0x1CEFFC00, 0x1CEF4800, 0x1CEE9400, - 0x1CEDE000, 0x1CED2C00, 0x1CEC7800, - 0x1CEBC400, 0x1CEB1000, 0x1CEA5C00, - 0x1CE9A800, 0x1CE8F400, 0x1CE84000, - 0x1CE78C00, 0x1CE6D800, 0x1CE62400, - 0x1CE57000, 0x1CE4BC00, 0x1CE40800, - 0x1CE35400, 0x1CE2A000, 0x1CE1EC00, - 0x1CE13800, 0x1CE08400, 0x1CDFD000, - 0x1CDF1C00, 0x1CDE6800, 0x1CDDB400, - 0x1CDD0000, 0x1CDC4C00, 0x1CDB9800, - 0x1CDAE400, 0x1CDA3000, 0x1CD97C00, - 0x1CD8C800, 0x1CD81400, 0x1CD76000, - 0x1CD6AC00, 0x1CD5F800, 0x1CD54400, - 0x1CD49000, 0x1CD3DC00, 0x1CD32800, - 0x1CD27400, 0x1CD1C000, 0x1CD10C00, - 0x1CD05800, 0x1CCFA400, 0x1CCEF000, - 0x1CCE3C00, 0x1CCD8800, 0x1CCCD400, - 0x1CCC2000, 0x1CCB6C00, 0x1CCAB800, - 0x1CCA0400, 0x1CC95000, 0x1CC89C00, - 0x1CC7E800, 0x1CC73400, 0x1CC68000, - 0x1CC5CC00, 0x1CC51800, 0x1CC46400, - 0x1CC3B000, 0x1CC2FC00, 0x1CC24800, - 0x1CC19400, 0x1CC0E000, 0x1CC02C00, - 0x1CBF7800, 0x1CBEC400, 0x1CBE1000, - 0x1CBD5C00, 0x1CBCA800, 0x1CBBF400, - 0x1CBB4000, 0x1CBA8C00, 0x1CB9D800, - 0x1CB92400, 0x1CB87000, 0x1CB7BC00, - 0x1CB70800, 0x1CB65400, 0x1CB5A000, - 0x1CB4EC00, 0x1CB43800, 0x1CB38400, - 0x1CB2D000, 0x1CB21C00, 0x1CB16800, - 0x1CB0B400, 0x1CB00000, 0x1CAF4C00, - 0x1CAE9800, 0x1CADE400, 0x1CAD3000, - 0x1CAC7C00, 0x1CABC800, 0x1CAB1400, - 0x1CAA6000, 0x1CA9AC00, 0x1CA8F800, - 0x1CA84400, 0x1CA79000, 0x1CA6DC00, - 0x1CA62800, 0x1CA57400, 0x1CA4C000, - 0x1CA40C00, 0x1CA35800, 0x1CA2A400, - 0x1CA1F000, 0x1CA13C00, 0x1CA08800, - 0x1C9FD400, 0x1C9F2000, 0x1C9E6C00, - 0x1C9DB800, 0x1C9D0400, 0x1C9C5000, - 0x1C9B9C00, 0x1C9AE800, 0x1C9A3400, - 0x1C998000, 0x1C98CC00, 0x1C981800, - 0x1C976400, 0x1C96B000, 0x1C95FC00, - 0x1C954800, 0x1C949400, 0x1C93E000, - 0x1C932C00, 0x1C927800, 0x1C91C400, - 0x1C911000, 0x1C905C00, 0x1C8FA800, - 0x1C8EF400, 0x1C8E4000, 0x1C8D8C00, - 0x1C8CD800, 0x1C8C2400, 0x1C8B7000, - 0x1C8ABC00, 0x1C8A0800, 0x1C895400, - 0x1C88A000, 0x1C87EC00, 0x1C873800, - 0x1C868400, 0x1C85D000, 0x1C851C00, - 0x1C846800, 0x1C83B400, 0x1C830000, - 0x1C824C00, 0x1C819800, 0x1C80E400, - 0x1C803000, 0x1C7F7C00, 0x1C7EC800, - 0x1C7E1400, 0x1C7D6000, 0x1C7CAC00, - 0x1C7BF800, 0x1C7B4400, 0x1C7A9000, - 0x1C79DC00, 0x1C792800, 0x1C787400, - 0x1C77C000, 0x1C770C00, 0x1C765800, - 0x1C75A400, 0x1C74F000, 0x1C743C00, - 0x1C738800, 0x1C72D400, 0x1C722000, - 0x1C716C00, 0x1C70B800, 0x1C700400, - 0x1C6F5000, 0x1C6E9C00, 0x1C6DE800, - 0x1C6D3400, 0x1C6C8000, 0x1C6BCC00, - 0x1C6B1800, 0x1C6A6400, 0x1C69B000, - 0x1C68FC00, 0x1C684800, 0x1C679400, - 0x1C66E000, 0x1C662C00, 0x1C657800, - 0x1C64C400, 0x1C641000, 0x1C635C00, - 0x1C62A800, 0x1C61F400, 0x1C614000, - 0x1C608C00, 0x1C5FD800, 0x1C5F2400, - 0x1C5E7000, 0x1C5DBC00, 0x1C5D0800, - 0x1C5C5400, 0x1C5BA000, 0x1C5AEC00, - 0x1C5A3800, 0x1C598400, 0x1C58D000, - 0x1C581C00, 0x1C576800, 0x1C56B400, - 0x1C560000, 0x1C554C00, 0x1C549800, - 0x1C53E400, 0x1C533000, 0x1C527C00, - 0x1C51C800, 0x1C511400, 0x1C506000, - 0x1C4FAC00, 0x1C4EF800, 0x1C4E4400, - 0x1C4D9000, 0x1C4CDC00, 0x1C4C2800, - 0x1C4B7400, 0x1C4AC000, 0x1C4A0C00, - 0x1C495800, 0x1C48A400, 0x1C47F000, - 0x1C473C00, 0x1C468800, 0x1C45D400, - 0x1C452000, 0x1C446C00, 0x1C43B800, - 0x1C430400, 0x1C425000, 0x1C419C00, - 0x1C40E800, 0x1C403400, 0x1C3F8000, - 0x1C3ECC00, 0x1C3E1800, 0x1C3D6400, - 0x1C3CB000, 0x1C3BFC00, 0x1C3B4800, - 0x1C3A9400, 0x1C39E000, 0x1C392C00, - 0x1C387800, 0x1C37C400, 0x1C371000, - 0x1C365C00, 0x1C35A800, 0x1C34F400, - 0x1C344000, 0x1C338C00, 0x1C32D800, - 0x1C322400, 0x1C317000, 0x1C30BC00, - 0x1C300800, 0x1C2F5400, 0x1C2EA000, - 0x1C2DEC00, 0x1C2D3800, 0x1C2C8400, - 0x1C2BD000, 0x1C2B1C00, 0x1C2A6800, - 0x1C29B400, 0x1C290000, 0x1C284C00, - 0x1C279800, 0x1C26E400, 0x1C263000, - 0x1C257C00, 0x1C24C800, 0x1C241400, - 0x1C236000, 0x1C22AC00, 0x1C21F800, - 0x1C214400, 0x1C209000, 0x1C1FDC00, - 0x1C1F2800, 0x1C1E7400, 0x1C1DC000, - 0x1C1D0C00, 0x1C1C5800, 0x1C1BA400, - 0x1C1AF000, 0x1C1A3C00, 0x1C198800, - 0x1C18D400, 0x1C182000, 0x1C176C00, - 0x1C16B800, 0x1C160400, 0x1C155000, - 0x1C149C00, 0x1C13E800, 0x1C133400, - 0x1C128000, 0x1C11CC00, 0x1C111800, - 0x1C106400, 0x1C0FB000, 0x1C0EFC00, - 0x1C0E4800, 0x1C0D9400, 0x1C0CE000, - 0x1C0C2C00, 0x1C0B7800, 0x1C0AC400, - 0x1C0A1000, 0x1C095C00, 0x1C08A800, - 0x1C07F400, 0x1C074000, 0x1C068C00, - 0x1C05D800, 0x1C052400, 0x1C047000, - 0x1C03BC00, 0x1C030800, 0x1C025400, - 0x1C01A000, 0x1C00EC00, 0x1C003800, - 0x1BFF8400, 0x1BFED000, 0x1BFE1C00, - 0x1BFD6800, 0x1BFCB400, 0x1BFC0000, - 0x1BFB5600, 0x1BFAAC00, 0x1BFA0200, - 0x1BF95800, 0x1BF8AE00, 0x1BF80400, - 0x1BF75A00, 0x1BF6B000, 0x1BF60600, - 0x1BF55C00, 0x1BF4B200, 0x1BF40800, - 0x1BF35E00, 0x1BF2B400, 0x1BF20A00, - 0x1BF16000, 0x1BF0B600, 0x1BF00C00, - 0x1BEF6200, 0x1BEEB800, 0x1BEE0E00, - 0x1BED6400, 0x1BECBA00, 0x1BEC1000, - 0x1BEB6600, 0x1BEABC00, 0x1BEA1200, - 0x1BE96800, 0x1BE8BE00, 0x1BE81400, - 0x1BE76A00, 0x1BE6C000, 0x1BE61600, - 0x1BE56C00, 0x1BE4C200, 0x1BE41800, - 0x1BE36E00, 0x1BE2C400, 0x1BE21A00, - 0x1BE17000, 0x1BE0C600, 0x1BE01C00, - 0x1BDF7200, 0x1BDEC800, 0x1BDE1E00, - 0x1BDD7400, 0x1BDCCA00, 0x1BDC2000, - 0x1BDB7600, 0x1BDACC00, 0x1BDA2200, - 0x1BD97800, 0x1BD8CE00, 0x1BD82400, - 0x1BD77A00, 0x1BD6D000, 0x1BD62600, - 0x1BD57C00, 0x1BD4D200, 0x1BD42800, - 0x1BD37E00, 0x1BD2D400, 0x1BD22A00, - 0x1BD18000, 0x1BD0D600, 0x1BD02C00, - 0x1BCF8200, 0x1BCED800, 0x1BCE2E00, - 0x1BCD8400, 0x1BCCDA00, 0x1BCC3000, - 0x1BCB8600, 0x1BCADC00, 0x1BCA3200, - 0x1BC98800, 0x1BC8DE00, 0x1BC83400, - 0x1BC78A00, 0x1BC6E000, 0x1BC63600, - 0x1BC58C00, 0x1BC4E200, 0x1BC43800, - 0x1BC38E00, 0x1BC2E400, 0x1BC23A00, - 0x1BC19000, 0x1BC0E600, 0x1BC03C00, - 0x1BBF9200, 0x1BBEE800, 0x1BBE3E00, - 0x1BBD9400, 0x1BBCEA00, 0x1BBC4000, - 0x1BBB9600, 0x1BBAEC00, 0x1BBA4200, - 0x1BB99800, 0x1BB8EE00, 0x1BB84400, - 0x1BB79A00, 0x1BB6F000, 0x1BB64600, - 0x1BB59C00, 0x1BB4F200, 0x1BB44800, - 0x1BB39E00, 0x1BB2F400, 0x1BB24A00, - 0x1BB1A000, 0x1BB0F600, 0x1BB04C00, - 0x1BAFA200, 0x1BAEF800, 0x1BAE4E00, - 0x1BADA400, 0x1BACFA00, 0x1BAC5000, - 0x1BABA600, 0x1BAAFC00, 0x1BAA5200, - 0x1BA9A800, 0x1BA8FE00, 0x1BA85400, - 0x1BA7AA00, 0x1BA70000, 0x1BA65600, - 0x1BA5AC00, 0x1BA50200, 0x1BA45800, - 0x1BA3AE00, 0x1BA30400, 0x1BA25A00, - 0x1BA1B000, 0x1BA10600, 0x1BA05C00, - 0x1B9FB200, 0x1B9F0800, 0x1B9E5E00, - 0x1B9DB400, 0x1B9D0A00, 0x1B9C6000, - 0x1B9BB600, 0x1B9B0C00, 0x1B9A6200, - 0x1B99B800, 0x1B990E00, 0x1B986400, - 0x1B97BA00, 0x1B971000, 0x1B966600, - 0x1B95BC00, 0x1B951200, 0x1B946800, - 0x1B93BE00, 0x1B931400, 0x1B926A00, - 0x1B91C000, 0x1B911600, 0x1B906C00, - 0x1B8FC200, 0x1B8F1800, 0x1B8E6E00, - 0x1B8DC400, 0x1B8D1A00, 0x1B8C7000, - 0x1B8BC600, 0x1B8B1C00, 0x1B8A7200, - 0x1B89C800, 0x1B891E00, 0x1B887400, - 0x1B87CA00, 0x1B872000, 0x1B867600, - 0x1B85CC00, 0x1B852200, 0x1B847800, - 0x1B83CE00, 0x1B832400, 0x1B827A00, - 0x1B81D000, 0x1B812600, 0x1B807C00, - 0x1B7FD200, 0x1B7F2800, 0x1B7E7E00, - 0x1B7DD400, 0x1B7D2A00, 0x1B7C8000, - 0x1B7BD600, 0x1B7B2C00, 0x1B7A8200, - 0x1B79D800, 0x1B792E00, 0x1B788400, - 0x1B77DA00, 0x1B773000, 0x1B768600, - 0x1B75DC00, 0x1B753200, 0x1B748800, - 0x1B73DE00, 0x1B733400, 0x1B728A00, - 0x1B71E000, 0x1B713600, 0x1B708C00, - 0x1B6FE200, 0x1B6F3800, 0x1B6E8E00, - 0x1B6DE400, 0x1B6D3A00, 0x1B6C9000, - 0x1B6BE600, 0x1B6B3C00, 0x1B6A9200, - 0x1B69E800, 0x1B693E00, 0x1B689400, - 0x1B67EA00, 0x1B674000, 0x1B669600, - 0x1B65EC00, 0x1B654200, 0x1B649800, - 0x1B63EE00, 0x1B634400, 0x1B629A00, - 0x1B61F000, 0x1B614600, 0x1B609C00, - 0x1B5FF200, 0x1B5F4800, 0x1B5E9E00, - 0x1B5DF400, 0x1B5D4A00, 0x1B5CA000, - 0x1B5BF600, 0x1B5B4C00, 0x1B5AA200, - 0x1B59F800, 0x1B594E00, 0x1B58A400, - 0x1B57FA00, 0x1B575000, 0x1B56A600, - 0x1B55FC00, 0x1B555200, 0x1B54A800, - 0x1B53FE00, 0x1B535400, 0x1B52AA00, - 0x1B520000, 0x1B515600, 0x1B50AC00, - 0x1B500200, 0x1B4F5800, 0x1B4EAE00, - 0x1B4E0400, 0x1B4D5A00, 0x1B4CB000, - 0x1B4C0600, 0x1B4B5C00, 0x1B4AB200, - 0x1B4A0800, 0x1B495E00, 0x1B48B400, - 0x1B480A00, 0x1B476000, 0x1B46B600, - 0x1B460C00, 0x1B456200, 0x1B44B800, - 0x1B440E00, 0x1B436400, 0x1B42BA00, - 0x1B421000, 0x1B416600, 0x1B40BC00, - 0x1B401200, 0x1B3F6800, 0x1B3EBE00, - 0x1B3E1400, 0x1B3D6A00, 0x1B3CC000, - 0x1B3C1600, 0x1B3B6C00, 0x1B3AC200, - 0x1B3A1800, 0x1B396E00, 0x1B38C400, - 0x1B381A00, 0x1B377000, 0x1B36C600, - 0x1B361C00, 0x1B357200, 0x1B34C800, - 0x1B341E00, 0x1B337400, 0x1B32CA00, - 0x1B322000, 0x1B317600, 0x1B30CC00, - 0x1B302200, 0x1B2F7800, 0x1B2ECE00, - 0x1B2E2400, 0x1B2D7A00, 0x1B2CD000, - 0x1B2C2600, 0x1B2B7C00, 0x1B2AD200, - 0x1B2A2800, 0x1B297E00, 0x1B28D400, - 0x1B282A00, 0x1B278000, 0x1B26D600, - 0x1B262C00, 0x1B258200, 0x1B24D800, - 0x1B242E00, 0x1B238400, 0x1B22DA00, - 0x1B223000, 0x1B218600, 0x1B20DC00, - 0x1B203200, 0x1B1F8800, 0x1B1EDE00, - 0x1B1E3400, 0x1B1D8A00, 0x1B1CE000, - 0x1B1C3600, 0x1B1B8C00, 0x1B1AE200, - 0x1B1A3800, 0x1B198E00, 0x1B18E400, - 0x1B183A00, 0x1B179000, 0x1B16E600, - 0x1B163C00, 0x1B159200, 0x1B14E800, - 0x1B143E00, 0x1B139400, 0x1B12EA00, - 0x1B124000, 0x1B119600, 0x1B10EC00, - 0x1B104200, 0x1B0F9800, 0x1B0EEE00, - 0x1B0E4400, 0x1B0D9A00, 0x1B0CF000, - 0x1B0C4600, 0x1B0B9C00, 0x1B0AF200, - 0x1B0A4800, 0x1B099E00, 0x1B08F400, - 0x1B084A00, 0x1B07A000, 0x1B06F600, - 0x1B064C00, 0x1B05A200, 0x1B04F800, - 0x1B044E00, 0x1B03A400, 0x1B02FA00, - 0x1B025000, 0x1B01A600, 0x1B00FC00, - 0x1B005200, 0x1AFFA800, 0x1AFEFE00, - 0x1AFE5400, 0x1AFDAA00, 0x1AFD0000, - 0x1AFC5600, 0x1AFBAC00, 0x1AFB0200, - 0x1AFA5800, 0x1AF9AE00, 0x1AF90400, - 0x1AF85A00, 0x1AF7B000, 0x1AF70600, - 0x1AF65C00, 0x1AF5B200, 0x1AF50800, - 0x1AF45E00, 0x1AF3B400, 0x1AF30A00, - 0x1AF26000, 0x1AF1B600, 0x1AF10C00, - 0x1AF06200, 0x1AEFB800, 0x1AEF0E00, - 0x1AEE6400, 0x1AEDBA00, 0x1AED1000, - 0x1AEC6600, 0x1AEBBC00, 0x1AEB1200, - 0x1AEA6800, 0x1AE9BE00, 0x1AE91400, - 0x1AE86A00, 0x1AE7C000, 0x1AE71600, - 0x1AE66C00, 0x1AE5C200, 0x1AE51800, - 0x1AE46E00, 0x1AE3C400, 0x1AE31A00, - 0x1AE27000, 0x1AE1C600, 0x1AE11C00, - 0x1AE07200, 0x1ADFC800, 0x1ADF1E00, - 0x1ADE7400, 0x1ADDCA00, 0x1ADD2000, - 0x1ADC7600, 0x1ADBCC00, 0x1ADB2200, - 0x1ADA7800, 0x1AD9CE00, 0x1AD92400, - 0x1AD87A00, 0x1AD7D000, 0x1AD72600, - 0x1AD67C00, 0x1AD5D200, 0x1AD52800, - 0x1AD47E00, 0x1AD3D400, 0x1AD32A00, - 0x1AD28000, 0x1AD1D600, 0x1AD12C00, - 0x1AD08200, 0x1ACFD800, 0x1ACF2E00, - 0x1ACE8400, 0x1ACDDA00, 0x1ACD3000, - 0x1ACC8600, 0x1ACBDC00, 0x1ACB3200, - 0x1ACA8800, 0x1AC9DE00, 0x1AC93400, - 0x1AC88A00, 0x1AC7E000, 0x1AC73600, - 0x1AC68C00, 0x1AC5E200, 0x1AC53800, - 0x1AC48E00, 0x1AC3E400, 0x1AC33A00, - 0x1AC29000, 0x1AC1E600, 0x1AC13C00, - 0x1AC09200, 0x1ABFE800, 0x1ABF3E00, - 0x1ABE9400, 0x1ABDEA00, 0x1ABD4000, - 0x1ABC9600, 0x1ABBEC00, 0x1ABB4200, - 0x1ABA9800, 0x1AB9EE00, 0x1AB94400, - 0x1AB89A00, 0x1AB7F000, 0x1AB74600, - 0x1AB69C00, 0x1AB5F200, 0x1AB54800, - 0x1AB49E00, 0x1AB3F400, 0x1AB34A00, - 0x1AB2A000, 0x1AB1F600, 0x1AB14C00, - 0x1AB0A200, 0x1AAFF800, 0x1AAF4E00, - 0x1AAEA400, 0x1AADFA00, 0x1AAD5000, - 0x1AACA600, 0x1AABFC00, 0x1AAB5200, - 0x1AAAA800, 0x1AA9FE00, 0x1AA95400, - 0x1AA8AA00, 0x1AA80000, 0x1AA75600, - 0x1AA6AC00, 0x1AA60200, 0x1AA55800, - 0x1AA4AE00, 0x1AA40400, 0x1AA35A00, - 0x1AA2B000, 0x1AA20600, 0x1AA15C00, - 0x1AA0B200, 0x1AA00800, 0x1A9F5E00, - 0x1A9EB400, 0x1A9E0A00, 0x1A9D6000, - 0x1A9CB600, 0x1A9C0C00, 0x1A9B6200, - 0x1A9AB800, 0x1A9A0E00, 0x1A996400, - 0x1A98BA00, 0x1A981000, 0x1A976600, - 0x1A96BC00, 0x1A961200, 0x1A956800, - 0x1A94BE00, 0x1A941400, 0x1A936A00, - 0x1A92C000, 0x1A921600, 0x1A916C00, - 0x1A90C200, 0x1A901800, 0x1A8F6E00, - 0x1A8EC400, 0x1A8E1A00, 0x1A8D7000, - 0x1A8CC600, 0x1A8C1C00, 0x1A8B7200, - 0x1A8AC800, 0x1A8A1E00, 0x1A897400, - 0x1A88CA00, 0x1A882000, 0x1A877600, - 0x1A86CC00, 0x1A862200, 0x1A857800, - 0x1A84CE00, 0x1A842400, 0x1A837A00, - 0x1A82D000, 0x1A822600, 0x1A817C00, - 0x1A80D200, 0x1A802800, 0x1A7F7E00, - 0x1A7ED400, 0x1A7E2A00, 0x1A7D8000, - 0x1A7CD600, 0x1A7C2C00, 0x1A7B8200, - 0x1A7AD800, 0x1A7A2E00, 0x1A798400, - 0x1A78DA00, 0x1A783000, 0x1A778600, - 0x1A76DC00, 0x1A763200, 0x1A758800, - 0x1A74DE00, 0x1A743400, 0x1A738A00, - 0x1A72E000, 0x1A723600, 0x1A718C00, - 0x1A70E200, 0x1A703800, 0x1A6F8E00, - 0x1A6EE400, 0x1A6E3A00, 0x1A6D9000, - 0x1A6CE600, 0x1A6C3C00, 0x1A6B9200, - 0x1A6AE800, 0x1A6A3E00, 0x1A699400, - 0x1A68EA00, 0x1A684000, 0x1A679600, - 0x1A66EC00, 0x1A664200, 0x1A659800, - 0x1A64EE00, 0x1A644400, 0x1A639A00, - 0x1A62F000, 0x1A624600, 0x1A619C00, - 0x1A60F200, 0x1A604800, 0x1A5F9E00, - 0x1A5EF400, 0x1A5E4A00, 0x1A5DA000, - 0x1A5CF600, 0x1A5C4C00, 0x1A5BA200, - 0x1A5AF800, 0x1A5A4E00, 0x1A59A400, - 0x1A58FA00, 0x1A585000, 0x1A57A600, - 0x1A56FC00, 0x1A565200, 0x1A55A800, - 0x1A54FE00, 0x1A545400, 0x1A53AA00, - 0x1A530000, 0x1A525600, 0x1A51AC00, - 0x1A510200, 0x1A505800, 0x1A4FAE00, - 0x1A4F0400, 0x1A4E5A00, 0x1A4DB000, - 0x1A4D0600, 0x1A4C5C00, 0x1A4BB200, - 0x1A4B0800, 0x1A4A5E00, 0x1A49B400, - 0x1A490A00, 0x1A486000, 0x1A47B600, - 0x1A470C00, 0x1A466200, 0x1A45B800, - 0x1A450E00, 0x1A446400, 0x1A43BA00, - 0x1A431000, 0x1A426600, 0x1A41BC00, - 0x1A411200, 0x1A406800, 0x1A3FBE00, - 0x1A3F1400, 0x1A3E6A00, 0x1A3DC000, - 0x1A3D1600, 0x1A3C6C00, 0x1A3BC200, - 0x1A3B1800, 0x1A3A6E00, 0x1A39C400, - 0x1A391A00, 0x1A387000, 0x1A37C600, - 0x1A371C00, 0x1A367200, 0x1A35C800, - 0x1A351E00, 0x1A347400, 0x1A33CA00, - 0x1A332000, 0x1A327600, 0x1A31CC00, - 0x1A312200, 0x1A307800, 0x1A2FCE00, - 0x1A2F2400, 0x1A2E7A00, 0x1A2DD000, - 0x1A2D2600, 0x1A2C7C00, 0x1A2BD200, - 0x1A2B2800, 0x1A2A7E00, 0x1A29D400, - 0x1A292A00, 0x1A288000, 0x1A27D600, - 0x1A272C00, 0x1A268200, 0x1A25D800, - 0x1A252E00, 0x1A248400, 0x1A23DA00, - 0x1A233000, 0x1A228600, 0x1A21DC00, - 0x1A213200, 0x1A208800, 0x1A1FDE00, - 0x1A1F3400, 0x1A1E8A00, 0x1A1DE000, - 0x1A1D3600, 0x1A1C8C00, 0x1A1BE200, - 0x1A1B3800, 0x1A1A8E00, 0x1A19E400, - 0x1A193A00, 0x1A189000, 0x1A17E600, - 0x1A173C00, 0x1A169200, 0x1A15E800, - 0x1A153E00, 0x1A149400, 0x1A13EA00, - 0x1A134000, 0x1A129600, 0x1A11EC00, - 0x1A114200, 0x1A109800, 0x1A0FEE00, - 0x1A0F4400, 0x1A0E9A00, 0x1A0DF000, - 0x1A0D4600, 0x1A0C9C00, 0x1A0BF200, - 0x1A0B4800, 0x1A0A9E00, 0x1A09F400, - 0x1A094A00, 0x1A08A000, 0x1A07F600, - 0x1A074C00, 0x1A06A200, 0x1A05F800, - 0x1A054E00, 0x1A04A400, 0x1A03FA00, - 0x1A035000, 0x1A02A600, 0x1A01FC00, - 0x1A015200, 0x1A00A800, 0x19FFFE00, - 0x19FF5400, 0x19FEAA00, 0x19FE0000, - 0x19FD5600, 0x19FCAC00, 0x19FC0200, - 0x19FB5800, 0x19FAAE00, 0x19FA0400, - 0x19F95A00, 0x19F8B000, 0x19F80600, - 0x19F75C00, 0x19F6B200, 0x19F60800, - 0x19F55E00, 0x19F4B400, 0x19F40A00, - 0x19F36000, 0x19F2B600, 0x19F20C00, - 0x19F16200, 0x19F0B800, 0x19F00E00, - 0x19EF6400, 0x19EEBA00, 0x19EE1000, - 0x19ED6600, 0x19ECBC00, 0x19EC1200, - 0x19EB6800, 0x19EABE00, 0x19EA1400, - 0x19E96A00, 0x19E8C000, 0x19E81600, - 0x19E76C00, 0x19E6C200, 0x19E61800, - 0x19E56E00, 0x19E4C400, 0x19E41A00, - 0x19E37000, 0x19E2C600, 0x19E21C00, - 0x19E17200, 0x19E0C800, 0x19E01E00, - 0x19DF7400, 0x19DECA00, 0x19DE2000, - 0x19DD7600, 0x19DCCC00, 0x19DC2200, - 0x19DB7800, 0x19DACE00, 0x19DA2400, - 0x19D97A00, 0x19D8D000, 0x19D82600, - 0x19D77C00, 0x19D6D200, 0x19D62800, - 0x19D57E00, 0x19D4D400, 0x19D42A00, - 0x19D38000, 0x19D2D600, 0x19D22C00, - 0x19D18200, 0x19D0D800, 0x19D02E00, - 0x19CF8400, 0x19CEDA00, 0x19CE3000, - 0x19CD8600, 0x19CCDC00, 0x19CC3200, - 0x19CB8800, 0x19CADE00, 0x19CA3400, - 0x19C98A00, 0x19C8E000, 0x19C83600, - 0x19C78C00, 0x19C6E200, 0x19C63800, - 0x19C58E00, 0x19C4E400, 0x19C43A00, - 0x19C39000, 0x19C2E600, 0x19C23C00, - 0x19C19200, 0x19C0E800, 0x19C03E00, - 0x19BF9400, 0x19BEEA00, 0x19BE4000, - 0x19BD9600, 0x19BCEC00, 0x19BC4200, - 0x19BB9800, 0x19BAEE00, 0x19BA4400, - 0x19B99A00, 0x19B8F000, 0x19B84600, - 0x19B79C00, 0x19B6F200, 0x19B64800, - 0x19B59E00, 0x19B4F400, 0x19B44A00, - 0x19B3A000, 0x19B2F600, 0x19B24C00, - 0x19B1A200, 0x19B0F800, 0x19B04E00, - 0x19AFA400, 0x19AEFA00, 0x19AE5000, - 0x19ADA600, 0x19ACFC00, 0x19AC5200, - 0x19ABA800, 0x19AAFE00, 0x19AA5400, - 0x19A9AA00, 0x19A90000, 0x19A85600, - 0x19A7AC00, 0x19A70200, 0x19A65800, - 0x19A5AE00, 0x19A50400, 0x19A45A00, - 0x19A3B000, 0x19A30600, 0x19A25C00, - 0x19A1B200, 0x19A10800, 0x19A05E00, - 0x199FB400, 0x199F0A00, 0x199E6000, - 0x199DB600, 0x199D0C00, 0x199C6200, - 0x199BB800, 0x199B0E00, 0x199A6400, - 0x1999BA00, 0x19991000, 0x19986600, - 0x1997BC00, 0x19971200, 0x19966800, - 0x1995BE00, 0x19951400, 0x19946A00, - 0x1993C000, 0x19931600, 0x19926C00, - 0x1991C200, 0x19911800, 0x19906E00, - 0x198FC400, 0x198F1A00, 0x198E7000, - 0x198DC600, 0x198D1C00, 0x198C7200, - 0x198BC800, 0x198B1E00, 0x198A7400, - 0x1989CA00, 0x19892000, 0x19887600, - 0x1987CC00, 0x19872200, 0x19867800, - 0x1985CE00, 0x19852400, 0x19847A00, - 0x1983D000, 0x19832600, 0x19827C00, - 0x1981D200, 0x19812800, 0x19807E00, - 0x197FD400, 0x197F2A00, 0x197E8000, - 0x197DD600, 0x197D2C00, 0x197C8200, - 0x197BD800, 0x197B2E00, 0x197A8400, - 0x1979DA00, 0x19793000, 0x19788600, - 0x1977DC00, 0x19773200, 0x19768800, - 0x1975DE00, 0x19753400, 0x19748A00, - 0x1973E000, 0x19733600, 0x19728C00, - 0x1971E200, 0x19713800, 0x19708E00, - 0x196FE400, 0x196F3A00, 0x196E9000, - 0x196DE600, 0x196D3C00, 0x196C9200, - 0x196BE800, 0x196B3E00, 0x196A9400, - 0x1969EA00, 0x19694000, 0x19689600, - 0x1967EC00, 0x19674200, 0x19669800, - 0x1965EE00, 0x19654400, 0x19649A00, - 0x1963F000, 0x19634600, 0x19629C00, - 0x1961F200, 0x19614800, 0x19609E00, - 0x195FF400, 0x195F4A00, 0x195EA000, - 0x195DF600, 0x195D4C00, 0x195CA200, - 0x195BF800, 0x195B4E00, 0x195AA400, - 0x1959FA00, 0x19595000, 0x1958A600, - 0x1957FC00, 0x19575200, 0x1956A800, - 0x1955FE00, 0x19555400, 0x1954AA00, - 0x19540000, 0x19535600, 0x1952AC00, - 0x19520200, 0x19515800, 0x1950AE00, - 0x19500400, 0x194F5A00, 0x194EB000, - 0x194E0600, 0x194D5C00, 0x194CB200, - 0x194C0800, 0x194B5E00, 0x194AB400, - 0x194A0A00, 0x19496000, 0x1948B600, - 0x19480C00, 0x19476200, 0x1946B800, - 0x19460E00, 0x19456400, 0x1944BA00, - 0x19441000, 0x19436600, 0x1942BC00, - 0x19421200, 0x19416800, 0x1940BE00, - 0x19401400, 0x193F6A00, 0x193EC000, - 0x193E1600, 0x193D6C00, 0x193CC200, - 0x193C1800, 0x193B6E00, 0x193AC400, - 0x193A1A00, 0x19397000, 0x1938C600, - 0x19381C00, 0x19377200, 0x1936C800, - 0x19361E00, 0x19357400, 0x1934CA00, - 0x19342000, 0x19337600, 0x1932CC00, - 0x19322200, 0x19317800, 0x1930CE00, - 0x19302400, 0x192F7A00, 0x192ED000, - 0x192E2600, 0x192D7C00, 0x192CD200, - 0x192C2800, 0x192B7E00, 0x192AD400, - 0x192A2A00, 0x19298000, 0x1928D600, - 0x19282C00, 0x19278200, 0x1926D800, - 0x19262E00, 0x19258400, 0x1924DA00, - 0x19243000, 0x19238600, 0x1922DC00, - 0x19223200, 0x19218800, 0x1920DE00, - 0x19203400, 0x191F8A00, 0x191EE000, - 0x191E3600, 0x191D8C00, 0x191CE200, - 0x191C3800, 0x191B8E00, 0x191AE400, - 0x191A3A00, 0x19199000, 0x1918E600, - 0x19183C00, 0x19179200, 0x1916E800, - 0x19163E00, 0x19159400, 0x1914EA00, - 0x19144000, 0x19139600, 0x1912EC00, - 0x19124200, 0x19119800, 0x1910EE00, - 0x19104400, 0x190F9A00, 0x190EF000, - 0x190E4600, 0x190D9C00, 0x190CF200, - 0x190C4800, 0x190B9E00, 0x190AF400, - 0x190A4A00, 0x1909A000, 0x1908F600, - 0x19084C00, 0x1907A200, 0x1906F800, - 0x19064E00, 0x1905A400, 0x1904FA00, - 0x19045000, 0x1903A600, 0x1902FC00, - 0x19025200, 0x1901A800, 0x1900FE00, - 0x19005400, 0x18FFAA00, 0x18FF0000, - 0x18FE5600, 0x18FDAC00, 0x18FD0200, - 0x18FC5800, 0x18FBAE00, 0x18FB0400, - 0x18FA5A00, 0x18F9B000, 0x18F90600, - 0x18F85C00, 0x18F7B200, 0x18F70800, - 0x18F65E00, 0x18F5B400, 0x18F50A00, - 0x18F46000, 0x18F3B600, 0x18F30C00, - 0x18F26200, 0x18F1B800, 0x18F10E00, - 0x18F06400, 0x18EFBA00, 0x18EF1000, - 0x18EE6600, 0x18EDBC00, 0x18ED1200, - 0x18EC6800, 0x18EBBE00, 0x18EB1400, - 0x18EA6A00, 0x18E9C000, 0x18E91600, - 0x18E86C00, 0x18E7C200, 0x18E71800, - 0x18E66E00, 0x18E5C400, 0x18E51A00, - 0x18E47000, 0x18E3C600, 0x18E31C00, - 0x18E27200, 0x18E1C800, 0x18E11E00, - 0x18E07400, 0x18DFCA00, 0x18DF2000, - 0x18DE7600, 0x18DDCC00, 0x18DD2200, - 0x18DC7800, 0x18DBCE00, 0x18DB2400, - 0x18DA7A00, 0x18D9D000, 0x18D92600, - 0x18D87C00, 0x18D7D200, 0x18D72800, - 0x18D67E00, 0x18D5D400, 0x18D52A00, - 0x18D48000, 0x18D3D600, 0x18D32C00, - 0x18D28200, 0x18D1D800, 0x18D12E00, - 0x18D08400, 0x18CFDA00, 0x18CF3000, - 0x18CE8600, 0x18CDDC00, 0x18CD3200, - 0x18CC8800, 0x18CBDE00, 0x18CB3400, - 0x18CA8A00, 0x18C9E000, 0x18C93600, - 0x18C88C00, 0x18C7E200, 0x18C73800, - 0x18C68E00, 0x18C5E400, 0x18C53A00, - 0x18C49000, 0x18C3E600, 0x18C33C00, - 0x18C29200, 0x18C1E800, 0x18C13E00, - 0x18C09400, 0x18BFEA00, 0x18BF4000, - 0x18BE9600, 0x18BDEC00, 0x18BD4200, - 0x18BC9800, 0x18BBEE00, 0x18BB4400, - 0x18BA9A00, 0x18B9F000, 0x18B94600, - 0x18B89C00, 0x18B7F200, 0x18B74800, - 0x18B69E00, 0x18B5F400, 0x18B54A00, - 0x18B4A000, 0x18B3F600, 0x18B34C00, - 0x18B2A200, 0x18B1F800, 0x18B14E00, - 0x18B0A400, 0x18AFFA00, 0x18AF5000, - 0x18AEA600, 0x18ADFC00, 0x18AD5200, - 0x18ACA800, 0x18ABFE00, 0x18AB5400, - 0x18AAAA00, 0x18AA0000, 0x18A95600, - 0x18A8AC00, 0x18A80200, 0x18A75800, - 0x18A6AE00, 0x18A60400, 0x18A55A00, - 0x18A4B000, 0x18A40600, 0x18A35C00, - 0x18A2B200, 0x18A20800, 0x18A15E00, - 0x18A0B400, 0x18A00A00, 0x189F6000, - 0x189EB600, 0x189E0C00, 0x189D6200, - 0x189CB800, 0x189C0E00, 0x189B6400, - 0x189ABA00, 0x189A1000, 0x18996600, - 0x1898BC00, 0x18981200, 0x18976800, - 0x1896BE00, 0x18961400, 0x18956A00, - 0x1894C000, 0x18941600, 0x18936C00, - 0x1892C200, 0x18921800, 0x18916E00, - 0x1890C400, 0x18901A00, 0x188F7000, - 0x188EC600, 0x188E1C00, 0x188D7200, - 0x188CC800, 0x188C1E00, 0x188B7400, - 0x188ACA00, 0x188A2000, 0x18897600, - 0x1888CC00, 0x18882200, 0x18877800, - 0x1886CE00, 0x18862400, 0x18857A00, - 0x1884D000, 0x18842600, 0x18837C00, - 0x1882D200, 0x18822800, 0x18817E00, - 0x1880D400, 0x18802A00, 0x187F8000, - 0x187ED600, 0x187E2C00, 0x187D8200, - 0x187CD800, 0x187C2E00, 0x187B8400, - 0x187ADA00, 0x187A3000, 0x18798600, - 0x1878DC00, 0x18783200, 0x18778800, - 0x1876DE00, 0x18763400, 0x18758A00, - 0x1874E000, 0x18743600, 0x18738C00, - 0x1872E200, 0x18723800, 0x18718E00, - 0x1870E400, 0x18703A00, 0x186F9000, - 0x186EE600, 0x186E3C00, 0x186D9200, - 0x186CE800, 0x186C3E00, 0x186B9400, - 0x186AEA00, 0x186A4000, 0x18699600, - 0x1868EC00, 0x18684200, 0x18679800, - 0x1866EE00, 0x18664400, 0x18659A00, - 0x1864F000, 0x18644600, 0x18639C00, - 0x1862F200, 0x18624800, 0x18619E00, - 0x1860F400, 0x18604A00, 0x185FA000, - 0x185EF600, 0x185E4C00, 0x185DA200, - 0x185CF800, 0x185C4E00, 0x185BA400, - 0x185AFA00, 0x185A5000, 0x1859A600, - 0x1858FC00, 0x18585200, 0x1857A800, - 0x1856FE00, 0x18565400, 0x1855AA00, - 0x18550000, 0x18545600, 0x1853AC00, - 0x18530200, 0x18525800, 0x1851AE00, - 0x18510400, 0x18505A00, 0x184FB000, - 0x184F0600, 0x184E5C00, 0x184DB200, - 0x184D0800, 0x184C5E00, 0x184BB400, - 0x184B0A00, 0x184A6000, 0x1849B600, - 0x18490C00, 0x18486200, 0x1847B800, - 0x18470E00, 0x18466400, 0x1845BA00, - 0x18451000, 0x18446600, 0x1843BC00, - 0x18431200, 0x18426800, 0x1841BE00, - 0x18411400, 0x18406A00, 0x183FC000, - 0x183F1600, 0x183E6C00, 0x183DC200, - 0x183D1800, 0x183C6E00, 0x183BC400, - 0x183B1A00, 0x183A7000, 0x1839C600, - 0x18391C00, 0x18387200, 0x1837C800, - 0x18371E00, 0x18367400, 0x1835CA00, - 0x18352000, 0x18347600, 0x1833CC00, - 0x18332200, 0x18327800, 0x1831CE00, - 0x18312400, 0x18307A00, 0x182FD000, - 0x182F2600, 0x182E7C00, 0x182DD200, - 0x182D2800, 0x182C7E00, 0x182BD400, - 0x182B2A00, 0x182A8000, 0x1829D600, - 0x18292C00, 0x18288200, 0x1827D800, - 0x18272E00, 0x18268400, 0x1825DA00, - 0x18253000, 0x18248600, 0x1823DC00, - 0x18233200, 0x18228800, 0x1821DE00, - 0x18213400, 0x18208A00, 0x181FE000, - 0x181F3600, 0x181E8C00, 0x181DE200, - 0x181D3800, 0x181C8E00, 0x181BE400, - 0x181B3A00, 0x181A9000, 0x1819E600, - 0x18193C00, 0x18189200, 0x1817E800, - 0x18173E00, 0x18169400, 0x1815EA00, - 0x18154000, 0x18149600, 0x1813EC00, - 0x18134200, 0x18129800, 0x1811EE00, - 0x18114400, 0x18109A00, 0x180FF000, - 0x180F4600, 0x180E9C00, 0x180DF200, - 0x180D4800, 0x180C9E00, 0x180BF400, - 0x180B4A00, 0x180AA000, 0x1809F600, - 0x18094C00, 0x1808A200, 0x1807F800, - 0x18074E00, 0x1806A400, 0x1805FA00, - 0x18055000, 0x1804A600, 0x1803FC00, - 0x18035200, 0x1802A800, 0x1801FE00, - 0x18015400, 0x1800AA00, 0x18000000, - 0x17FF5600, 0x17FEAC00, 0x17FE0200, - 0x17FD5800, 0x17FCAE00, 0x17FC0400, - 0x17FB5A00, 0x17FAB000, 0x17FA0600, - 0x17F95C00, 0x17F8B200, 0x17F80800, - 0x17F75E00, 0x17F6B400, 0x17F60A00, - 0x17F56000, 0x17F4B600, 0x17F40C00, - 0x17F36200, 0x17F2B800, 0x17F20E00, - 0x17F16400, 0x17F0BA00, 0x17F01000, - 0x17EF6600, 0x17EEBC00, 0x17EE1200, - 0x17ED6800, 0x17ECBE00, 0x17EC1400, - 0x17EB6A00, 0x17EAC000, 0x17EA1600, - 0x17E96C00, 0x17E8C200, 0x17E81800, - 0x17E76E00, 0x17E6C400, 0x17E61A00, - 0x17E57000, 0x17E4C600, 0x17E41C00, - 0x17E37200, 0x17E2C800, 0x17E21E00, - 0x17E17400, 0x17E0CA00, 0x17E02000, - 0x17DF7600, 0x17DECC00, 0x17DE2200, - 0x17DD7800, 0x17DCCE00, 0x17DC2400, - 0x17DB7A00, 0x17DAD000, 0x17DA2600, - 0x17D97C00, 0x17D8D200, 0x17D82800, - 0x17D77E00, 0x17D6D400, 0x17D62A00, - 0x17D58000, 0x17D4D600, 0x17D42C00, - 0x17D38200, 0x17D2D800, 0x17D22E00, - 0x17D18400, 0x17D0DA00, 0x17D03000, - 0x17CF8600, 0x17CEDC00, 0x17CE3200, - 0x17CD8800, 0x17CCDE00, 0x17CC3400, - 0x17CB8A00, 0x17CAE000, 0x17CA3600, - 0x17C98C00, 0x17C8E200, 0x17C83800, - 0x17C78E00, 0x17C6E400, 0x17C63A00, - 0x17C59000, 0x17C4E600, 0x17C43C00, - 0x17C39200, 0x17C2E800, 0x17C23E00, - 0x17C19400, 0x17C0EA00, 0x17C04000, - 0x17BF9600, 0x17BEEC00, 0x17BE4200, - 0x17BD9800, 0x17BCEE00, 0x17BC4400, - 0x17BB9A00, 0x17BAF000, 0x17BA4600, - 0x17B99C00, 0x17B8F200, 0x17B84800, - 0x17B79E00, 0x17B6F400, 0x17B64A00, - 0x17B5A000, 0x17B4F600, 0x17B44C00, - 0x17B3A200, 0x17B2F800, 0x17B24E00, - 0x17B1A400, 0x17B0FA00, 0x17B05000, - 0x17AFA600, 0x17AEFC00, 0x17AE5200, - 0x17ADA800, 0x17ACFE00, 0x17AC5400, - 0x17ABAA00, 0x17AB0000, 0x17AA5600, - 0x17A9AC00, 0x17A90200, 0x17A85800, - 0x17A7AE00, 0x17A70400, 0x17A65A00, - 0x17A5B000, 0x17A50600, 0x17A45C00, - 0x17A3B200, 0x17A30800, 0x17A25E00, - 0x17A1B400, 0x17A10A00, 0x17A06000, - 0x179FB600, 0x179F0C00, 0x179E6200, - 0x179DB800, 0x179D0E00, 0x179C6400, - 0x179BBA00, 0x179B1000, 0x179A6600, - 0x1799BC00, 0x17991200, 0x17986800, - 0x1797BE00, 0x17971400, 0x17966A00, - 0x1795C000, 0x17951600, 0x17946C00, - 0x1793C200, 0x17931800, 0x17926E00, - 0x1791C400, 0x17911A00, 0x17907000, - 0x178FC600, 0x178F1C00, 0x178E7200, - 0x178DC800, 0x178D1E00, 0x178C7400, - 0x178BCA00, 0x178B2000, 0x178A7600, - 0x1789CC00, 0x17892200, 0x17887800, - 0x1787CE00, 0x17872400, 0x17867A00, - 0x1785D000, 0x17852600, 0x17847C00, - 0x1783D200, 0x17832800, 0x17827E00, - 0x1781D400, 0x17812A00, 0x17808000, - 0x177FD600, 0x177F2C00, 0x177E8200, - 0x177DD800, 0x177D2E00, 0x177C8400, - 0x177BDA00, 0x177B3000, 0x177A8600, - 0x1779DC00, 0x17793200, 0x17788800, - 0x1777DE00, 0x17773400, 0x17768A00, - 0x1775E000, 0x17753600, 0x17748C00, - 0x1773E200, 0x17733800, 0x17728E00, - 0x1771E400, 0x17713A00, 0x17709000, - 0x176FE600, 0x176F3C00, 0x176E9200, - 0x176DE800, 0x176D3E00, 0x176C9400, - 0x176BEA00, 0x176B4000, 0x176A9600, - 0x1769EC00, 0x17694200, 0x17689800, - 0x1767EE00, 0x17674400, 0x17669A00, - 0x1765F000, 0x17654600, 0x17649C00, - 0x1763F200, 0x17634800, 0x17629E00, - 0x1761F400, 0x17614A00, 0x1760A000, - 0x175FF600, 0x175F4C00, 0x175EA200, - 0x175DF800, 0x175D4E00, 0x175CA400, - 0x175BFA00, 0x175B5000, 0x175AA600, - 0x1759FC00, 0x17595200, 0x1758A800, - 0x1757FE00, 0x17575400, 0x1756AA00, - 0x17560000, 0x17555600, 0x1754AC00, - 0x17540200, 0x17535800, 0x1752AE00, - 0x17520400, 0x17515A00, 0x1750B000, - 0x17500600, 0x174F5C00, 0x174EB200, - 0x174E0800, 0x174D5E00, 0x174CB400, - 0x174C0A00, 0x174B6000, 0x174AB600, - 0x174A0C00, 0x17496200, 0x1748B800, - 0x17480E00, 0x17476400, 0x1746BA00, - 0x17461000, 0x17456600, 0x1744BC00, - 0x17441200, 0x17436800, 0x1742BE00, - 0x17421400, 0x17416A00, 0x1740C000, - 0x17401600, 0x173F6C00, 0x173EC200, - 0x173E1800, 0x173D6E00, 0x173CC400, - 0x173C1A00, 0x173B7000, 0x173AC600, - 0x173A1C00, 0x17397200, 0x1738C800, - 0x17381E00, 0x17377400, 0x1736CA00, - 0x17362000, 0x17357600, 0x1734CC00, - 0x17342200, 0x17337800, 0x1732CE00, - 0x17322400, 0x17317A00, 0x1730D000, - 0x17302600, 0x172F7C00, 0x172ED200, - 0x172E2800, 0x172D7E00, 0x172CD400, - 0x172C2A00, 0x172B8000, 0x172AD600, - 0x172A2C00, 0x17298200, 0x1728D800, - 0x17282E00, 0x17278400, 0x1726DA00, - 0x17263000, 0x17258600, 0x1724DC00, - 0x17243200, 0x17238800, 0x1722DE00, - 0x17223400, 0x17218A00, 0x1720E000, - 0x17203600, 0x171F8C00, 0x171EE200, - 0x171E3800, 0x171D8E00, 0x171CE400, - 0x171C3A00, 0x171B9000, 0x171AE600, - 0x171A3C00, 0x17199200, 0x1718E800, - 0x17183E00, 0x17179400, 0x1716EA00, - 0x17164000, 0x17159600, 0x1714EC00, - 0x17144200, 0x17139800, 0x1712EE00, - 0x17124400, 0x17119A00, 0x1710F000, - 0x17104600, 0x170F9C00, 0x170EF200, - 0x170E4800, 0x170D9E00, 0x170CF400, - 0x170C4A00, 0x170BA000, 0x170AF600, - 0x170A4C00, 0x1709A200, 0x1708F800, - 0x17084E00, 0x1707A400, 0x1706FA00, - 0x17065000, 0x1705A600, 0x1704FC00, - 0x17045200, 0x1703A800, 0x1702FE00, - 0x17025400, 0x1701AA00, 0x17010000, - 0x17005600, 0x16FFAC00, 0x16FF0200, - 0x16FE5800, 0x16FDAE00, 0x16FD0400, - 0x16FC5A00, 0x16FBB000, 0x16FB0600, - 0x16FA5C00, 0x16F9B200, 0x16F90800, - 0x16F85E00, 0x16F7B400, 0x16F70A00, - 0x16F66000, 0x16F5B600, 0x16F50C00, - 0x16F46200, 0x16F3B800, 0x16F30E00, - 0x16F26400, 0x16F1BA00, 0x16F11000, - 0x16F06600, 0x16EFBC00, 0x16EF1200, - 0x16EE6800, 0x16EDBE00, 0x16ED1400, - 0x16EC6A00, 0x16EBC000, 0x16EB1600, - 0x16EA6C00, 0x16E9C200, 0x16E91800, - 0x16E86E00, 0x16E7C400, 0x16E71A00, - 0x16E67000, 0x16E5C600, 0x16E51C00, - 0x16E47200, 0x16E3C800, 0x16E31E00, - 0x16E27400, 0x16E1CA00, 0x16E12000, - 0x16E07600, 0x16DFCC00, 0x16DF2200, - 0x16DE7800, 0x16DDCE00, 0x16DD2400, - 0x16DC7A00, 0x16DBD000, 0x16DB2600, - 0x16DA7C00, 0x16D9D200, 0x16D92800, - 0x16D87E00, 0x16D7D400, 0x16D72A00, - 0x16D68000, 0x16D5D600, 0x16D52C00, - 0x16D48200, 0x16D3D800, 0x16D32E00, - 0x16D28400, 0x16D1DA00, 0x16D13000, - 0x16D08600, 0x16CFDC00, 0x16CF3200, - 0x16CE8800, 0x16CDDE00, 0x16CD3400, - 0x16CC8A00, 0x16CBE000, 0x16CB3600, - 0x16CA8C00, 0x16C9E200, 0x16C93800, - 0x16C88E00, 0x16C7E400, 0x16C73A00, - 0x16C69000, 0x16C5E600, 0x16C53C00, - 0x16C49200, 0x16C3E800, 0x16C33E00, - 0x16C29400, 0x16C1EA00, 0x16C14000, - 0x16C09600, 0x16BFEC00, 0x16BF4200, - 0x16BE9800, 0x16BDEE00, 0x16BD4400, - 0x16BC9A00, 0x16BBF000, 0x16BB4600, - 0x16BA9C00, 0x16B9F200, 0x16B94800, - 0x16B89E00, 0x16B7F400, 0x16B74A00, - 0x16B6A000, 0x16B5F600, 0x16B54C00, - 0x16B4A200, 0x16B3F800, 0x16B34E00, - 0x16B2A400, 0x16B1FA00, 0x16B15000, - 0x16B0A600, 0x16AFFC00, 0x16AF5200, - 0x16AEA800, 0x16ADFE00, 0x16AD5400, - 0x16ACAA00, 0x16AE0000, 0x16AD5F40, - 0x16ACBE80, 0x16AC1DC0, 0x16AB7D00, - 0x16AADC40, 0x16AA3B80, 0x16A99AC0, - 0x16A8FA00, 0x16A85940, 0x16A7B880, - 0x16A717C0, 0x16A67700, 0x16A5D640, - 0x16A53580, 0x16A494C0, 0x16A3F400, - 0x16A35340, 0x16A2B280, 0x16A211C0, - 0x16A17100, 0x16A0D040, 0x16A02F80, - 0x169F8EC0, 0x169EEE00, 0x169E4D40, - 0x169DAC80, 0x169D0BC0, 0x169C6B00, - 0x169BCA40, 0x169B2980, 0x169A88C0, - 0x1699E800, 0x16994740, 0x1698A680, - 0x169805C0, 0x16976500, 0x1696C440, - 0x16962380, 0x169582C0, 0x1694E200, - 0x16944140, 0x1693A080, 0x1692FFC0, - 0x16925F00, 0x1691BE40, 0x16911D80, - 0x16907CC0, 0x168FDC00, 0x168F3B40, - 0x168E9A80, 0x168DF9C0, 0x168D5900, - 0x168CB840, 0x168C1780, 0x168B76C0, - 0x168AD600, 0x168A3540, 0x16899480, - 0x1688F3C0, 0x16885300, 0x1687B240, - 0x16871180, 0x168670C0, 0x1685D000, - 0x16852F40, 0x16848E80, 0x1683EDC0, - 0x16834D00, 0x1682AC40, 0x16820B80, - 0x16816AC0, 0x1680CA00, 0x16802940, - 0x167F8880, 0x167EE7C0, 0x167E4700, - 0x167DA640, 0x167D0580, 0x167C64C0, - 0x167BC400, 0x167B2340, 0x167A8280, - 0x1679E1C0, 0x16794100, 0x1678A040, - 0x1677FF80, 0x16775EC0, 0x1676BE00, - 0x16761D40, 0x16757C80, 0x1674DBC0, - 0x16743B00, 0x16739A40, 0x1672F980, - 0x167258C0, 0x1671B800, 0x16711740, - 0x16707680, 0x166FD5C0, 0x166F3500, - 0x166E9440, 0x166DF380, 0x166D52C0, - 0x166CB200, 0x166C1140, 0x166B7080, - 0x166ACFC0, 0x166A2F00, 0x16698E40, - 0x1668ED80, 0x16684CC0, 0x1667AC00, - 0x16670B40, 0x16666A80, 0x1665C9C0, - 0x16652900, 0x16648840, 0x1663E780, - 0x166346C0, 0x1662A600, 0x16620540, - 0x16616480, 0x1660C3C0, 0x16602300, - 0x165F8240, 0x165EE180, 0x165E40C0, - 0x165DA000, 0x165CFF40, 0x165C5E80, - 0x165BBDC0, 0x165B1D00, 0x165A7C40, - 0x1659DB80, 0x16593AC0, 0x16589A00, - 0x1657F940, 0x16575880, 0x1656B7C0, - 0x16561700, 0x16557640, 0x1654D580, - 0x165434C0, 0x16539400, 0x1652F340, - 0x16525280, 0x1651B1C0, 0x16511100, - 0x16507040, 0x164FCF80, 0x164F2EC0, - 0x164E8E00, 0x164DED40, 0x164D4C80, - 0x164CABC0, 0x164C0B00, 0x164B6A40, - 0x164AC980, 0x164A28C0, 0x16498800, - 0x1648E740, 0x16484680, 0x1647A5C0, - 0x16470500, 0x16466440, 0x1645C380, - 0x164522C0, 0x16448200, 0x1643E140, - 0x16434080, 0x16429FC0, 0x1641FF00, - 0x16415E40, 0x1640BD80, 0x16401CC0, - 0x163F7C00, 0x163EDB40, 0x163E3A80, - 0x163D99C0, 0x163CF900, 0x163C5840, - 0x163BB780, 0x163B16C0, 0x163A7600, - 0x1639D540, 0x16393480, 0x163893C0, - 0x1637F300, 0x16375240, 0x1636B180, - 0x163610C0, 0x16357000, 0x1634CF40, - 0x16342E80, 0x16338DC0, 0x1632ED00, - 0x16324C40, 0x1631AB80, 0x16310AC0, - 0x16306A00, 0x162FC940, 0x162F2880, - 0x162E87C0, 0x162DE700, 0x162D4640, - 0x162CA580, 0x162C04C0, 0x162B6400, - 0x162AC340, 0x162A2280, 0x162981C0, - 0x1628E100, 0x16284040, 0x16279F80, - 0x1626FEC0, 0x16265E00, 0x1625BD40, - 0x16251C80, 0x16247BC0, 0x1623DB00, - 0x16233A40, 0x16229980, 0x1621F8C0, - 0x16215800, 0x1620B740, 0x16201680, - 0x161F75C0, 0x161ED500, 0x161E3440, - 0x161D9380, 0x161CF2C0, 0x161C5200, - 0x161BB140, 0x161B1080, 0x161A6FC0, - 0x1619CF00, 0x16192E40, 0x16188D80, - 0x1617ECC0, 0x16174C00, 0x1616AB40, - 0x16160A80, 0x161569C0, 0x1614C900, - 0x16142840, 0x16138780, 0x1612E6C0, - 0x16124600, 0x1611A540, 0x16110480, - 0x161063C0, 0x160FC300, 0x160F2240, - 0x160E8180, 0x160DE0C0, 0x160D4000, - 0x160C9F40, 0x160BFE80, 0x160B5DC0, - 0x160ABD00, 0x160A1C40, 0x16097B80, - 0x1608DAC0, 0x16083A00, 0x16079940, - 0x1606F880, 0x160657C0, 0x1605B700, - 0x16051640, 0x16047580, 0x1603D4C0, - 0x16033400, 0x16029340, 0x1601F280, - 0x160151C0, 0x1600B100, 0x16001040, - 0x15FF6F80, 0x15FECEC0, 0x15FE2E00, - 0x15FD8D40, 0x15FCEC80, 0x15FC4BC0, - 0x15FBAB00, 0x15FB0A40, 0x15FA6980, - 0x15F9C8C0, 0x15F92800, 0x15F88740, - 0x15F7E680, 0x15F745C0, 0x15F6A500, - 0x15F60440, 0x15F56380, 0x15F4C2C0, - 0x15F42200, 0x15F38140, 0x15F2E080, - 0x15F23FC0, 0x15F19F00, 0x15F0FE40, - 0x15F05D80, 0x15EFBCC0, 0x15EF1C00, - 0x15EE7B40, 0x15EDDA80, 0x15ED39C0, - 0x15EC9900, 0x15EBF840, 0x15EB5780, - 0x15EAB6C0, 0x15EA1600, 0x15E97540, - 0x15E8D480, 0x15E833C0, 0x15E79300, - 0x15E6F240, 0x15E65180, 0x15E5B0C0, - 0x15E51000, 0x15E46F40, 0x15E3CE80, - 0x15E32DC0, 0x15E28D00, 0x15E1EC40, - 0x15E14B80, 0x15E0AAC0, 0x15E00A00, - 0x15DF6940, 0x15DEC880, 0x15DE27C0, - 0x15DD8700, 0x15DCE640, 0x15DC4580, - 0x15DBA4C0, 0x15DB0400, 0x15DA6340, - 0x15D9C280, 0x15D921C0, 0x15D88100, - 0x15D7E040, 0x15D73F80, 0x15D69EC0, - 0x15D5FE00, 0x15D55D40, 0x15D4BC80, - 0x15D41BC0, 0x15D37B00, 0x15D2DA40, - 0x15D23980, 0x15D198C0, 0x15D0F800, - 0x15D05740, 0x15CFB680, 0x15CF15C0, - 0x15CE7500, 0x15CDD440, 0x15CD3380, - 0x15CC92C0, 0x15CBF200, 0x15CB5140, - 0x15CAB080, 0x15CA0FC0, 0x15C96F00, - 0x15C8CE40, 0x15C82D80, 0x15C78CC0, - 0x15C6EC00, 0x15C64B40, 0x15C5AA80, - 0x15C509C0, 0x15C46900, 0x15C3C840, - 0x15C32780, 0x15C286C0, 0x15C1E600, - 0x15C14540, 0x15C0A480, 0x15C003C0, - 0x15BF6300, 0x15BEC240, 0x15BE2180, - 0x15BD80C0, 0x15BCE000, 0x15BC3F40, - 0x15BB9E80, 0x15BAFDC0, 0x15BA5D00, - 0x15B9BC40, 0x15B91B80, 0x15B87AC0, - 0x15B7DA00, 0x15B73940, 0x15B69880, - 0x15B5F7C0, 0x15B55700, 0x15B4B640, - 0x15B41580, 0x15B374C0, 0x15B2D400, - 0x15B23340, 0x15B19280, 0x15B0F1C0, - 0x15B05100, 0x15AFB040, 0x15AF0F80, - 0x15AE6EC0, 0x15ADCE00, 0x15AD2D40, - 0x15AC8C80, 0x15ABEBC0, 0x15AB4B00, - 0x15AAAA40, 0x15AA0980, 0x15A968C0, - 0x15A8C800, 0x15A82740, 0x15A78680, - 0x15A6E5C0, 0x15A64500, 0x15A5A440, - 0x15A50380, 0x15A462C0, 0x15A3C200, - 0x15A32140, 0x15A28080, 0x15A1DFC0, - 0x15A13F00, 0x15A09E40, 0x159FFD80, - 0x159F5CC0, 0x159EBC00, 0x159E1B40, - 0x159D7A80, 0x159CD9C0, 0x159C3900, - 0x159B9840, 0x159AF780, 0x159A56C0, - 0x1599B600, 0x15991540, 0x15987480, - 0x1597D3C0, 0x15973300, 0x15969240, - 0x1595F180, 0x159550C0, 0x1594B000, - 0x15940F40, 0x15936E80, 0x1592CDC0, - 0x15922D00, 0x15918C40, 0x1590EB80, - 0x15904AC0, 0x158FAA00, 0x158F0940, - 0x158E6880, 0x158DC7C0, 0x158D2700, - 0x158C8640, 0x158BE580, 0x158B44C0, - 0x158AA400, 0x158A0340, 0x15896280, - 0x1588C1C0, 0x15882100, 0x15878040, - 0x1586DF80, 0x15863EC0, 0x15859E00, - 0x1584FD40, 0x15845C80, 0x1583BBC0, - 0x15831B00, 0x15827A40, 0x1581D980, - 0x158138C0, 0x15809800, 0x157FF740, - 0x157F5680, 0x157EB5C0, 0x157E1500, - 0x157D7440, 0x157CD380, 0x157C32C0, - 0x157B9200, 0x157AF140, 0x157A5080, - 0x1579AFC0, 0x15790F00, 0x15786E40, - 0x1577CD80, 0x15772CC0, 0x15768C00, - 0x1575EB40, 0x15754A80, 0x1574A9C0, - 0x15740900, 0x15736840, 0x1572C780, - 0x157226C0, 0x15718600, 0x1570E540, - 0x15704480, 0x156FA3C0, 0x156F0300, - 0x156E6240, 0x156DC180, 0x156D20C0, - 0x156C8000, 0x156BDF40, 0x156B3E80, - 0x156A9DC0, 0x1569FD00, 0x15695C40, - 0x1568BB80, 0x15681AC0, 0x15677A00, - 0x1566D940, 0x15663880, 0x156597C0, - 0x1564F700, 0x15645640, 0x1563B580, - 0x156314C0, 0x15627400, 0x1561D340, - 0x15613280, 0x156091C0, 0x155FF100, - 0x155F5040, 0x155EAF80, 0x155E0EC0, - 0x155D6E00, 0x155CCD40, 0x155C2C80, - 0x155B8BC0, 0x155AEB00, 0x155A4A40, - 0x1559A980, 0x155908C0, 0x15586800, - 0x1557C740, 0x15572680, 0x155685C0, - 0x1555E500, 0x15554440, 0x1554A380, - 0x155402C0, 0x15536200, 0x1552C140, - 0x15522080, 0x15517FC0, 0x1550DF00, - 0x15503E40, 0x154F9D80, 0x154EFCC0, - 0x154E5C00, 0x154DBB40, 0x154D1A80, - 0x154C79C0, 0x154BD900, 0x154B3840, - 0x154A9780, 0x1549F6C0, 0x15495600, - 0x1548B540, 0x15481480, 0x154773C0, - 0x1546D300, 0x15463240, 0x15459180, - 0x1544F0C0, 0x15445000, 0x1543AF40, - 0x15430E80, 0x15426DC0, 0x1541CD00, - 0x15412C40, 0x15408B80, 0x153FEAC0, - 0x153F4A00, 0x153EA940, 0x153E0880, - 0x153D67C0, 0x153CC700, 0x153C2640, - 0x153B8580, 0x153AE4C0, 0x153A4400, - 0x1539A340, 0x15390280, 0x153861C0, - 0x1537C100, 0x15372040, 0x15367F80, - 0x1535DEC0, 0x15353E00, 0x15349D40, - 0x1533FC80, 0x15335BC0, 0x1532BB00, - 0x15321A40, 0x15317980, 0x1530D8C0, - 0x15303800, 0x152F9740, 0x152EF680, - 0x152E55C0, 0x152DB500, 0x152D1440, - 0x152C7380, 0x152BD2C0, 0x152B3200, - 0x152A9140, 0x1529F080, 0x15294FC0, - 0x1528AF00, 0x15280E40, 0x15276D80, - 0x1526CCC0, 0x15262C00, 0x15258B40, - 0x1524EA80, 0x152449C0, 0x1523A900, - 0x15230840, 0x15226780, 0x1521C6C0, - 0x15212600, 0x15208540, 0x151FE480, - 0x151F43C0, 0x151EA300, 0x151E0240, - 0x151D6180, 0x151CC0C0, 0x151C2000, - 0x151B7F40, 0x151ADE80, 0x151A3DC0, - 0x15199D00, 0x1518FC40, 0x15185B80, - 0x1517BAC0, 0x15171A00, 0x15167940, - 0x1515D880, 0x151537C0, 0x15149700, - 0x1513F640, 0x15135580, 0x1512B4C0, - 0x15121400, 0x15117340, 0x1510D280, - 0x151031C0, 0x150F9100, 0x150EF040, - 0x150E4F80, 0x150DAEC0, 0x150D0E00, - 0x150C6D40, 0x150BCC80, 0x150B2BC0, - 0x150A8B00, 0x1509EA40, 0x15094980, - 0x1508A8C0, 0x15080800, 0x15076740, - 0x1506C680, 0x150625C0, 0x15058500, - 0x1504E440, 0x15044380, 0x1503A2C0, - 0x15030200, 0x15026140, 0x1501C080, - 0x15011FC0, 0x15007F00, 0x14FFDE40, - 0x14FF3D80, 0x14FE9CC0, 0x14FDFC00, - 0x14FD5B40, 0x14FCBA80, 0x14FC19C0, - 0x14FB7900, 0x14FAD840, 0x14FA3780, - 0x14F996C0, 0x14F8F600, 0x14F85540, - 0x14F7B480, 0x14F713C0, 0x14F67300, - 0x14F5D240, 0x14F53180, 0x14F490C0, - 0x14F3F000, 0x14F34F40, 0x14F2AE80, - 0x14F20DC0, 0x14F16D00, 0x14F0CC40, - 0x14F02B80, 0x14EF8AC0, 0x14EEEA00, - 0x14EE4940, 0x14EDA880, 0x14ED07C0, - 0x14EC6700, 0x14EBC640, 0x14EB2580, - 0x14EA84C0, 0x14E9E400, 0x14E94340, - 0x14E8A280, 0x14E801C0, 0x14E76100, - 0x14E6C040, 0x14E61F80, 0x14E57EC0, - 0x14E4DE00, 0x14E43D40, 0x14E39C80, - 0x14E2FBC0, 0x14E25B00, 0x14E1BA40, - 0x14E11980, 0x14E078C0, 0x14DFD800, - 0x14DF3740, 0x14DE9680, 0x14DDF5C0, - 0x14DD5500, 0x14DCB440, 0x14DC1380, - 0x14DB72C0, 0x14DAD200, 0x14DA3140, - 0x14D99080, 0x14D8EFC0, 0x14D84F00, - 0x14D7AE40, 0x14D70D80, 0x14D66CC0, - 0x14D5CC00, 0x14D52B40, 0x14D48A80, - 0x14D3E9C0, 0x14D34900, 0x14D2A840, - 0x14D20780, 0x14D166C0, 0x14D0C600, - 0x14D02540, 0x14CF8480, 0x14CEE3C0, - 0x14CE4300, 0x14CDA240, 0x14CD0180, - 0x14CC60C0, 0x14CBC000, 0x14CB1F40, - 0x14CA7E80, 0x14C9DDC0, 0x14C93D00, - 0x14C89C40, 0x14C7FB80, 0x14C75AC0, - 0x14C6BA00, 0x14C61940, 0x14C57880, - 0x14C4D7C0, 0x14C43700, 0x14C39640, - 0x14C2F580, 0x14C254C0, 0x14C1B400, - 0x14C11340, 0x14C07280, 0x14BFD1C0, - 0x14BF3100, 0x14BE9040, 0x14BDEF80, - 0x14BD4EC0, 0x14BCAE00, 0x14BC0D40, - 0x14BB6C80, 0x14BACBC0, 0x14BA2B00, - 0x14B98A40, 0x14B8E980, 0x14B848C0, - 0x14B7A800, 0x14B70740, 0x14B66680, - 0x14B5C5C0, 0x14B52500, 0x14B48440, - 0x14B3E380, 0x14B342C0, 0x14B2A200, - 0x14B20140, 0x14B16080, 0x14B0BFC0, - 0x14B01F00, 0x14AF7E40, 0x14AEDD80, - 0x14AE3CC0, 0x14AD9C00, 0x14ACFB40, - 0x14AC5A80, 0x14ABB9C0, 0x14AB1900, - 0x14AA7840, 0x14A9D780, 0x14A936C0, - 0x14A89600, 0x14A7F540, 0x14A75480, - 0x14A6B3C0, 0x14A61300, 0x14A57240, - 0x14A4D180, 0x14A430C0, 0x14A39000, - 0x14A2EF40, 0x14A24E80, 0x14A1ADC0, - 0x14A10D00, 0x14A06C40, 0x149FCB80, - 0x149F2AC0, 0x149E8A00, 0x149DE940, - 0x149D4880, 0x149CA7C0, 0x149C0700, - 0x149B6640, 0x149AC580, 0x149A24C0, - 0x14998400, 0x1498E340, 0x14984280, - 0x1497A1C0, 0x14970100, 0x14966040, - 0x1495BF80, 0x14951EC0, 0x14947E00, - 0x1493DD40, 0x14933C80, 0x14929BC0, - 0x1491FB00, 0x14915A40, 0x1490B980, - 0x149018C0, 0x148F7800, 0x148ED740, - 0x148E3680, 0x148D95C0, 0x148CF500, - 0x148C5440, 0x148BB380, 0x148B12C0, - 0x148A7200, 0x1489D140, 0x14893080, - 0x14888FC0, 0x1487EF00, 0x14874E40, - 0x1486AD80, 0x14860CC0, 0x14856C00, - 0x1484CB40, 0x14842A80, 0x148389C0, - 0x1482E900, 0x14824840, 0x1481A780, - 0x148106C0, 0x14806600, 0x147FC540, - 0x147F2480, 0x147E83C0, 0x147DE300, - 0x147D4240, 0x147CA180, 0x147C00C0, - 0x147B6000, 0x147ABF40, 0x147A1E80, - 0x14797DC0, 0x1478DD00, 0x14783C40, - 0x14779B80, 0x1476FAC0, 0x14765A00, - 0x1475B940, 0x14751880, 0x147477C0, - 0x1473D700, 0x14733640, 0x14729580, - 0x1471F4C0, 0x14715400, 0x1470B340, - 0x14701280, 0x146F71C0, 0x146ED100, - 0x146E3040, 0x146D8F80, 0x146CEEC0, - 0x146C4E00, 0x146BAD40, 0x146B0C80, - 0x146A6BC0, 0x1469CB00, 0x14692A40, - 0x14688980, 0x1467E8C0, 0x14674800, - 0x1466A740, 0x14660680, 0x146565C0, - 0x1464C500, 0x14642440, 0x14638380, - 0x1462E2C0, 0x14624200, 0x1461A140, - 0x14610080, 0x14605FC0, 0x145FBF00, - 0x145F1E40, 0x145E7D80, 0x145DDCC0, - 0x145D3C00, 0x145C9B40, 0x145BFA80, - 0x145B59C0, 0x145AB900, 0x145A1840, - 0x14597780, 0x1458D6C0, 0x14583600, - 0x14579540, 0x1456F480, 0x145653C0, - 0x1455B300, 0x14551240, 0x14547180, - 0x1453D0C0, 0x14533000, 0x14528F40, - 0x1451EE80, 0x14514DC0, 0x1450AD00, - 0x14500C40, 0x144F6B80, 0x144ECAC0, - 0x144E2A00, 0x144D8940, 0x144CE880, - 0x144C47C0, 0x144BA700, 0x144B0640, - 0x144A6580, 0x1449C4C0, 0x14492400, - 0x14488340, 0x1447E280, 0x144741C0, - 0x1446A100, 0x14460040, 0x14455F80, - 0x1444BEC0, 0x14441E00, 0x14437D40, - 0x1442DC80, 0x14423BC0, 0x14419B00, - 0x1440FA40, 0x14405980, 0x143FB8C0, - 0x143F1800, 0x143E7740, 0x143DD680, - 0x143D35C0, 0x143C9500, 0x143BF440, - 0x143B5380, 0x143AB2C0, 0x143A1200, - 0x14397140, 0x1438D080, 0x14382FC0, - 0x14378F00, 0x1436EE40, 0x14364D80, - 0x1435ACC0, 0x14350C00, 0x14346B40, - 0x1433CA80, 0x143329C0, 0x14328900, - 0x1431E840, 0x14314780, 0x1430A6C0, - 0x14300600, 0x142F6540, 0x142EC480, - 0x142E23C0, 0x142D8300, 0x142CE240, - 0x142C4180, 0x142BA0C0, 0x142B0000, - 0x142A5F40, 0x1429BE80, 0x14291DC0, - 0x14287D00, 0x1427DC40, 0x14273B80, - 0x14269AC0, 0x1425FA00, 0x14255940, - 0x1424B880, 0x142417C0, 0x14237700, - 0x1422D640, 0x14223580, 0x142194C0, - 0x1420F400, 0x14205340, 0x141FB280, - 0x141F11C0, 0x141E7100, 0x141DD040, - 0x141D2F80, 0x141C8EC0, 0x141BEE00, - 0x141B4D40, 0x141AAC80, 0x141A0BC0, - 0x14196B00, 0x1418CA40, 0x14182980, - 0x141788C0, 0x1416E800, 0x14164740, - 0x1415A680, 0x141505C0, 0x14146500, - 0x1413C440, 0x14132380, 0x141282C0, - 0x1411E200, 0x14114140, 0x1410A080, - 0x140FFFC0, 0x140F5F00, 0x140EBE40, - 0x140E1D80, 0x140D7CC0, 0x140CDC00, - 0x140C3B40, 0x140B9A80, 0x140AF9C0, - 0x140A5900, 0x1409B840, 0x14091780, - 0x140876C0, 0x1407D600, 0x14073540, - 0x14069480, 0x1405F3C0, 0x14055300, - 0x1404B240, 0x14041180, 0x140370C0, - 0x1402D000, 0x14022F40, 0x14018E80, - 0x1400EDC0, 0x14004D00, 0x13FFAC40, - 0x13FF0B80, 0x13FE6AC0, 0x13FDCA00, - 0x13FD2940, 0x13FC8880, 0x13FBE7C0, - 0x13FB4700, 0x13FAA640, 0x13FA0580, - 0x13F964C0, 0x13F8C400, 0x13F82340, - 0x13F78280, 0x13F6E1C0, 0x13F64100, - 0x13F5A040, 0x13F4FF80, 0x13F45EC0, - 0x13F3BE00, 0x13F31D40, 0x13F27C80, - 0x13F1DBC0, 0x13F13B00, 0x13F09A40, - 0x13EFF980, 0x13EF58C0, 0x13EEB800, - 0x13EE1740, 0x13ED7680, 0x13ECD5C0, - 0x13EC3500, 0x13EB9440, 0x13EAF380, - 0x13EA52C0, 0x13E9B200, 0x13E91140, - 0x13E87080, 0x13E7CFC0, 0x13E72F00, - 0x13E68E40, 0x13E5ED80, 0x13E54CC0, - 0x13E4AC00, 0x13E40B40, 0x13E36A80, - 0x13E2C9C0, 0x13E22900, 0x13E18840, - 0x13E0E780, 0x13E046C0, 0x13DFA600, - 0x13DF0540, 0x13DE6480, 0x13DDC3C0, - 0x13DD2300, 0x13DC8240, 0x13DBE180, - 0x13DB40C0, 0x13DAA000, 0x13D9FF40, - 0x13D95E80, 0x13D8BDC0, 0x13D81D00, - 0x13D77C40, 0x13D6DB80, 0x13D63AC0, - 0x13D59A00, 0x13D4F940, 0x13D45880, - 0x13D3B7C0, 0x13D31700, 0x13D27640, - 0x13D1D580, 0x13D134C0, 0x13D09400, - 0x13CFF340, 0x13CF5280, 0x13CEB1C0, - 0x13CE1100, 0x13CD7040, 0x13CCCF80, - 0x13CC2EC0, 0x13CB8E00, 0x13CAED40, - 0x13CA4C80, 0x13C9ABC0, 0x13C90B00, - 0x13C86A40, 0x13C7C980, 0x13C728C0, - 0x13C68800, 0x13C5E740, 0x13C54680, - 0x13C4A5C0, 0x13C40500, 0x13C36440, - 0x13C2C380, 0x13C222C0, 0x13C18200, - 0x13C0E140, 0x13C04080, 0x13BF9FC0, - 0x13BEFF00, 0x13BE5E40, 0x13BDBD80, - 0x13BD1CC0, 0x13BC7C00, 0x13BBDB40, - 0x13BB3A80, 0x13BA99C0, 0x13B9F900, - 0x13B95840, 0x13B8B780, 0x13B816C0, - 0x13B77600, 0x13B6D540, 0x13B63480, - 0x13B593C0, 0x13B4F300, 0x13B45240, - 0x13B3B180, 0x13B310C0, 0x13B27000, - 0x13B1CF40, 0x13B12E80, 0x13B08DC0, - 0x13AFED00, 0x13AF4C40, 0x13AEAB80, - 0x13AE0AC0, 0x13AD6A00, 0x13ACC940, - 0x13AC2880, 0x13AB87C0, 0x13AAE700, - 0x13AA4640, 0x13A9A580, 0x13A904C0, - 0x13A86400, 0x13A7C340, 0x13A72280, - 0x13A681C0, 0x13A5E100, 0x13A54040, - 0x13A49F80, 0x13A3FEC0, 0x13A35E00, - 0x13A2BD40, 0x13A21C80, 0x13A17BC0, - 0x13A0DB00, 0x13A03A40, 0x139F9980, - 0x139EF8C0, 0x139E5800, 0x139DB740, - 0x139D1680, 0x139C75C0, 0x139BD500, - 0x139B3440, 0x139A9380, 0x1399F2C0, - 0x13995200, 0x1398B140, 0x13981080, - 0x13976FC0, 0x1396CF00, 0x13962E40, - 0x13958D80, 0x1394ECC0, 0x13944C00, - 0x1393AB40, 0x13930A80, 0x139269C0, - 0x1391C900, 0x13912840, 0x13908780, - 0x138FE6C0, 0x138F4600, 0x138EA540, - 0x138E0480, 0x138D63C0, 0x138CC300, - 0x138C2240, 0x138B8180, 0x138AE0C0, - 0x138A4000, 0x13899F40, 0x1388FE80, - 0x13885DC0, 0x1387BD00, 0x13871C40, - 0x13867B80, 0x1385DAC0, 0x13853A00, - 0x13849940, 0x1383F880, 0x138357C0, - 0x1382B700, 0x13821640, 0x13817580, - 0x1380D4C0, 0x13803400, 0x137F9340, - 0x137EF280, 0x137E51C0, 0x137DB100, - 0x137D1040, 0x137C6F80, 0x137BCEC0, - 0x137B2E00, 0x137A8D40, 0x1379EC80, - 0x13794BC0, 0x1378AB00, 0x13780A40, - 0x13776980, 0x1376C8C0, 0x13762800, - 0x13758740, 0x1374E680, 0x137445C0, - 0x1373A500, 0x13730440, 0x13726380, - 0x1371C2C0, 0x13712200, 0x13708140, - 0x136FE080, 0x136F3FC0, 0x136E9F00, - 0x136DFE40, 0x136D5D80, 0x136CBCC0, - 0x136C1C00, 0x136B7B40, 0x136ADA80, - 0x136A39C0, 0x13699900, 0x1368F840, - 0x13685780, 0x1367B6C0, 0x13671600, - 0x13667540, 0x1365D480, 0x136533C0, - 0x13649300, 0x1363F240, 0x13635180, - 0x1362B0C0, 0x13621000, 0x13616F40, - 0x1360CE80, 0x13602DC0, 0x135F8D00, - 0x135EEC40, 0x135E4B80, 0x135DAAC0, - 0x135D0A00, 0x135C6940, 0x135BC880, - 0x135B27C0, 0x135A8700, 0x1359E640, - 0x13594580, 0x1358A4C0, 0x13580400, - 0x13576340, 0x1356C280, 0x135621C0, - 0x13558100, 0x1354E040, 0x13543F80, - 0x13539EC0, 0x1352FE00, 0x13525D40, - 0x1351BC80, 0x13511BC0, 0x13507B00, - 0x134FDA40, 0x134F3980, 0x134E98C0, - 0x134DF800, 0x134D5740, 0x134CB680, - 0x134C15C0, 0x134B7500, 0x134AD440, - 0x134A3380, 0x134992C0, 0x1348F200, - 0x13485140, 0x1347B080, 0x13470FC0, - 0x13466F00, 0x1345CE40, 0x13452D80, - 0x13448CC0, 0x1343EC00, 0x13434B40, - 0x1342AA80, 0x134209C0, 0x13416900, - 0x1340C840, 0x13402780, 0x133F86C0, - 0x133EE600, 0x133E4540, 0x133DA480, - 0x133D03C0, 0x133C6300, 0x133BC240, - 0x133B2180, 0x133A80C0, 0x1339E000, - 0x13393F40, 0x13389E80, 0x1337FDC0, - 0x13375D00, 0x1336BC40, 0x13361B80, - 0x13357AC0, 0x1334DA00, 0x13343940, - 0x13339880, 0x1332F7C0, 0x13325700, - 0x1331B640, 0x13311580, 0x133074C0, - 0x132FD400, 0x132F3340, 0x132E9280, - 0x132DF1C0, 0x132D5100, 0x132CB040, - 0x132C0F80, 0x132B6EC0, 0x132ACE00, - 0x132A2D40, 0x13298C80, 0x1328EBC0, - 0x13284B00, 0x1327AA40, 0x13270980, - 0x132668C0, 0x1325C800, 0x13252740, - 0x13248680, 0x1323E5C0, 0x13234500, - 0x1322A440, 0x13220380, 0x132162C0, - 0x1320C200, 0x13202140, 0x131F8080, - 0x131EDFC0, 0x131E3F00, 0x131D9E40, - 0x131CFD80, 0x131C5CC0, 0x131BBC00, - 0x131B1B40, 0x131A7A80, 0x1319D9C0, - 0x13193900, 0x13189840, 0x1317F780, - 0x131756C0, 0x1316B600, 0x13161540, - 0x13157480, 0x1314D3C0, 0x13143300, - 0x13139240, 0x1312F180, 0x131250C0, - 0x1311B000, 0x13110F40, 0x13106E80, - 0x130FCDC0, 0x130F2D00, 0x130E8C40, - 0x130DEB80, 0x130D4AC0, 0x130CAA00, - 0x130C0940, 0x130B6880, 0x130AC7C0, - 0x130A2700, 0x13098640, 0x1308E580, - 0x130844C0, 0x1307A400, 0x13070340, - 0x13066280, 0x1305C1C0, 0x13052100, - 0x13048040, 0x1303DF80, 0x13033EC0, - 0x13029E00, 0x1301FD40, 0x13015C80, - 0x1300BBC0, 0x13001B00, 0x12FF7A40, - 0x12FED980, 0x12FE38C0, 0x12FD9800, - 0x12FCF740, 0x12FC5680, 0x12FBB5C0, - 0x12FB1500, 0x12FA7440, 0x12F9D380, - 0x12F932C0, 0x12F89200, 0x12F7F140, - 0x12F75080, 0x12F6AFC0, 0x12F60F00, - 0x12F56E40, 0x12F4CD80, 0x12F42CC0, - 0x12F38C00, 0x12F2EB40, 0x12F24A80, - 0x12F1A9C0, 0x12F10900, 0x12F06840, - 0x12EFC780, 0x12EF26C0, 0x12EE8600, - 0x12EDE540, 0x12ED4480, 0x12ECA3C0, - 0x12EC0300, 0x12EB6240, 0x12EAC180, - 0x12EA20C0, 0x12E98000, 0x12E8DF40, - 0x12E83E80, 0x12E79DC0, 0x12E6FD00, - 0x12E65C40, 0x12E5BB80, 0x12E51AC0, - 0x12E47A00, 0x12E3D940, 0x12E33880, - 0x12E297C0, 0x12E1F700, 0x12E15640, - 0x12E0B580, 0x12E014C0, 0x12DF7400, - 0x12DED340, 0x12DE3280, 0x12DD91C0, - 0x12DCF100, 0x12DC5040, 0x12DBAF80, - 0x12DB0EC0, 0x12DA6E00, 0x12D9CD40, - 0x12D92C80, 0x12D88BC0, 0x12D7EB00, - 0x12D74A40, 0x12D6A980, 0x12D608C0, - 0x12D56800, 0x12D4C740, 0x12D42680, - 0x12D385C0, 0x12D2E500, 0x12D24440, - 0x12D1A380, 0x12D102C0, 0x12D06200, - 0x12CFC140, 0x12CF2080, 0x12CE7FC0, - 0x12CDDF00, 0x12CD3E40, 0x12CC9D80, - 0x12CBFCC0, 0x12CB5C00, 0x12CABB40, - 0x12CA1A80, 0x12C979C0, 0x12C8D900, - 0x12C83840, 0x12C79780, 0x12C6F6C0, - 0x12C65600, 0x12C5B540, 0x12C51480, - 0x12C473C0, 0x12C3D300, 0x12C33240, - 0x12C29180, 0x12C1F0C0, 0x12C15000, - 0x12C0AF40, 0x12C00E80, 0x12BF6DC0, - 0x12BECD00, 0x12BE2C40, 0x12BD8B80, - 0x12BCEAC0, 0x12BC4A00, 0x12BBA940, - 0x12BB0880, 0x12BA67C0, 0x12B9C700, - 0x12B92640, 0x12B88580, 0x12B7E4C0, - 0x12B74400, 0x12B6A340, 0x12B60280, - 0x12B561C0, 0x12B4C100, 0x12B42040, - 0x12B37F80, 0x12B2DEC0, 0x12B23E00, - 0x12B19D40, 0x12B0FC80, 0x12B05BC0, - 0x12AFBB00, 0x12AF1A40, 0x12AE7980, - 0x12ADD8C0, 0x12AD3800, 0x12AC9740, - 0x12ABF680, 0x12AB55C0, 0x12AAB500, - 0x12AA1440, 0x12A97380, 0x12A8D2C0, - 0x12A83200, 0x12A79140, 0x12A6F080, - 0x12A64FC0, 0x12A5AF00, 0x12A50E40, - 0x12A46D80, 0x12A3CCC0, 0x12A32C00, - 0x12A28B40, 0x12A1EA80, 0x12A149C0, - 0x12A0A900, 0x12A00840, 0x129F6780, - 0x129EC6C0, 0x129E2600, 0x129D8540, - 0x129CE480, 0x129C43C0, 0x129BA300, - 0x129B0240, 0x129A6180, 0x1299C0C0, - 0x12992000, 0x12987F40, 0x1297DE80, - 0x12973DC0, 0x12969D00, 0x1295FC40, - 0x12955B80, 0x1294BAC0, 0x12941A00, - 0x12937940, 0x1292D880, 0x129237C0, - 0x12919700, 0x1290F640, 0x12905580, - 0x128FB4C0, 0x128F1400, 0x128E7340, - 0x128DD280, 0x128D31C0, 0x128C9100, - 0x128BF040, 0x128B4F80, 0x128AAEC0, - 0x128A0E00, 0x12896D40, 0x1288CC80, - 0x12882BC0, 0x12878B00, 0x1286EA40, - 0x12864980, 0x1285A8C0, 0x12850800, - 0x12846740, 0x1283C680, 0x128325C0, - 0x12828500, 0x1281E440, 0x12814380, - 0x1280A2C0, 0x12800200, 0x127F6140, - 0x127EC080, 0x127E1FC0, 0x127D7F00, - 0x127CDE40, 0x127C3D80, 0x127B9CC0, - 0x127AFC00, 0x127A5B40, 0x1279BA80, - 0x127919C0, 0x12787900, 0x1277D840, - 0x12773780, 0x127696C0, 0x1275F600, - 0x12755540, 0x1274B480, 0x127413C0, - 0x12737300, 0x1272D240, 0x12723180, - 0x127190C0, 0x1270F000, 0x12704F40, - 0x126FAE80, 0x126F0DC0, 0x126E6D00, - 0x126DCC40, 0x126D2B80, 0x126C8AC0, - 0x126BEA00, 0x126B4940, 0x126AA880, - 0x126A07C0, 0x12696700, 0x1268C640, - 0x12682580, 0x126784C0, 0x1266E400, - 0x12664340, 0x1265A280, 0x126501C0, - 0x12646100, 0x1263C040, 0x12631F80, - 0x12627EC0, 0x1261DE00, 0x12613D40, - 0x12609C80, 0x125FFBC0, 0x125F5B00, - 0x125EBA40, 0x125E1980, 0x125D78C0, - 0x125CD800, 0x125C3740, 0x125B9680, - 0x125AF5C0, 0x125A5500, 0x1259B440, - 0x12591380, 0x125872C0, 0x1257D200, - 0x12573140, 0x12569080, 0x1255EFC0, - 0x12554F00, 0x1254AE40, 0x12540D80, - 0x12536CC0, 0x1252CC00, 0x12522B40, - 0x12518A80, 0x1250E9C0, 0x12504900, - 0x124FA840, 0x124F0780, 0x124E66C0, - 0x124DC600, 0x124D2540, 0x124C8480, - 0x124BE3C0, 0x124B4300, 0x124AA240, - 0x124A0180, 0x124960C0, 0x1248C000, - 0x12481F40, 0x12477E80, 0x1246DDC0, - 0x12463D00, 0x12459C40, 0x1244FB80, - 0x12445AC0, 0x1243BA00, 0x12431940, - 0x12427880, 0x1241D7C0, 0x12413700, - 0x12409640, 0x123FF580, 0x123F54C0, - 0x123EB400, 0x123E1340, 0x123D7280, - 0x123CD1C0, 0x123C3100, 0x123B9040, - 0x123AEF80, 0x123A4EC0, 0x1239AE00, - 0x12390D40, 0x12386C80, 0x1237CBC0, - 0x12372B00, 0x12368A40, 0x1235E980, - 0x123548C0, 0x1234A800, 0x12340740, - 0x12336680, 0x1232C5C0, 0x12322500, - 0x12318440, 0x1230E380, 0x123042C0, - 0x122FA200, 0x122F0140, 0x122E6080, - 0x122DBFC0, 0x122D1F00, 0x122C7E40, - 0x122BDD80, 0x122B3CC0, 0x122A9C00, - 0x1229FB40, 0x12295A80, 0x1228B9C0, - 0x12281900, 0x12277840, 0x1226D780, - 0x122636C0, 0x12259600, 0x1224F540, - 0x12245480, 0x1223B3C0, 0x12231300, - 0x12227240, 0x1221D180, 0x122130C0, - 0x12209000, 0x121FEF40, 0x121F4E80, - 0x121EADC0, 0x121E0D00, 0x121D6C40, - 0x121CCB80, 0x121C2AC0, 0x121B8A00, - 0x121AE940, 0x121A4880, 0x1219A7C0, - 0x12190700, 0x12186640, 0x1217C580, - 0x121724C0, 0x12168400, 0x1215E340, - 0x12154280, 0x1214A1C0, 0x12140100, - 0x12136040, 0x1212BF80, 0x12121EC0, - 0x12117E00, 0x1210DD40, 0x12103C80, - 0x120F9BC0, 0x120EFB00, 0x120E5A40, - 0x120DB980, 0x120D18C0, 0x120C7800, - 0x120BD740, 0x120B3680, 0x120A95C0, - 0x1209F500, 0x12095440, 0x1208B380, - 0x120812C0, 0x12077200, 0x1206D140, - 0x12063080, 0x12058FC0, 0x1204EF00, - 0x12044E40, 0x1203AD80, 0x12030CC0, - 0x12026C00, 0x1201CB40, 0x12012A80, - 0x120089C0, 0x11FFE900, 0x11FF4840, - 0x11FEA780, 0x11FE06C0, 0x11FD6600, - 0x11FCC540, 0x11FC2480, 0x11FB83C0, - 0x11FAE300, 0x11FA4240, 0x11F9A180, - 0x11F900C0, 0x11F86000, 0x11F7BF40, - 0x11F71E80, 0x11F67DC0, 0x11F5DD00, - 0x11F53C40, 0x11F49B80, 0x11F3FAC0, - 0x11F35A00, 0x11F2B940, 0x11F21880, - 0x11F177C0, 0x11F0D700, 0x11F03640, - 0x11EF9580, 0x11EEF4C0, 0x11EE5400, - 0x11EDB340, 0x11ED1280, 0x11EC71C0, - 0x11EBD100, 0x11EB3040, 0x11EA8F80, - 0x11E9EEC0, 0x11E94E00, 0x11E8AD40, - 0x11E80C80, 0x11E76BC0, 0x11E6CB00, - 0x11E62A40, 0x11E58980, 0x11E4E8C0, - 0x11E44800, 0x11E3A740, 0x11E30680, - 0x11E265C0, 0x11E1C500, 0x11E12440, - 0x11E08380, 0x11DFE2C0, 0x11DF4200, - 0x11DEA140, 0x11DE0080, 0x11DD5FC0, - 0x11DCBF00, 0x11DC1E40, 0x11DB7D80, - 0x11DADCC0, 0x11DA3C00, 0x11D99B40, - 0x11D8FA80, 0x11D859C0, 0x11D7B900, - 0x11D71840, 0x11D67780, 0x11D5D6C0, - 0x11D53600, 0x11D49540, 0x11D3F480, - 0x11D353C0, 0x11D2B300, 0x11D21240, - 0x11D17180, 0x11D0D0C0, 0x11D03000, - 0x11CF8F40, 0x11CEEE80, 0x11CE4DC0, - 0x11CDAD00, 0x11CD0C40, 0x11CC6B80, - 0x11CBCAC0, 0x11CB2A00, 0x11CA8940, - 0x11C9E880, 0x11C947C0, 0x11C8A700, - 0x11C80640, 0x11C76580, 0x11C6C4C0, - 0x11C62400, 0x11C58340, 0x11C4E280, - 0x11C441C0, 0x11C3A100, 0x11C30040, - 0x11C25F80, 0x11C1BEC0, 0x11C11E00, - 0x11C07D40, 0x11BFDC80, 0x11BF3BC0, - 0x11BE9B00, 0x11BDFA40, 0x11BD5980, - 0x11BCB8C0, 0x11BC1800, 0x11BB7740, - 0x11BAD680, 0x11BA35C0, 0x11B99500, - 0x11B8F440, 0x11B85380, 0x11B7B2C0, - 0x11B71200, 0x11B67140, 0x11B5D080, - 0x11B52FC0, 0x11B48F00, 0x11B3EE40, - 0x11B34D80, 0x11B2ACC0, 0x11B20C00, - 0x11B16B40, 0x11B0CA80, 0x11B029C0, - 0x11AF8900, 0x11AEE840, 0x11AE4780, - 0x11ADA6C0, 0x11AD0600, 0x11AC6540, - 0x11ABC480, 0x11AB23C0, 0x11AA8300, - 0x11A9E240, 0x11A94180, 0x11A8A0C0, - 0x11A80000, 0x11A767C0, 0x11A6CF80, - 0x11A63740, 0x11A59F00, 0x11A506C0, - 0x11A46E80, 0x11A3D640, 0x11A33E00, - 0x11A2A5C0, 0x11A20D80, 0x11A17540, - 0x11A0DD00, 0x11A044C0, 0x119FAC80, - 0x119F1440, 0x119E7C00, 0x119DE3C0, - 0x119D4B80, 0x119CB340, 0x119C1B00, - 0x119B82C0, 0x119AEA80, 0x119A5240, - 0x1199BA00, 0x119921C0, 0x11988980, - 0x1197F140, 0x11975900, 0x1196C0C0, - 0x11962880, 0x11959040, 0x1194F800, - 0x11945FC0, 0x1193C780, 0x11932F40, - 0x11929700, 0x1191FEC0, 0x11916680, - 0x1190CE40, 0x11903600, 0x118F9DC0, - 0x118F0580, 0x118E6D40, 0x118DD500, - 0x118D3CC0, 0x118CA480, 0x118C0C40, - 0x118B7400, 0x118ADBC0, 0x118A4380, - 0x1189AB40, 0x11891300, 0x11887AC0, - 0x1187E280, 0x11874A40, 0x1186B200, - 0x118619C0, 0x11858180, 0x1184E940, - 0x11845100, 0x1183B8C0, 0x11832080, - 0x11828840, 0x1181F000, 0x118157C0, - 0x1180BF80, 0x11802740, 0x117F8F00, - 0x117EF6C0, 0x117E5E80, 0x117DC640, - 0x117D2E00, 0x117C95C0, 0x117BFD80, - 0x117B6540, 0x117ACD00, 0x117A34C0, - 0x11799C80, 0x11790440, 0x11786C00, - 0x1177D3C0, 0x11773B80, 0x1176A340, - 0x11760B00, 0x117572C0, 0x1174DA80, - 0x11744240, 0x1173AA00, 0x117311C0, - 0x11727980, 0x1171E140, 0x11714900, - 0x1170B0C0, 0x11701880, 0x116F8040, - 0x116EE800, 0x116E4FC0, 0x116DB780, - 0x116D1F40, 0x116C8700, 0x116BEEC0, - 0x116B5680, 0x116ABE40, 0x116A2600, - 0x11698DC0, 0x1168F580, 0x11685D40, - 0x1167C500, 0x11672CC0, 0x11669480, - 0x1165FC40, 0x11656400, 0x1164CBC0, - 0x11643380, 0x11639B40, 0x11630300, - 0x11626AC0, 0x1161D280, 0x11613A40, - 0x1160A200, 0x116009C0, 0x115F7180, - 0x115ED940, 0x115E4100, 0x115DA8C0, - 0x115D1080, 0x115C7840, 0x115BE000, - 0x115B47C0, 0x115AAF80, 0x115A1740, - 0x11597F00, 0x1158E6C0, 0x11584E80, - 0x1157B640, 0x11571E00, 0x115685C0, - 0x1155ED80, 0x11555540, 0x1154BD00, - 0x115424C0, 0x11538C80, 0x1152F440, - 0x11525C00, 0x1151C3C0, 0x11512B80, - 0x11509340, 0x114FFB00, 0x114F62C0, - 0x114ECA80, 0x114E3240, 0x114D9A00, - 0x114D01C0, 0x114C6980, 0x114BD140, - 0x114B3900, 0x114AA0C0, 0x114A0880, - 0x11497040, 0x1148D800, 0x11483FC0, - 0x1147A780, 0x11470F40, 0x11467700, - 0x1145DEC0, 0x11454680, 0x1144AE40, - 0x11441600, 0x11437DC0, 0x1142E580, - 0x11424D40, 0x1141B500, 0x11411CC0, - 0x11408480, 0x113FEC40, 0x113F5400, - 0x113EBBC0, 0x113E2380, 0x113D8B40, - 0x113CF300, 0x113C5AC0, 0x113BC280, - 0x113B2A40, 0x113A9200, 0x1139F9C0, - 0x11396180, 0x1138C940, 0x11383100, - 0x113798C0, 0x11370080, 0x11366840, - 0x1135D000, 0x113537C0, 0x11349F80, - 0x11340740, 0x11336F00, 0x1132D6C0, - 0x11323E80, 0x1131A640, 0x11310E00, - 0x113075C0, 0x112FDD80, 0x112F4540, - 0x112EAD00, 0x112E14C0, 0x112D7C80, - 0x112CE440, 0x112C4C00, 0x112BB3C0, - 0x112B1B80, 0x112A8340, 0x1129EB00, - 0x112952C0, 0x1128BA80, 0x11282240, - 0x11278A00, 0x1126F1C0, 0x11265980, - 0x1125C140, 0x11252900, 0x112490C0, - 0x1123F880, 0x11236040, 0x1122C800, - 0x11222FC0, 0x11219780, 0x1120FF40, - 0x11206700, 0x111FCEC0, 0x111F3680, - 0x111E9E40, 0x111E0600, 0x111D6DC0, - 0x111CD580, 0x111C3D40, 0x111BA500, - 0x111B0CC0, 0x111A7480, 0x1119DC40, - 0x11194400, 0x1118ABC0, 0x11181380, - 0x11177B40, 0x1116E300, 0x11164AC0, - 0x1115B280, 0x11151A40, 0x11148200, - 0x1113E9C0, 0x11135180, 0x1112B940, - 0x11122100, 0x111188C0, 0x1110F080, - 0x11105840, 0x110FC000, 0x110F27C0, - 0x110E8F80, 0x110DF740, 0x110D5F00, - 0x110CC6C0, 0x110C2E80, 0x110B9640, - 0x110AFE00, 0x110A65C0, 0x1109CD80, - 0x11093540, 0x11089D00, 0x110804C0, - 0x11076C80, 0x1106D440, 0x11063C00, - 0x1105A3C0, 0x11050B80, 0x11047340, - 0x1103DB00, 0x110342C0, 0x1102AA80, - 0x11021240, 0x11017A00, 0x1100E1C0, - 0x11004980, 0x10FFB140, 0x10FF1900, - 0x10FE80C0, 0x10FDE880, 0x10FD5040, - 0x10FCB800, 0x10FC1FC0, 0x10FB8780, - 0x10FAEF40, 0x10FA5700, 0x10F9BEC0, - 0x10F92680, 0x10F88E40, 0x10F7F600, - 0x10F75DC0, 0x10F6C580, 0x10F62D40, - 0x10F59500, 0x10F4FCC0, 0x10F46480, - 0x10F3CC40, 0x10F33400, 0x10F29BC0, - 0x10F20380, 0x10F16B40, 0x10F0D300, - 0x10F03AC0, 0x10EFA280, 0x10EF0A40, - 0x10EE7200, 0x10EDD9C0, 0x10ED4180, - 0x10ECA940, 0x10EC1100, 0x10EB78C0, - 0x10EAE080, 0x10EA4840, 0x10E9B000, - 0x10E917C0, 0x10E87F80, 0x10E7E740, - 0x10E74F00, 0x10E6B6C0, 0x10E61E80, - 0x10E58640, 0x10E4EE00, 0x10E455C0, - 0x10E3BD80, 0x10E32540, 0x10E28D00, - 0x10E1F4C0, 0x10E15C80, 0x10E0C440, - 0x10E02C00, 0x10DF93C0, 0x10DEFB80, - 0x10DE6340, 0x10DDCB00, 0x10DD32C0, - 0x10DC9A80, 0x10DC0240, 0x10DB6A00, - 0x10DAD1C0, 0x10DA3980, 0x10D9A140, - 0x10D90900, 0x10D870C0, 0x10D7D880, - 0x10D74040, 0x10D6A800, 0x10D60FC0, - 0x10D57780, 0x10D4DF40, 0x10D44700, - 0x10D3AEC0, 0x10D31680, 0x10D27E40, - 0x10D1E600, 0x10D14DC0, 0x10D0B580, - 0x10D01D40, 0x10CF8500, 0x10CEECC0, - 0x10CE5480, 0x10CDBC40, 0x10CD2400, - 0x10CC8BC0, 0x10CBF380, 0x10CB5B40, - 0x10CAC300, 0x10CA2AC0, 0x10C99280, - 0x10C8FA40, 0x10C86200, 0x10C7C9C0, - 0x10C73180, 0x10C69940, 0x10C60100, - 0x10C568C0, 0x10C4D080, 0x10C43840, - 0x10C3A000, 0x10C307C0, 0x10C26F80, - 0x10C1D740, 0x10C13F00, 0x10C0A6C0, - 0x10C00E80, 0x10BF7640, 0x10BEDE00, - 0x10BE45C0, 0x10BDAD80, 0x10BD1540, - 0x10BC7D00, 0x10BBE4C0, 0x10BB4C80, - 0x10BAB440, 0x10BA1C00, 0x10B983C0, - 0x10B8EB80, 0x10B85340, 0x10B7BB00, - 0x10B722C0, 0x10B68A80, 0x10B5F240, - 0x10B55A00, 0x10B4C1C0, 0x10B42980, - 0x10B39140, 0x10B2F900, 0x10B260C0, - 0x10B1C880, 0x10B13040, 0x10B09800, - 0x10AFFFC0, 0x10AF6780, 0x10AECF40, - 0x10AE3700, 0x10AD9EC0, 0x10AD0680, - 0x10AC6E40, 0x10ABD600, 0x10AB3DC0, - 0x10AAA580, 0x10AA0D40, 0x10A97500, - 0x10A8DCC0, 0x10A84480, 0x10A7AC40, - 0x10A71400, 0x10A67BC0, 0x10A5E380, - 0x10A54B40, 0x10A4B300, 0x10A41AC0, - 0x10A38280, 0x10A2EA40, 0x10A25200, - 0x10A1B9C0, 0x10A12180, 0x10A08940, - 0x109FF100, 0x109F58C0, 0x109EC080, - 0x109E2840, 0x109D9000, 0x109CF7C0, - 0x109C5F80, 0x109BC740, 0x109B2F00, - 0x109A96C0, 0x1099FE80, 0x10996640, - 0x1098CE00, 0x109835C0, 0x10979D80, - 0x10970540, 0x10966D00, 0x1095D4C0, - 0x10953C80, 0x1094A440, 0x10940C00, - 0x109373C0, 0x1092DB80, 0x10924340, - 0x1091AB00, 0x109112C0, 0x10907A80, - 0x108FE240, 0x108F4A00, 0x108EB1C0, - 0x108E1980, 0x108D8140, 0x108CE900, - 0x108C50C0, 0x108BB880, 0x108B2040, - 0x108A8800, 0x1089EFC0, 0x10895780, - 0x1088BF40, 0x10882700, 0x10878EC0, - 0x1086F680, 0x10865E40, 0x1085C600, - 0x10852DC0, 0x10849580, 0x1083FD40, - 0x10836500, 0x1082CCC0, 0x10823480, - 0x10819C40, 0x10810400, 0x10806BC0, - 0x107FD380, 0x107F3B40, 0x107EA300, - 0x107E0AC0, 0x107D7280, 0x107CDA40, - 0x107C4200, 0x107BA9C0, 0x107B1180, - 0x107A7940, 0x1079E100, 0x107948C0, - 0x1078B080, 0x10781840, 0x10778000, - 0x1076E7C0, 0x10764F80, 0x1075B740, - 0x10751F00, 0x107486C0, 0x1073EE80, - 0x10735640, 0x1072BE00, 0x107225C0, - 0x10718D80, 0x1070F540, 0x10705D00, - 0x106FC4C0, 0x106F2C80, 0x106E9440, - 0x106DFC00, 0x106D63C0, 0x106CCB80, - 0x106C3340, 0x106B9B00, 0x106B02C0, - 0x106A6A80, 0x1069D240, 0x10693A00, - 0x1068A1C0, 0x10680980, 0x10677140, - 0x1066D900, 0x106640C0, 0x1065A880, - 0x10651040, 0x10647800, 0x1063DFC0, - 0x10634780, 0x1062AF40, 0x10621700, - 0x10617EC0, 0x1060E680, 0x10604E40, - 0x105FB600, 0x105F1DC0, 0x105E8580, - 0x105DED40, 0x105D5500, 0x105CBCC0, - 0x105C2480, 0x105B8C40, 0x105AF400, - 0x105A5BC0, 0x1059C380, 0x10592B40, - 0x10589300, 0x1057FAC0, 0x10576280, - 0x1056CA40, 0x10563200, 0x105599C0, - 0x10550180, 0x10546940, 0x1053D100, - 0x105338C0, 0x1052A080, 0x10520840, - 0x10517000, 0x1050D7C0, 0x10503F80, - 0x104FA740, 0x104F0F00, 0x104E76C0, - 0x104DDE80, 0x104D4640, 0x104CAE00, - 0x104C15C0, 0x104B7D80, 0x104AE540, - 0x104A4D00, 0x1049B4C0, 0x10491C80, - 0x10488440, 0x1047EC00, 0x104753C0, - 0x1046BB80, 0x10462340, 0x10458B00, - 0x1044F2C0, 0x10445A80, 0x1043C240, - 0x10432A00, 0x104291C0, 0x1041F980, - 0x10416140, 0x1040C900, 0x104030C0, - 0x103F9880, 0x103F0040, 0x103E6800, - 0x103DCFC0, 0x103D3780, 0x103C9F40, - 0x103C0700, 0x103B6EC0, 0x103AD680, - 0x103A3E40, 0x1039A600, 0x10390DC0, - 0x10387580, 0x1037DD40, 0x10374500, - 0x1036ACC0, 0x10361480, 0x10357C40, - 0x1034E400, 0x10344BC0, 0x1033B380, - 0x10331B40, 0x10328300, 0x1031EAC0, - 0x10315280, 0x1030BA40, 0x10302200, - 0x102F89C0, 0x102EF180, 0x102E5940, - 0x102DC100, 0x102D28C0, 0x102C9080, - 0x102BF840, 0x102B6000, 0x102AC7C0, - 0x102A2F80, 0x10299740, 0x1028FF00, - 0x102866C0, 0x1027CE80, 0x10273640, - 0x10269E00, 0x102605C0, 0x10256D80, - 0x1024D540, 0x10243D00, 0x1023A4C0, - 0x10230C80, 0x10227440, 0x1021DC00, - 0x102143C0, 0x1020AB80, 0x10201340, - 0x101F7B00, 0x101EE2C0, 0x101E4A80, - 0x101DB240, 0x101D1A00, 0x101C81C0, - 0x101BE980, 0x101B5140, 0x101AB900, - 0x101A20C0, 0x10198880, 0x1018F040, - 0x10185800, 0x1017BFC0, 0x10172780, - 0x10168F40, 0x1015F700, 0x10155EC0, - 0x1014C680, 0x10142E40, 0x10139600, - 0x1012FDC0, 0x10126580, 0x1011CD40, - 0x10113500, 0x10109CC0, 0x10100480, - 0x100F6C40, 0x100ED400, 0x100E3BC0, - 0x100DA380, 0x100D0B40, 0x100C7300, - 0x100BDAC0, 0x100B4280, 0x100AAA40, - 0x100A1200, 0x100979C0, 0x1008E180, - 0x10084940, 0x1007B100, 0x100718C0, - 0x10068080, 0x1005E840, 0x10055000, - 0x1004B7C0, 0x10041F80, 0x10038740, - 0x1002EF00, 0x100256C0, 0x1001BE80, - 0x10012640, 0x10008E00, 0x0FFFF5C0, - 0x0FFF5D80, 0x0FFEC540, 0x0FFE2D00, - 0x0FFD94C0, 0x0FFCFC80, 0x0FFC6440, - 0x0FFBCC00, 0x0FFB33C0, 0x0FFA9B80, - 0x0FFA0340, 0x0FF96B00, 0x0FF8D2C0, - 0x0FF83A80, 0x0FF7A240, 0x0FF70A00, - 0x0FF671C0, 0x0FF5D980, 0x0FF54140, - 0x0FF4A900, 0x0FF410C0, 0x0FF37880, - 0x0FF2E040, 0x0FF24800, 0x0FF1AFC0, - 0x0FF11780, 0x0FF07F40, 0x0FEFE700, - 0x0FEF4EC0, 0x0FEEB680, 0x0FEE1E40, - 0x0FED8600, 0x0FECEDC0, 0x0FEC5580, - 0x0FEBBD40, 0x0FEB2500, 0x0FEA8CC0, - 0x0FE9F480, 0x0FE95C40, 0x0FE8C400, - 0x0FE82BC0, 0x0FE79380, 0x0FE6FB40, - 0x0FE66300, 0x0FE5CAC0, 0x0FE53280, - 0x0FE49A40, 0x0FE40200, 0x0FE369C0, - 0x0FE2D180, 0x0FE23940, 0x0FE1A100, - 0x0FE108C0, 0x0FE07080, 0x0FDFD840, - 0x0FDF4000, 0x0FDEA7C0, 0x0FDE0F80, - 0x0FDD7740, 0x0FDCDF00, 0x0FDC46C0, - 0x0FDBAE80, 0x0FDB1640, 0x0FDA7E00, - 0x0FD9E5C0, 0x0FD94D80, 0x0FD8B540, - 0x0FD81D00, 0x0FD784C0, 0x0FD6EC80, - 0x0FD65440, 0x0FD5BC00, 0x0FD523C0, - 0x0FD48B80, 0x0FD3F340, 0x0FD35B00, - 0x0FD2C2C0, 0x0FD22A80, 0x0FD19240, - 0x0FD0FA00, 0x0FD061C0, 0x0FCFC980, - 0x0FCF3140, 0x0FCE9900, 0x0FCE00C0, - 0x0FCD6880, 0x0FCCD040, 0x0FCC3800, - 0x0FCB9FC0, 0x0FCB0780, 0x0FCA6F40, - 0x0FC9D700, 0x0FC93EC0, 0x0FC8A680, - 0x0FC80E40, 0x0FC77600, 0x0FC6DDC0, - 0x0FC64580, 0x0FC5AD40, 0x0FC51500, - 0x0FC47CC0, 0x0FC3E480, 0x0FC34C40, - 0x0FC2B400, 0x0FC21BC0, 0x0FC18380, - 0x0FC0EB40, 0x0FC05300, 0x0FBFBAC0, - 0x0FBF2280, 0x0FBE8A40, 0x0FBDF200, - 0x0FBD59C0, 0x0FBCC180, 0x0FBC2940, - 0x0FBB9100, 0x0FBAF8C0, 0x0FBA6080, - 0x0FB9C840, 0x0FB93000, 0x0FB897C0, - 0x0FB7FF80, 0x0FB76740, 0x0FB6CF00, - 0x0FB636C0, 0x0FB59E80, 0x0FB50640, - 0x0FB46E00, 0x0FB3D5C0, 0x0FB33D80, - 0x0FB2A540, 0x0FB20D00, 0x0FB174C0, - 0x0FB0DC80, 0x0FB04440, 0x0FAFAC00, - 0x0FAF13C0, 0x0FAE7B80, 0x0FADE340, - 0x0FAD4B00, 0x0FACB2C0, 0x0FAC1A80, - 0x0FAB8240, 0x0FAAEA00, 0x0FAA51C0, - 0x0FA9B980, 0x0FA92140, 0x0FA88900, - 0x0FA7F0C0, 0x0FA75880, 0x0FA6C040, - 0x0FA62800, 0x0FA58FC0, 0x0FA4F780, - 0x0FA45F40, 0x0FA3C700, 0x0FA32EC0, - 0x0FA29680, 0x0FA1FE40, 0x0FA16600, - 0x0FA0CDC0, 0x0FA03580, 0x0F9F9D40, - 0x0F9F0500, 0x0F9E6CC0, 0x0F9DD480, - 0x0F9D3C40, 0x0F9CA400, 0x0F9C0BC0, - 0x0F9B7380, 0x0F9ADB40, 0x0F9A4300, - 0x0F99AAC0, 0x0F991280, 0x0F987A40, - 0x0F97E200, 0x0F9749C0, 0x0F96B180, - 0x0F961940, 0x0F958100, 0x0F94E8C0, - 0x0F945080, 0x0F93B840, 0x0F932000, - 0x0F9287C0, 0x0F91EF80, 0x0F915740, - 0x0F90BF00, 0x0F9026C0, 0x0F8F8E80, - 0x0F8EF640, 0x0F8E5E00, 0x0F8DC5C0, - 0x0F8D2D80, 0x0F8C9540, 0x0F8BFD00, - 0x0F8B64C0, 0x0F8ACC80, 0x0F8A3440, - 0x0F899C00, 0x0F8903C0, 0x0F886B80, - 0x0F87D340, 0x0F873B00, 0x0F86A2C0, - 0x0F860A80, 0x0F857240, 0x0F84DA00, - 0x0F8441C0, 0x0F83A980, 0x0F831140, - 0x0F827900, 0x0F81E0C0, 0x0F814880, - 0x0F80B040, 0x0F801800, 0x0F7F7FC0, - 0x0F7EE780, 0x0F7E4F40, 0x0F7DB700, - 0x0F7D1EC0, 0x0F7C8680, 0x0F7BEE40, - 0x0F7B5600, 0x0F7ABDC0, 0x0F7A2580, - 0x0F798D40, 0x0F78F500, 0x0F785CC0, - 0x0F77C480, 0x0F772C40, 0x0F769400, - 0x0F75FBC0, 0x0F756380, 0x0F74CB40, - 0x0F743300, 0x0F739AC0, 0x0F730280, - 0x0F726A40, 0x0F71D200, 0x0F7139C0, - 0x0F70A180, 0x0F700940, 0x0F6F7100, - 0x0F6ED8C0, 0x0F6E4080, 0x0F6DA840, - 0x0F6D1000, 0x0F6C77C0, 0x0F6BDF80, - 0x0F6B4740, 0x0F6AAF00, 0x0F6A16C0, - 0x0F697E80, 0x0F68E640, 0x0F684E00, - 0x0F67B5C0, 0x0F671D80, 0x0F668540, - 0x0F65ED00, 0x0F6554C0, 0x0F64BC80, - 0x0F642440, 0x0F638C00, 0x0F62F3C0, - 0x0F625B80, 0x0F61C340, 0x0F612B00, - 0x0F6092C0, 0x0F5FFA80, 0x0F5F6240, - 0x0F5ECA00, 0x0F5E31C0, 0x0F5D9980, - 0x0F5D0140, 0x0F5C6900, 0x0F5BD0C0, - 0x0F5B3880, 0x0F5AA040, 0x0F5A0800, - 0x0F596FC0, 0x0F58D780, 0x0F583F40, - 0x0F57A700, 0x0F570EC0, 0x0F567680, - 0x0F55DE40, 0x0F554600, 0x0F54ADC0, - 0x0F541580, 0x0F537D40, 0x0F52E500, - 0x0F524CC0, 0x0F51B480, 0x0F511C40, - 0x0F508400, 0x0F4FEBC0, 0x0F4F5380, - 0x0F4EBB40, 0x0F4E2300, 0x0F4D8AC0, - 0x0F4CF280, 0x0F4C5A40, 0x0F4BC200, - 0x0F4B29C0, 0x0F4A9180, 0x0F49F940, - 0x0F496100, 0x0F48C8C0, 0x0F483080, - 0x0F479840, 0x0F470000, 0x0F4667C0, - 0x0F45CF80, 0x0F453740, 0x0F449F00, - 0x0F4406C0, 0x0F436E80, 0x0F42D640, - 0x0F423E00, 0x0F41A5C0, 0x0F410D80, - 0x0F407540, 0x0F3FDD00, 0x0F3F44C0, - 0x0F3EAC80, 0x0F3E1440, 0x0F3D7C00, - 0x0F3CE3C0, 0x0F3C4B80, 0x0F3BB340, - 0x0F3B1B00, 0x0F3A82C0, 0x0F39EA80, - 0x0F395240, 0x0F38BA00, 0x0F3821C0, - 0x0F378980, 0x0F36F140, 0x0F365900, - 0x0F35C0C0, 0x0F352880, 0x0F349040, - 0x0F33F800, 0x0F335FC0, 0x0F32C780, - 0x0F322F40, 0x0F319700, 0x0F30FEC0, - 0x0F306680, 0x0F2FCE40, 0x0F2F3600, - 0x0F2E9DC0, 0x0F2E0580, 0x0F2D6D40, - 0x0F2CD500, 0x0F2C3CC0, 0x0F2BA480, - 0x0F2B0C40, 0x0F2A7400, 0x0F29DBC0, - 0x0F294380, 0x0F28AB40, 0x0F281300, - 0x0F277AC0, 0x0F26E280, 0x0F264A40, - 0x0F25B200, 0x0F2519C0, 0x0F248180, - 0x0F23E940, 0x0F235100, 0x0F22B8C0, - 0x0F222080, 0x0F218840, 0x0F20F000, - 0x0F2057C0, 0x0F1FBF80, 0x0F1F2740, - 0x0F1E8F00, 0x0F1DF6C0, 0x0F1D5E80, - 0x0F1CC640, 0x0F1C2E00, 0x0F1B95C0, - 0x0F1AFD80, 0x0F1A6540, 0x0F19CD00, - 0x0F1934C0, 0x0F189C80, 0x0F180440, - 0x0F176C00, 0x0F16D3C0, 0x0F163B80, - 0x0F15A340, 0x0F150B00, 0x0F1472C0, - 0x0F13DA80, 0x0F134240, 0x0F12AA00, - 0x0F1211C0, 0x0F117980, 0x0F10E140, - 0x0F104900, 0x0F0FB0C0, 0x0F0F1880, - 0x0F0E8040, 0x0F0DE800, 0x0F0D4FC0, - 0x0F0CB780, 0x0F0C1F40, 0x0F0B8700, - 0x0F0AEEC0, 0x0F0A5680, 0x0F09BE40, - 0x0F092600, 0x0F088DC0, 0x0F07F580, - 0x0F075D40, 0x0F06C500, 0x0F062CC0, - 0x0F059480, 0x0F04FC40, 0x0F046400, - 0x0F03CBC0, 0x0F033380, 0x0F029B40, - 0x0F020300, 0x0F016AC0, 0x0F00D280, - 0x0F003A40, 0x0EFFA200, 0x0EFF09C0, - 0x0EFE7180, 0x0EFDD940, 0x0EFD4100, - 0x0EFCA8C0, 0x0EFC1080, 0x0EFB7840, - 0x0EFAE000, 0x0EFA47C0, 0x0EF9AF80, - 0x0EF91740, 0x0EF87F00, 0x0EF7E6C0, - 0x0EF74E80, 0x0EF6B640, 0x0EF61E00, - 0x0EF585C0, 0x0EF4ED80, 0x0EF45540, - 0x0EF3BD00, 0x0EF324C0, 0x0EF28C80, - 0x0EF1F440, 0x0EF15C00, 0x0EF0C3C0, - 0x0EF02B80, 0x0EEF9340, 0x0EEEFB00, - 0x0EEE62C0, 0x0EEDCA80, 0x0EED3240, - 0x0EEC9A00, 0x0EEC01C0, 0x0EEB6980, - 0x0EEAD140, 0x0EEA3900, 0x0EE9A0C0, - 0x0EE90880, 0x0EE87040, 0x0EE7D800, - 0x0EE73FC0, 0x0EE6A780, 0x0EE60F40, - 0x0EE57700, 0x0EE4DEC0, 0x0EE44680, - 0x0EE3AE40, 0x0EE31600, 0x0EE27DC0, - 0x0EE1E580, 0x0EE14D40, 0x0EE0B500, - 0x0EE01CC0, 0x0EDF8480, 0x0EDEEC40, - 0x0EDE5400, 0x0EDDBBC0, 0x0EDD2380, - 0x0EDC8B40, 0x0EDBF300, 0x0EDB5AC0, - 0x0EDAC280, 0x0EDA2A40, 0x0ED99200, - 0x0ED8F9C0, 0x0ED86180, 0x0ED7C940, - 0x0ED73100, 0x0ED698C0, 0x0ED60080, - 0x0ED56840, 0x0ED4D000, 0x0ED437C0, - 0x0ED39F80, 0x0ED30740, 0x0ED26F00, - 0x0ED1D6C0, 0x0ED13E80, 0x0ED0A640, - 0x0ED00E00, 0x0ECF75C0, 0x0ECEDD80, - 0x0ECE4540, 0x0ECDAD00, 0x0ECD14C0, - 0x0ECC7C80, 0x0ECBE440, 0x0ECB4C00, - 0x0ECAB3C0, 0x0ECA1B80, 0x0EC98340, - 0x0EC8EB00, 0x0EC852C0, 0x0EC7BA80, - 0x0EC72240, 0x0EC68A00, 0x0EC5F1C0, - 0x0EC55980, 0x0EC4C140, 0x0EC42900, - 0x0EC390C0, 0x0EC2F880, 0x0EC26040, - 0x0EC1C800, 0x0EC12FC0, 0x0EC09780, - 0x0EBFFF40, 0x0EBF6700, 0x0EBECEC0, - 0x0EBE3680, 0x0EBD9E40, 0x0EBD0600, - 0x0EBC6DC0, 0x0EBBD580, 0x0EBB3D40, - 0x0EBAA500, 0x0EBA0CC0, 0x0EB97480, - 0x0EB8DC40, 0x0EB84400, 0x0EB7ABC0, - 0x0EB71380, 0x0EB67B40, 0x0EB5E300, - 0x0EB54AC0, 0x0EB4B280, 0x0EB41A40, - 0x0EB38200, 0x0EB2E9C0, 0x0EB25180, - 0x0EB1B940, 0x0EB12100, 0x0EB088C0, - 0x0EAFF080, 0x0EAF5840, 0x0EAEC000, - 0x0EAE27C0, 0x0EAD8F80, 0x0EACF740, - 0x0EAC5F00, 0x0EABC6C0, 0x0EAB2E80, - 0x0EAA9640, 0x0EA9FE00, 0x0EA965C0, - 0x0EA8CD80, 0x0EA83540, 0x0EA79D00, - 0x0EA704C0, 0x0EA66C80, 0x0EA5D440, - 0x0EA53C00, 0x0EA4A3C0, 0x0EA40B80, - 0x0EA37340, 0x0EA2DB00, 0x0EA242C0, - 0x0EA1AA80, 0x0EA11240, 0x0EA07A00, - 0x0E9FE1C0, 0x0E9F4980, 0x0E9EB140, - 0x0E9E1900, 0x0E9D80C0, 0x0E9CE880, - 0x0E9C5040, 0x0E9BB800, 0x0E9B1FC0, - 0x0E9A8780, 0x0E99EF40, 0x0E995700, - 0x0E98BEC0, 0x0E982680, 0x0E978E40, - 0x0E96F600, 0x0E965DC0, 0x0E95C580, - 0x0E952D40, 0x0E949500, 0x0E93FCC0, - 0x0E936480, 0x0E92CC40, 0x0E923400, - 0x0E919BC0, 0x0E910380, 0x0E906B40, - 0x0E8FD300, 0x0E8F3AC0, 0x0E8EA280, - 0x0E8E0A40, 0x0E8D7200, 0x0E8CD9C0, - 0x0E8C4180, 0x0E8BA940, 0x0E8B1100, - 0x0E8A78C0, 0x0E89E080, 0x0E894840, - 0x0E88B000, 0x0E8817C0, 0x0E877F80, - 0x0E86E740, 0x0E864F00, 0x0E85B6C0, - 0x0E851E80, 0x0E848640, 0x0E83EE00, - 0x0E8355C0, 0x0E82BD80, 0x0E822540, - 0x0E818D00, 0x0E80F4C0, 0x0E805C80, - 0x0E7FC440, 0x0E7F2C00, 0x0E7E93C0, - 0x0E7DFB80, 0x0E7D6340, 0x0E7CCB00, - 0x0E7C32C0, 0x0E7B9A80, 0x0E7B0240, - 0x0E7A6A00, 0x0E79D1C0, 0x0E793980, - 0x0E78A140, 0x0E780900, 0x0E7770C0, - 0x0E76D880, 0x0E764040, 0x0E75A800, - 0x0E750FC0, 0x0E747780, 0x0E73DF40, - 0x0E734700, 0x0E72AEC0, 0x0E721680, - 0x0E717E40, 0x0E70E600, 0x0E704DC0, - 0x0E6FB580, 0x0E6F1D40, 0x0E6E8500, - 0x0E6DECC0, 0x0E6D5480, 0x0E6CBC40, - 0x0E6C2400, 0x0E6B8BC0, 0x0E6AF380, - 0x0E6A5B40, 0x0E69C300, 0x0E692AC0, - 0x0E689280, 0x0E67FA40, 0x0E676200, - 0x0E66C9C0, 0x0E663180, 0x0E659940, - 0x0E650100, 0x0E6468C0, 0x0E63D080, - 0x0E633840, 0x0E62A000, 0x0E6207C0, - 0x0E616F80, 0x0E60D740, 0x0E603F00, - 0x0E5FA6C0, 0x0E5F0E80, 0x0E5E7640, - 0x0E5DDE00, 0x0E5D45C0, 0x0E5CAD80, - 0x0E5C1540, 0x0E5B7D00, 0x0E5AE4C0, - 0x0E5A4C80, 0x0E59B440, 0x0E591C00, - 0x0E5883C0, 0x0E57EB80, 0x0E575340, - 0x0E56BB00, 0x0E5622C0, 0x0E558A80, - 0x0E54F240, 0x0E545A00, 0x0E53C1C0, - 0x0E532980, 0x0E529140, 0x0E51F900, - 0x0E5160C0, 0x0E50C880, 0x0E503040, - 0x0E4F9800, 0x0E4EFFC0, 0x0E4E6780, - 0x0E4DCF40, 0x0E4D3700, 0x0E4C9EC0, - 0x0E4C0680, 0x0E4B6E40, 0x0E4AD600, - 0x0E4A3DC0, 0x0E49A580, 0x0E490D40, - 0x0E487500, 0x0E47DCC0, 0x0E474480, - 0x0E46AC40, 0x0E461400, 0x0E457BC0, - 0x0E44E380, 0x0E444B40, 0x0E43B300, - 0x0E431AC0, 0x0E428280, 0x0E41EA40, - 0x0E415200, 0x0E40B9C0, 0x0E402180, - 0x0E3F8940, 0x0E3EF100, 0x0E3E58C0, - 0x0E3DC080, 0x0E3D2840, 0x0E3C9000, - 0x0E3BF7C0, 0x0E3B5F80, 0x0E3AC740, - 0x0E3A2F00, 0x0E3996C0, 0x0E38FE80, - 0x0E386640, 0x0E37CE00, 0x0E3735C0, - 0x0E369D80, 0x0E360540, 0x0E356D00, - 0x0E34D4C0, 0x0E343C80, 0x0E33A440, - 0x0E330C00, 0x0E3273C0, 0x0E31DB80, - 0x0E314340, 0x0E30AB00, 0x0E3012C0, - 0x0E2F7A80, 0x0E2EE240, 0x0E2E4A00, - 0x0E2DB1C0, 0x0E2D1980, 0x0E2C8140, - 0x0E2BE900, 0x0E2B50C0, 0x0E2AB880, - 0x0E2A2040, 0x0E298800, 0x0E28EFC0, - 0x0E285780, 0x0E27BF40, 0x0E272700, - 0x0E268EC0, 0x0E25F680, 0x0E255E40, - 0x0E24C600, 0x0E242DC0, 0x0E239580, - 0x0E22FD40, 0x0E226500, 0x0E21CCC0, - 0x0E213480, 0x0E209C40, 0x0E200400, - 0x0E1F6BC0, 0x0E1ED380, 0x0E1E3B40, - 0x0E1DA300, 0x0E1D0AC0, 0x0E1C7280, - 0x0E1BDA40, 0x0E1B4200, 0x0E1AA9C0, - 0x0E1A1180, 0x0E197940, 0x0E18E100, - 0x0E1848C0, 0x0E17B080, 0x0E171840, - 0x0E168000, 0x0E15E7C0, 0x0E154F80, - 0x0E14B740, 0x0E141F00, 0x0E1386C0, - 0x0E12EE80, 0x0E125640, 0x0E11BE00, - 0x0E1125C0, 0x0E108D80, 0x0E0FF540, - 0x0E0F5D00, 0x0E0EC4C0, 0x0E0E2C80, - 0x0E0D9440, 0x0E0CFC00, 0x0E0C63C0, - 0x0E0BCB80, 0x0E0B3340, 0x0E0A9B00, - 0x0E0A02C0, 0x0E096A80, 0x0E08D240, - 0x0E083A00, 0x0E07A1C0, 0x0E070980, - 0x0E067140, 0x0E05D900, 0x0E0540C0, - 0x0E04A880, 0x0E041040, 0x0E037800, - 0x0E02DFC0, 0x0E024780, 0x0E01AF40, - 0x0E011700, 0x0E007EC0, 0x0DFFE680, - 0x0DFF4E40, 0x0DFEB600, 0x0DFE1DC0, - 0x0DFD8580, 0x0DFCED40, 0x0DFC5500, - 0x0DFBBCC0, 0x0DFB2480, 0x0DFA8C40, - 0x0DF9F400, 0x0DF95BC0, 0x0DF8C380, - 0x0DF82B40, 0x0DF79300, 0x0DF6FAC0, - 0x0DF66280, 0x0DF5CA40, 0x0DF53200, - 0x0DF499C0, 0x0DF40180, 0x0DF36940, - 0x0DF2D100, 0x0DF238C0, 0x0DF1A080, - 0x0DF10840, 0x0DF07000, 0x0DEFD7C0, - 0x0DEF3F80, 0x0DEEA740, 0x0DEE0F00, - 0x0DED76C0, 0x0DECDE80, 0x0DEC4640, - 0x0DEBAE00, 0x0DEB15C0, 0x0DEA7D80, - 0x0DE9E540, 0x0DE94D00, 0x0DE8B4C0, - 0x0DE81C80, 0x0DE78440, 0x0DE6EC00, - 0x0DE653C0, 0x0DE5BB80, 0x0DE52340, - 0x0DE48B00, 0x0DE3F2C0, 0x0DE35A80, - 0x0DE2C240, 0x0DE22A00, 0x0DE191C0, - 0x0DE0F980, 0x0DE06140, 0x0DDFC900, - 0x0DDF30C0, 0x0DDE9880, 0x0DDE0040, - 0x0DDD6800, 0x0DDCCFC0, 0x0DDC3780, - 0x0DDB9F40, 0x0DDB0700, 0x0DDA6EC0, - 0x0DD9D680, 0x0DD93E40, 0x0DD8A600, - 0x0DD80DC0, 0x0DD77580, 0x0DD6DD40, - 0x0DD64500, 0x0DD5ACC0, 0x0DD51480, - 0x0DD47C40, 0x0DD3E400, 0x0DD34BC0, - 0x0DD2B380, 0x0DD21B40, 0x0DD18300, - 0x0DD0EAC0, 0x0DD05280, 0x0DCFBA40, - 0x0DCF2200, 0x0DCE89C0, 0x0DCDF180, - 0x0DCD5940, 0x0DCCC100, 0x0DCC28C0, - 0x0DCB9080, 0x0DCAF840, 0x0DCA6000, - 0x0DC9C7C0, 0x0DC92F80, 0x0DC89740, - 0x0DC7FF00, 0x0DC766C0, 0x0DC6CE80, - 0x0DC63640, 0x0DC59E00, 0x0DC505C0, - 0x0DC46D80, 0x0DC3D540, 0x0DC33D00, - 0x0DC2A4C0, 0x0DC20C80, 0x0DC17440, - 0x0DC0DC00, 0x0DC043C0, 0x0DBFAB80, - 0x0DBF1340, 0x0DBE7B00, 0x0DBDE2C0, - 0x0DBD4A80, 0x0DBCB240, 0x0DBC1A00, - 0x0DBB81C0, 0x0DBAE980, 0x0DBA5140, - 0x0DB9B900, 0x0DB920C0, 0x0DB88880, - 0x0DB7F040, 0x0DB75800, 0x0DB6BFC0, - 0x0DB62780, 0x0DB58F40, 0x0DB4F700, - 0x0DB45EC0, 0x0DB3C680, 0x0DB32E40, - 0x0DB29600, 0x0DB1FDC0, 0x0DB16580, - 0x0DB0CD40, 0x0DB03500, 0x0DAF9CC0, - 0x0DAF0480, 0x0DAE6C40, 0x0DADD400, - 0x0DAD3BC0, 0x0DACA380, 0x0DAC0B40, - 0x0DAB7300, 0x0DAADAC0, 0x0DAA4280, - 0x0DA9AA40, 0x0DA91200, 0x0DA879C0, - 0x0DA7E180, 0x0DA74940, 0x0DA6B100, - 0x0DA618C0, 0x0DA58080, 0x0DA4E840, - 0x0DA45000, 0x0DA3B7C0, 0x0DA31F80, - 0x0DA28740, 0x0DA1EF00, 0x0DA156C0, - 0x0DA0BE80, 0x0DA02640, 0x0D9F8E00, - 0x0D9EF5C0, 0x0D9E5D80, 0x0D9DC540, - 0x0D9D2D00, 0x0D9C94C0, 0x0D9BFC80, - 0x0D9B6440, 0x0D9ACC00, 0x0D9A33C0, - 0x0D999B80, 0x0D990340, 0x0D986B00, - 0x0D97D2C0, 0x0D973A80, 0x0D96A240, - 0x0D960A00, 0x0D9571C0, 0x0D94D980, - 0x0D944140, 0x0D93A900, 0x0D9310C0, - 0x0D927880, 0x0D91E040, 0x0D914800, - 0x0D90AFC0, 0x0D901780, 0x0D8F7F40, - 0x0D8EE700, 0x0D8E4EC0, 0x0D8DB680, - 0x0D8D1E40, 0x0D8C8600, 0x0D8BEDC0, - 0x0D8B5580, 0x0D8ABD40, 0x0D8A2500, - 0x0D898CC0, 0x0D88F480, 0x0D885C40, - 0x0D87C400, 0x0D872BC0, 0x0D869380, - 0x0D85FB40, 0x0D856300, 0x0D84CAC0, - 0x0D843280, 0x0D839A40, 0x0D830200, - 0x0D8269C0, 0x0D81D180, 0x0D813940, - 0x0D80A100, 0x0D8008C0, 0x0D7F7080, - 0x0D7ED840, 0x0D7E4000, 0x0D7DA7C0, - 0x0D7D0F80, 0x0D7C7740, 0x0D7BDF00, - 0x0D7B46C0, 0x0D7AAE80, 0x0D7A1640, - 0x0D797E00, 0x0D78E5C0, 0x0D784D80, - 0x0D77B540, 0x0D771D00, 0x0D7684C0, - 0x0D75EC80, 0x0D755440, 0x0D74BC00, - 0x0D7423C0, 0x0D738B80, 0x0D72F340, - 0x0D725B00, 0x0D71C2C0, 0x0D712A80, - 0x0D709240, 0x0D6FFA00, 0x0D6F61C0, - 0x0D6EC980, 0x0D6E3140, 0x0D6D9900, - 0x0D6D00C0, 0x0D6C6880, 0x0D6BD040, - 0x0D6B3800, 0x0D6A9FC0, 0x0D6A0780, - 0x0D696F40, 0x0D68D700, 0x0D683EC0, - 0x0D67A680, 0x0D670E40, 0x0D667600, - 0x0D65DDC0, 0x0D654580, 0x0D64AD40, - 0x0D641500, 0x0D637CC0, 0x0D62E480, - 0x0D624C40, 0x0D61B400, 0x0D611BC0, - 0x0D608380, 0x0D5FEB40, 0x0D5F5300, - 0x0D5EBAC0, 0x0D5E2280, 0x0D5D8A40, - 0x0D5CF200, 0x0D5C59C0, 0x0D5BC180, - 0x0D5B2940, 0x0D5A9100, 0x0D59F8C0, - 0x0D596080, 0x0D58C840, 0x0D583000, - 0x0D5797C0, 0x0D56FF80, 0x0D566740, - 0x0D55CF00, 0x0D5536C0, 0x0D549E80, - 0x0D540640, 0x0D536E00, 0x0D52D5C0, - 0x0D523D80, 0x0D51A540, 0x0D510D00, - 0x0D5074C0, 0x0D4FDC80, 0x0D4F4440, - 0x0D4EAC00, 0x0D4E13C0, 0x0D4D7B80, - 0x0D4CE340, 0x0D4C4B00, 0x0D4BB2C0, - 0x0D4B1A80, 0x0D4A8240, 0x0D49EA00, - 0x0D4951C0, 0x0D48B980, 0x0D482140, - 0x0D478900, 0x0D46F0C0, 0x0D465880, - 0x0D45C040, 0x0D452800, 0x0D448FC0, - 0x0D43F780, 0x0D435F40, 0x0D42C700, - 0x0D422EC0, 0x0D419680, 0x0D40FE40, - 0x0D406600, 0x0D3FCDC0, 0x0D3F3580, - 0x0D3E9D40, 0x0D3E0500, 0x0D3D6CC0, - 0x0D3CD480, 0x0D3C3C40, 0x0D3BA400, - 0x0D3B0BC0, 0x0D3A7380, 0x0D39DB40, - 0x0D394300, 0x0D38AAC0, 0x0D381280, - 0x0D377A40, 0x0D36E200, 0x0D3649C0, - 0x0D35B180, 0x0D351940, 0x0D348100, - 0x0D33E8C0, 0x0D335080, 0x0D32B840, - 0x0D322000, 0x0D3187C0, 0x0D30EF80, - 0x0D305740, 0x0D2FBF00, 0x0D2F26C0, - 0x0D2E8E80, 0x0D2DF640, 0x0D2D5E00, - 0x0D2CC5C0, 0x0D2C2D80, 0x0D2B9540, - 0x0D2AFD00, 0x0D2A64C0, 0x0D29CC80, - 0x0D293440, 0x0D289C00, 0x0D2803C0, - 0x0D276B80, 0x0D26D340, 0x0D263B00, - 0x0D25A2C0, 0x0D250A80, 0x0D247240, - 0x0D23DA00, 0x0D2341C0, 0x0D22A980, - 0x0D221140, 0x0D217900, 0x0D20E0C0, - 0x0D204880, 0x0D1FB040, 0x0D1F1800, - 0x0D1E7FC0, 0x0D1DE780, 0x0D1D4F40, - 0x0D1CB700, 0x0D1C1EC0, 0x0D1B8680, - 0x0D1AEE40, 0x0D1A5600, 0x0D19BDC0, - 0x0D192580, 0x0D188D40, 0x0D17F500, - 0x0D175CC0, 0x0D16C480, 0x0D162C40, - 0x0D159400, 0x0D14FBC0, 0x0D146380, - 0x0D13CB40, 0x0D133300, 0x0D129AC0, - 0x0D120280, 0x0D116A40, 0x0D10D200, - 0x0D1039C0, 0x0D0FA180, 0x0D0F0940, - 0x0D0E7100, 0x0D0DD8C0, 0x0D0D4080, - 0x0D0CA840, 0x0D0C1000, 0x0D0B77C0, - 0x0D0ADF80, 0x0D0A4740, 0x0D09AF00, - 0x0D0916C0, 0x0D087E80, 0x0D07E640, - 0x0D074E00, 0x0D06B5C0, 0x0D061D80, - 0x0D058540, 0x0D04ED00, 0x0D0454C0, - 0x0D03BC80, 0x0D032440, 0x0D028C00, - 0x0D01F3C0, 0x0D015B80, 0x0D00C340, - 0x0D002B00, 0x0CFF92C0, 0x0CFEFA80, - 0x0CFE6240, 0x0CFDCA00, 0x0CFD31C0, - 0x0CFC9980, 0x0CFC0140, 0x0CFB6900, - 0x0CFAD0C0, 0x0CFA3880, 0x0CF9A040, - 0x0CF90800, 0x0CF86FC0, 0x0CF7D780, - 0x0CF73F40, 0x0CF6A700, 0x0CF60EC0, - 0x0CF57680, 0x0CF4DE40, 0x0CF44600, - 0x0CF3ADC0, 0x0CF31580, 0x0CF27D40, - 0x0CF1E500, 0x0CF14CC0, 0x0CF0B480, - 0x0CF01C40, 0x0CEF8400, 0x0CEEEBC0, - 0x0CEE5380, 0x0CEDBB40, 0x0CED2300, - 0x0CEC8AC0, 0x0CEBF280, 0x0CEB5A40, - 0x0CEAC200, 0x0CEA29C0, 0x0CE99180, - 0x0CE8F940, 0x0CE86100, 0x0CE7C8C0, - 0x0CE73080, 0x0CE69840, 0x0CE60000, - 0x0CE56F40, 0x0CE4DE80, 0x0CE44DC0, - 0x0CE3BD00, 0x0CE32C40, 0x0CE29B80, - 0x0CE20AC0, 0x0CE17A00, 0x0CE0E940, - 0x0CE05880, 0x0CDFC7C0, 0x0CDF3700, - 0x0CDEA640, 0x0CDE1580, 0x0CDD84C0, - 0x0CDCF400, 0x0CDC6340, 0x0CDBD280, - 0x0CDB41C0, 0x0CDAB100, 0x0CDA2040, - 0x0CD98F80, 0x0CD8FEC0, 0x0CD86E00, - 0x0CD7DD40, 0x0CD74C80, 0x0CD6BBC0, - 0x0CD62B00, 0x0CD59A40, 0x0CD50980, - 0x0CD478C0, 0x0CD3E800, 0x0CD35740, - 0x0CD2C680, 0x0CD235C0, 0x0CD1A500, - 0x0CD11440, 0x0CD08380, 0x0CCFF2C0, - 0x0CCF6200, 0x0CCED140, 0x0CCE4080, - 0x0CCDAFC0, 0x0CCD1F00, 0x0CCC8E40, - 0x0CCBFD80, 0x0CCB6CC0, 0x0CCADC00, - 0x0CCA4B40, 0x0CC9BA80, 0x0CC929C0, - 0x0CC89900, 0x0CC80840, 0x0CC77780, - 0x0CC6E6C0, 0x0CC65600, 0x0CC5C540, - 0x0CC53480, 0x0CC4A3C0, 0x0CC41300, - 0x0CC38240, 0x0CC2F180, 0x0CC260C0, - 0x0CC1D000, 0x0CC13F40, 0x0CC0AE80, - 0x0CC01DC0, 0x0CBF8D00, 0x0CBEFC40, - 0x0CBE6B80, 0x0CBDDAC0, 0x0CBD4A00, - 0x0CBCB940, 0x0CBC2880, 0x0CBB97C0, - 0x0CBB0700, 0x0CBA7640, 0x0CB9E580, - 0x0CB954C0, 0x0CB8C400, 0x0CB83340, - 0x0CB7A280, 0x0CB711C0, 0x0CB68100, - 0x0CB5F040, 0x0CB55F80, 0x0CB4CEC0, - 0x0CB43E00, 0x0CB3AD40, 0x0CB31C80, - 0x0CB28BC0, 0x0CB1FB00, 0x0CB16A40, - 0x0CB0D980, 0x0CB048C0, 0x0CAFB800, - 0x0CAF2740, 0x0CAE9680, 0x0CAE05C0, - 0x0CAD7500, 0x0CACE440, 0x0CAC5380, - 0x0CABC2C0, 0x0CAB3200, 0x0CAAA140, - 0x0CAA1080, 0x0CA97FC0, 0x0CA8EF00, - 0x0CA85E40, 0x0CA7CD80, 0x0CA73CC0, - 0x0CA6AC00, 0x0CA61B40, 0x0CA58A80, - 0x0CA4F9C0, 0x0CA46900, 0x0CA3D840, - 0x0CA34780, 0x0CA2B6C0, 0x0CA22600, - 0x0CA19540, 0x0CA10480, 0x0CA073C0, - 0x0C9FE300, 0x0C9F5240, 0x0C9EC180, - 0x0C9E30C0, 0x0C9DA000, 0x0C9D0F40, - 0x0C9C7E80, 0x0C9BEDC0, 0x0C9B5D00, - 0x0C9ACC40, 0x0C9A3B80, 0x0C99AAC0, - 0x0C991A00, 0x0C988940, 0x0C97F880, - 0x0C9767C0, 0x0C96D700, 0x0C964640, - 0x0C95B580, 0x0C9524C0, 0x0C949400, - 0x0C940340, 0x0C937280, 0x0C92E1C0, - 0x0C925100, 0x0C91C040, 0x0C912F80, - 0x0C909EC0, 0x0C900E00, 0x0C8F7D40, - 0x0C8EEC80, 0x0C8E5BC0, 0x0C8DCB00, - 0x0C8D3A40, 0x0C8CA980, 0x0C8C18C0, - 0x0C8B8800, 0x0C8AF740, 0x0C8A6680, - 0x0C89D5C0, 0x0C894500, 0x0C88B440, - 0x0C882380, 0x0C8792C0, 0x0C870200, - 0x0C867140, 0x0C85E080, 0x0C854FC0, - 0x0C84BF00, 0x0C842E40, 0x0C839D80, - 0x0C830CC0, 0x0C827C00, 0x0C81EB40, - 0x0C815A80, 0x0C80C9C0, 0x0C803900, - 0x0C7FA840, 0x0C7F1780, 0x0C7E86C0, - 0x0C7DF600, 0x0C7D6540, 0x0C7CD480, - 0x0C7C43C0, 0x0C7BB300, 0x0C7B2240, - 0x0C7A9180, 0x0C7A00C0, 0x0C797000, - 0x0C78DF40, 0x0C784E80, 0x0C77BDC0, - 0x0C772D00, 0x0C769C40, 0x0C760B80, - 0x0C757AC0, 0x0C74EA00, 0x0C745940, - 0x0C73C880, 0x0C7337C0, 0x0C72A700, - 0x0C721640, 0x0C718580, 0x0C70F4C0, - 0x0C706400, 0x0C6FD340, 0x0C6F4280, - 0x0C6EB1C0, 0x0C6E2100, 0x0C6D9040, - 0x0C6CFF80, 0x0C6C6EC0, 0x0C6BDE00, - 0x0C6B4D40, 0x0C6ABC80, 0x0C6A2BC0, - 0x0C699B00, 0x0C690A40, 0x0C687980, - 0x0C67E8C0, 0x0C675800, 0x0C66C740, - 0x0C663680, 0x0C65A5C0, 0x0C651500, - 0x0C648440, 0x0C63F380, 0x0C6362C0, - 0x0C62D200, 0x0C624140, 0x0C61B080, - 0x0C611FC0, 0x0C608F00, 0x0C5FFE40, - 0x0C5F6D80, 0x0C5EDCC0, 0x0C5E4C00, - 0x0C5DBB40, 0x0C5D2A80, 0x0C5C99C0, - 0x0C5C0900, 0x0C5B7840, 0x0C5AE780, - 0x0C5A56C0, 0x0C59C600, 0x0C593540, - 0x0C58A480, 0x0C5813C0, 0x0C578300, - 0x0C56F240, 0x0C566180, 0x0C55D0C0, - 0x0C554000, 0x0C54AF40, 0x0C541E80, - 0x0C538DC0, 0x0C52FD00, 0x0C526C40, - 0x0C51DB80, 0x0C514AC0, 0x0C50BA00, - 0x0C502940, 0x0C4F9880, 0x0C4F07C0, - 0x0C4E7700, 0x0C4DE640, 0x0C4D5580, - 0x0C4CC4C0, 0x0C4C3400, 0x0C4BA340, - 0x0C4B1280, 0x0C4A81C0, 0x0C49F100, - 0x0C496040, 0x0C48CF80, 0x0C483EC0, - 0x0C47AE00, 0x0C471D40, 0x0C468C80, - 0x0C45FBC0, 0x0C456B00, 0x0C44DA40, - 0x0C444980, 0x0C43B8C0, 0x0C432800, - 0x0C429740, 0x0C420680, 0x0C4175C0, - 0x0C40E500, 0x0C405440, 0x0C3FC380, - 0x0C3F32C0, 0x0C3EA200, 0x0C3E1140, - 0x0C3D8080, 0x0C3CEFC0, 0x0C3C5F00, - 0x0C3BCE40, 0x0C3B3D80, 0x0C3AACC0, - 0x0C3A1C00, 0x0C398B40, 0x0C38FA80, - 0x0C3869C0, 0x0C37D900, 0x0C374840, - 0x0C36B780, 0x0C3626C0, 0x0C359600, - 0x0C350540, 0x0C347480, 0x0C33E3C0, - 0x0C335300, 0x0C32C240, 0x0C323180, - 0x0C31A0C0, 0x0C311000, 0x0C307F40, - 0x0C2FEE80, 0x0C2F5DC0, 0x0C2ECD00, - 0x0C2E3C40, 0x0C2DAB80, 0x0C2D1AC0, - 0x0C2C8A00, 0x0C2BF940, 0x0C2B6880, - 0x0C2AD7C0, 0x0C2A4700, 0x0C29B640, - 0x0C292580, 0x0C2894C0, 0x0C280400, - 0x0C277340, 0x0C26E280, 0x0C2651C0, - 0x0C25C100, 0x0C253040, 0x0C249F80, - 0x0C240EC0, 0x0C237E00, 0x0C22ED40, - 0x0C225C80, 0x0C21CBC0, 0x0C213B00, - 0x0C20AA40, 0x0C201980, 0x0C1F88C0, - 0x0C1EF800, 0x0C1E6740, 0x0C1DD680, - 0x0C1D45C0, 0x0C1CB500, 0x0C1C2440, - 0x0C1B9380, 0x0C1B02C0, 0x0C1A7200, - 0x0C19E140, 0x0C195080, 0x0C18BFC0, - 0x0C182F00, 0x0C179E40, 0x0C170D80, - 0x0C167CC0, 0x0C15EC00, 0x0C155B40, - 0x0C14CA80, 0x0C1439C0, 0x0C13A900, - 0x0C131840, 0x0C128780, 0x0C11F6C0, - 0x0C116600, 0x0C10D540, 0x0C104480, - 0x0C0FB3C0, 0x0C0F2300, 0x0C0E9240, - 0x0C0E0180, 0x0C0D70C0, 0x0C0CE000, - 0x0C0C4F40, 0x0C0BBE80, 0x0C0B2DC0, - 0x0C0A9D00, 0x0C0A0C40, 0x0C097B80, - 0x0C08EAC0, 0x0C085A00, 0x0C07C940, - 0x0C073880, 0x0C06A7C0, 0x0C061700, - 0x0C058640, 0x0C04F580, 0x0C0464C0, - 0x0C03D400, 0x0C034340, 0x0C02B280, - 0x0C0221C0, 0x0C019100, 0x0C010040, - 0x0C006F80, 0x0BFFDEC0, 0x0BFF4E00, - 0x0BFEBD40, 0x0BFE2C80, 0x0BFD9BC0, - 0x0BFD0B00, 0x0BFC7A40, 0x0BFBE980, - 0x0BFB58C0, 0x0BFAC800, 0x0BFA3740, - 0x0BF9A680, 0x0BF915C0, 0x0BF88500, - 0x0BF7F440, 0x0BF76380, 0x0BF6D2C0, - 0x0BF64200, 0x0BF5B140, 0x0BF52080, - 0x0BF48FC0, 0x0BF3FF00, 0x0BF36E40, - 0x0BF2DD80, 0x0BF24CC0, 0x0BF1BC00, - 0x0BF12B40, 0x0BF09A80, 0x0BF009C0, - 0x0BEF7900, 0x0BEEE840, 0x0BEE5780, - 0x0BEDC6C0, 0x0BED3600, 0x0BECA540, - 0x0BEC1480, 0x0BEB83C0, 0x0BEAF300, - 0x0BEA6240, 0x0BE9D180, 0x0BE940C0, - 0x0BE8B000, 0x0BE81F40, 0x0BE78E80, - 0x0BE6FDC0, 0x0BE66D00, 0x0BE5DC40, - 0x0BE54B80, 0x0BE4BAC0, 0x0BE42A00, - 0x0BE39940, 0x0BE30880, 0x0BE277C0, - 0x0BE1E700, 0x0BE15640, 0x0BE0C580, - 0x0BE034C0, 0x0BDFA400, 0x0BDF1340, - 0x0BDE8280, 0x0BDDF1C0, 0x0BDD6100, - 0x0BDCD040, 0x0BDC3F80, 0x0BDBAEC0, - 0x0BDB1E00, 0x0BDA8D40, 0x0BD9FC80, - 0x0BD96BC0, 0x0BD8DB00, 0x0BD84A40, - 0x0BD7B980, 0x0BD728C0, 0x0BD69800, - 0x0BD60740, 0x0BD57680, 0x0BD4E5C0, - 0x0BD45500, 0x0BD3C440, 0x0BD33380, - 0x0BD2A2C0, 0x0BD21200, 0x0BD18140, - 0x0BD0F080, 0x0BD05FC0, 0x0BCFCF00, - 0x0BCF3E40, 0x0BCEAD80, 0x0BCE1CC0, - 0x0BCD8C00, 0x0BCCFB40, 0x0BCC6A80, - 0x0BCBD9C0, 0x0BCB4900, 0x0BCAB840, - 0x0BCA2780, 0x0BC996C0, 0x0BC90600, - 0x0BC87540, 0x0BC7E480, 0x0BC753C0, - 0x0BC6C300, 0x0BC63240, 0x0BC5A180, - 0x0BC510C0, 0x0BC48000, 0x0BC3EF40, - 0x0BC35E80, 0x0BC2CDC0, 0x0BC23D00, - 0x0BC1AC40, 0x0BC11B80, 0x0BC08AC0, - 0x0BBFFA00, 0x0BBF6940, 0x0BBED880, - 0x0BBE47C0, 0x0BBDB700, 0x0BBD2640, - 0x0BBC9580, 0x0BBC04C0, 0x0BBB7400, - 0x0BBAE340, 0x0BBA5280, 0x0BB9C1C0, - 0x0BB93100, 0x0BB8A040, 0x0BB80F80, - 0x0BB77EC0, 0x0BB6EE00, 0x0BB65D40, - 0x0BB5CC80, 0x0BB53BC0, 0x0BB4AB00, - 0x0BB41A40, 0x0BB38980, 0x0BB2F8C0, - 0x0BB26800, 0x0BB1D740, 0x0BB14680, - 0x0BB0B5C0, 0x0BB02500, 0x0BAF9440, - 0x0BAF0380, 0x0BAE72C0, 0x0BADE200, - 0x0BAD5140, 0x0BACC080, 0x0BAC2FC0, - 0x0BAB9F00, 0x0BAB0E40, 0x0BAA7D80, - 0x0BA9ECC0, 0x0BA95C00, 0x0BA8CB40, - 0x0BA83A80, 0x0BA7A9C0, 0x0BA71900, - 0x0BA68840, 0x0BA5F780, 0x0BA566C0, - 0x0BA4D600, 0x0BA44540, 0x0BA3B480, - 0x0BA323C0, 0x0BA29300, 0x0BA20240, - 0x0BA17180, 0x0BA0E0C0, 0x0BA05000, - 0x0B9FBF40, 0x0B9F2E80, 0x0B9E9DC0, - 0x0B9E0D00, 0x0B9D7C40, 0x0B9CEB80, - 0x0B9C5AC0, 0x0B9BCA00, 0x0B9B3940, - 0x0B9AA880, 0x0B9A17C0, 0x0B998700, - 0x0B98F640, 0x0B986580, 0x0B97D4C0, - 0x0B974400, 0x0B96B340, 0x0B962280, - 0x0B9591C0, 0x0B950100, 0x0B947040, - 0x0B93DF80, 0x0B934EC0, 0x0B92BE00, - 0x0B922D40, 0x0B919C80, 0x0B910BC0, - 0x0B907B00, 0x0B8FEA40, 0x0B8F5980, - 0x0B8EC8C0, 0x0B8E3800, 0x0B8DA740, - 0x0B8D1680, 0x0B8C85C0, 0x0B8BF500, - 0x0B8B6440, 0x0B8AD380, 0x0B8A42C0, - 0x0B89B200, 0x0B892140, 0x0B889080, - 0x0B87FFC0, 0x0B876F00, 0x0B86DE40, - 0x0B864D80, 0x0B85BCC0, 0x0B852C00, - 0x0B849B40, 0x0B840A80, 0x0B8379C0, - 0x0B82E900, 0x0B825840, 0x0B81C780, - 0x0B8136C0, 0x0B80A600, 0x0B801540, - 0x0B7F8480, 0x0B7EF3C0, 0x0B7E6300, - 0x0B7DD240, 0x0B7D4180, 0x0B7CB0C0, - 0x0B7C2000, 0x0B7B8F40, 0x0B7AFE80, - 0x0B7A6DC0, 0x0B79DD00, 0x0B794C40, - 0x0B78BB80, 0x0B782AC0, 0x0B779A00, - 0x0B770940, 0x0B767880, 0x0B75E7C0, - 0x0B755700, 0x0B74C640, 0x0B743580, - 0x0B73A4C0, 0x0B731400, 0x0B728340, - 0x0B71F280, 0x0B7161C0, 0x0B70D100, - 0x0B704040, 0x0B6FAF80, 0x0B6F1EC0, - 0x0B6E8E00, 0x0B6DFD40, 0x0B6D6C80, - 0x0B6CDBC0, 0x0B6C4B00, 0x0B6BBA40, - 0x0B6B2980, 0x0B6A98C0, 0x0B6A0800, - 0x0B697740, 0x0B68E680, 0x0B6855C0, - 0x0B67C500, 0x0B673440, 0x0B66A380, - 0x0B6612C0, 0x0B658200, 0x0B64F140, - 0x0B646080, 0x0B63CFC0, 0x0B633F00, - 0x0B62AE40, 0x0B621D80, 0x0B618CC0, - 0x0B60FC00, 0x0B606B40, 0x0B5FDA80, - 0x0B5F49C0, 0x0B5EB900, 0x0B5E2840, - 0x0B5D9780, 0x0B5D06C0, 0x0B5C7600, - 0x0B5BE540, 0x0B5B5480, 0x0B5AC3C0, - 0x0B5A3300, 0x0B59A240, 0x0B591180, - 0x0B5880C0, 0x0B57F000, 0x0B575F40, - 0x0B56CE80, 0x0B563DC0, 0x0B55AD00, - 0x0B551C40, 0x0B548B80, 0x0B53FAC0, - 0x0B536A00, 0x0B52D940, 0x0B524880, - 0x0B51B7C0, 0x0B512700, 0x0B509640, - 0x0B500580, 0x0B4F74C0, 0x0B4EE400, - 0x0B4E5340, 0x0B4DC280, 0x0B4D31C0, - 0x0B4CA100, 0x0B4C1040, 0x0B4B7F80, - 0x0B4AEEC0, 0x0B4A5E00, 0x0B49CD40, - 0x0B493C80, 0x0B48ABC0, 0x0B481B00, - 0x0B478A40, 0x0B46F980, 0x0B4668C0, - 0x0B45D800, 0x0B454740, 0x0B44B680, - 0x0B4425C0, 0x0B439500, 0x0B430440, - 0x0B427380, 0x0B41E2C0, 0x0B415200, - 0x0B40C140, 0x0B403080, 0x0B3F9FC0, - 0x0B3F0F00, 0x0B3E7E40, 0x0B3DED80, - 0x0B3D5CC0, 0x0B3CCC00, 0x0B3C3B40, - 0x0B3BAA80, 0x0B3B19C0, 0x0B3A8900, - 0x0B39F840, 0x0B396780, 0x0B38D6C0, - 0x0B384600, 0x0B37B540, 0x0B372480, - 0x0B3693C0, 0x0B360300, 0x0B357240, - 0x0B34E180, 0x0B3450C0, 0x0B33C000, - 0x0B332F40, 0x0B329E80, 0x0B320DC0, - 0x0B317D00, 0x0B30EC40, 0x0B305B80, - 0x0B2FCAC0, 0x0B2F3A00, 0x0B2EA940, - 0x0B2E1880, 0x0B2D87C0, 0x0B2CF700, - 0x0B2C6640, 0x0B2BD580, 0x0B2B44C0, - 0x0B2AB400, 0x0B2A2340, 0x0B299280, - 0x0B2901C0, 0x0B287100, 0x0B27E040, - 0x0B274F80, 0x0B26BEC0, 0x0B262E00, - 0x0B259D40, 0x0B250C80, 0x0B247BC0, - 0x0B23EB00, 0x0B235A40, 0x0B22C980, - 0x0B2238C0, 0x0B21A800, 0x0B211740, - 0x0B208680, 0x0B1FF5C0, 0x0B1F6500, - 0x0B1ED440, 0x0B1E4380, 0x0B1DB2C0, - 0x0B1D2200, 0x0B1C9140, 0x0B1C0080, - 0x0B1B6FC0, 0x0B1ADF00, 0x0B1A4E40, - 0x0B19BD80, 0x0B192CC0, 0x0B189C00, - 0x0B180B40, 0x0B177A80, 0x0B16E9C0, - 0x0B165900, 0x0B15C840, 0x0B153780, - 0x0B14A6C0, 0x0B141600, 0x0B138540, - 0x0B12F480, 0x0B1263C0, 0x0B11D300, - 0x0B114240, 0x0B10B180, 0x0B1020C0, - 0x0B0F9000, 0x0B0EFF40, 0x0B0E6E80, - 0x0B0DDDC0, 0x0B0D4D00, 0x0B0CBC40, - 0x0B0C2B80, 0x0B0B9AC0, 0x0B0B0A00, - 0x0B0A7940, 0x0B09E880, 0x0B0957C0, - 0x0B08C700, 0x0B083640, 0x0B07A580, - 0x0B0714C0, 0x0B068400, 0x0B05F340, - 0x0B056280, 0x0B04D1C0, 0x0B044100, - 0x0B03B040, 0x0B031F80, 0x0B028EC0, - 0x0B01FE00, 0x0B016D40, 0x0B00DC80, - 0x0B004BC0, 0x0AFFBB00, 0x0AFF2A40, - 0x0AFE9980, 0x0AFE08C0, 0x0AFD7800, - 0x0AFCE740, 0x0AFC5680, 0x0AFBC5C0, - 0x0AFB3500, 0x0AFAA440, 0x0AFA1380, - 0x0AF982C0, 0x0AF8F200, 0x0AF86140, - 0x0AF7D080, 0x0AF73FC0, 0x0AF6AF00, - 0x0AF61E40, 0x0AF58D80, 0x0AF4FCC0, - 0x0AF46C00, 0x0AF3DB40, 0x0AF34A80, - 0x0AF2B9C0, 0x0AF22900, 0x0AF19840, - 0x0AF10780, 0x0AF076C0, 0x0AEFE600, - 0x0AEF5540, 0x0AEEC480, 0x0AEE33C0, - 0x0AEDA300, 0x0AED1240, 0x0AEC8180, - 0x0AEBF0C0, 0x0AEB6000, 0x0AEACF40, - 0x0AEA3E80, 0x0AE9ADC0, 0x0AE91D00, - 0x0AE88C40, 0x0AE7FB80, 0x0AE76AC0, - 0x0AE6DA00, 0x0AE64940, 0x0AE5B880, - 0x0AE527C0, 0x0AE49700, 0x0AE40640, - 0x0AE37580, 0x0AE2E4C0, 0x0AE25400, - 0x0AE1C340, 0x0AE13280, 0x0AE0A1C0, - 0x0AE01100, 0x0ADF8040, 0x0ADEEF80, - 0x0ADE5EC0, 0x0ADDCE00, 0x0ADD3D40, - 0x0ADCAC80, 0x0ADC1BC0, 0x0ADB8B00, - 0x0ADAFA40, 0x0ADA6980, 0x0AD9D8C0, - 0x0AD94800, 0x0AD8B740, 0x0AD82680, - 0x0AD795C0, 0x0AD70500, 0x0AD67440, - 0x0AD5E380, 0x0AD552C0, 0x0AD4C200, - 0x0AD43140, 0x0AD3A080, 0x0AD30FC0, - 0x0AD27F00, 0x0AD1EE40, 0x0AD15D80, - 0x0AD0CCC0, 0x0AD03C00, 0x0ACFAB40, - 0x0ACF1A80, 0x0ACE89C0, 0x0ACDF900, - 0x0ACD6840, 0x0ACCD780, 0x0ACC46C0, - 0x0ACBB600, 0x0ACB2540, 0x0ACA9480, - 0x0ACA03C0, 0x0AC97300, 0x0AC8E240, - 0x0AC85180, 0x0AC7C0C0, 0x0AC73000, - 0x0AC69F40, 0x0AC60E80, 0x0AC57DC0, - 0x0AC4ED00, 0x0AC45C40, 0x0AC3CB80, - 0x0AC33AC0, 0x0AC2AA00, 0x0AC21940, - 0x0AC18880, 0x0AC0F7C0, 0x0AC06700, - 0x0ABFD640, 0x0ABF4580, 0x0ABEB4C0, - 0x0ABE2400, 0x0ABD9340, 0x0ABD0280, - 0x0ABC71C0, 0x0ABBE100, 0x0ABB5040, - 0x0ABABF80, 0x0ABA2EC0, 0x0AB99E00, - 0x0AB90D40, 0x0AB87C80, 0x0AB7EBC0, - 0x0AB75B00, 0x0AB6CA40, 0x0AB63980, - 0x0AB5A8C0, 0x0AB51800, 0x0AB48740, - 0x0AB3F680, 0x0AB365C0, 0x0AB2D500, - 0x0AB24440, 0x0AB1B380, 0x0AB122C0, - 0x0AB09200, 0x0AB00140, 0x0AAF7080, - 0x0AAEDFC0, 0x0AAE4F00, 0x0AADBE40, - 0x0AAD2D80, 0x0AAC9CC0, 0x0AAC0C00, - 0x0AAB7B40, 0x0AAAEA80, 0x0AAA59C0, - 0x0AA9C900, 0x0AA93840, 0x0AA8A780, - 0x0AA816C0, 0x0AA78600, 0x0AA6F540, - 0x0AA66480, 0x0AA5D3C0, 0x0AA54300, - 0x0AA4B240, 0x0AA42180, 0x0AA390C0, - 0x0AA30000, 0x0AA26F40, 0x0AA1DE80, - 0x0AA14DC0, 0x0AA0BD00, 0x0AA02C40, - 0x0A9F9B80, 0x0A9F0AC0, 0x0A9E7A00, - 0x0A9DE940, 0x0A9D5880, 0x0A9CC7C0, - 0x0A9C3700, 0x0A9BA640, 0x0A9B1580, - 0x0A9A84C0, 0x0A99F400, 0x0A996340, - 0x0A98D280, 0x0A9841C0, 0x0A97B100, - 0x0A972040, 0x0A968F80, 0x0A95FEC0, - 0x0A956E00, 0x0A94DD40, 0x0A944C80, - 0x0A93BBC0, 0x0A932B00, 0x0A929A40, - 0x0A920980, 0x0A9178C0, 0x0A90E800, - 0x0A905740, 0x0A8FC680, 0x0A8F35C0, - 0x0A8EA500, 0x0A8E1440, 0x0A8D8380, - 0x0A8CF2C0, 0x0A8C6200, 0x0A8BD140, - 0x0A8B4080, 0x0A8AAFC0, 0x0A8A1F00, - 0x0A898E40, 0x0A88FD80, 0x0A886CC0, - 0x0A87DC00, 0x0A874B40, 0x0A86BA80, - 0x0A8629C0, 0x0A859900, 0x0A850840, - 0x0A847780, 0x0A83E6C0, 0x0A835600, - 0x0A82C540, 0x0A823480, 0x0A81A3C0, - 0x0A811300, 0x0A808240, 0x0A7FF180, - 0x0A7F60C0, 0x0A7ED000, 0x0A7E3F40, - 0x0A7DAE80, 0x0A7D1DC0, 0x0A7C8D00, - 0x0A7BFC40, 0x0A7B6B80, 0x0A7ADAC0, - 0x0A7A4A00, 0x0A79B940, 0x0A792880, - 0x0A7897C0, 0x0A780700, 0x0A777640, - 0x0A76E580, 0x0A7654C0, 0x0A75C400, - 0x0A753340, 0x0A74A280, 0x0A7411C0, - 0x0A738100, 0x0A72F040, 0x0A725F80, - 0x0A71CEC0, 0x0A713E00, 0x0A70AD40, - 0x0A701C80, 0x0A6F8BC0, 0x0A6EFB00, - 0x0A6E6A40, 0x0A6DD980, 0x0A6D48C0, - 0x0A6CB800, 0x0A6C2740, 0x0A6B9680, - 0x0A6B05C0, 0x0A6A7500, 0x0A69E440, - 0x0A695380, 0x0A68C2C0, 0x0A683200, - 0x0A67A140, 0x0A671080, 0x0A667FC0, - 0x0A65EF00, 0x0A655E40, 0x0A64CD80, - 0x0A643CC0, 0x0A63AC00, 0x0A631B40, - 0x0A628A80, 0x0A61F9C0, 0x0A616900, - 0x0A60D840, 0x0A604780, 0x0A5FB6C0, - 0x0A5F2600, 0x0A5E9540, 0x0A5E0480, - 0x0A5D73C0, 0x0A5CE300, 0x0A5C5240, - 0x0A5BC180, 0x0A5B30C0, 0x0A5AA000, - 0x0A5A0F40, 0x0A597E80, 0x0A58EDC0, - 0x0A585D00, 0x0A57CC40, 0x0A573B80, - 0x0A56AAC0, 0x0A561A00, 0x0A558940, - 0x0A54F880, 0x0A5467C0, 0x0A53D700, - 0x0A534640, 0x0A52B580, 0x0A5224C0, - 0x0A519400, 0x0A510340, 0x0A507280, - 0x0A4FE1C0, 0x0A4F5100, 0x0A4EC040, - 0x0A4E2F80, 0x0A4D9EC0, 0x0A4D0E00, - 0x0A4C7D40, 0x0A4BEC80, 0x0A4B5BC0, - 0x0A4ACB00, 0x0A4A3A40, 0x0A49A980, - 0x0A4918C0, 0x0A488800, 0x0A47F740, - 0x0A476680, 0x0A46D5C0, 0x0A464500, - 0x0A45B440, 0x0A452380, 0x0A4492C0, - 0x0A440200, 0x0A437140, 0x0A42E080, - 0x0A424FC0, 0x0A41BF00, 0x0A412E40, - 0x0A409D80, 0x0A400CC0, 0x0A3F7C00, - 0x0A3EEB40, 0x0A3E5A80, 0x0A3DC9C0, - 0x0A3D3900, 0x0A3CA840, 0x0A3C1780, - 0x0A3B86C0, 0x0A3AF600, 0x0A3A6540, - 0x0A39D480, 0x0A3943C0, 0x0A38B300, - 0x0A382240, 0x0A379180, 0x0A3700C0, - 0x0A367000, 0x0A35DF40, 0x0A354E80, - 0x0A34BDC0, 0x0A342D00, 0x0A339C40, - 0x0A330B80, 0x0A327AC0, 0x0A31EA00, - 0x0A315940, 0x0A30C880, 0x0A3037C0, - 0x0A2FA700, 0x0A2F1640, 0x0A2E8580, - 0x0A2DF4C0, 0x0A2D6400, 0x0A2CD340, - 0x0A2C4280, 0x0A2BB1C0, 0x0A2B2100, - 0x0A2A9040, 0x0A29FF80, 0x0A296EC0, - 0x0A28DE00, 0x0A284D40, 0x0A27BC80, - 0x0A272BC0, 0x0A269B00, 0x0A260A40, - 0x0A257980, 0x0A24E8C0, 0x0A245800, - 0x0A23C740, 0x0A233680, 0x0A22A5C0, - 0x0A221500, 0x0A218440, 0x0A20F380, - 0x0A2062C0, 0x0A1FD200, 0x0A1F4140, - 0x0A1EB080, 0x0A1E1FC0, 0x0A1D8F00, - 0x0A1CFE40, 0x0A1C6D80, 0x0A1BDCC0, - 0x0A1B4C00, 0x0A1ABB40, 0x0A1A2A80, - 0x0A1999C0, 0x0A190900, 0x0A187840, - 0x0A17E780, 0x0A1756C0, 0x0A16C600, - 0x0A163540, 0x0A15A480, 0x0A1513C0, - 0x0A148300, 0x0A13F240, 0x0A136180, - 0x0A12D0C0, 0x0A124000, 0x0A11AF40, - 0x0A111E80, 0x0A108DC0, 0x0A0FFD00, - 0x0A0F6C40, 0x0A0EDB80, 0x0A0E4AC0, - 0x0A0DBA00, 0x0A0D2940, 0x0A0C9880, - 0x0A0C07C0, 0x0A0B7700, 0x0A0AE640, - 0x0A0A5580, 0x0A09C4C0, 0x0A093400, - 0x0A08A340, 0x0A081280, 0x0A0781C0, - 0x0A06F100, 0x0A066040, 0x0A05CF80, - 0x0A053EC0, 0x0A04AE00, 0x0A041D40, - 0x0A038C80, 0x0A02FBC0, 0x0A026B00, - 0x0A01DA40, 0x0A014980, 0x0A00B8C0, - 0x0A002800, 0x09FF9740, 0x09FF0680, - 0x09FE75C0, 0x09FDE500, 0x09FD5440, - 0x09FCC380, 0x09FC32C0, 0x09FBA200, - 0x09FB1140, 0x09FA8080, 0x09F9EFC0, - 0x09F95F00, 0x09F8CE40, 0x09F83D80, - 0x09F7ACC0, 0x09F71C00, 0x09F68B40, - 0x09F5FA80, 0x09F569C0, 0x09F4D900, - 0x09F44840, 0x09F3B780, 0x09F326C0, - 0x09F29600, 0x09F20540, 0x09F17480, - 0x09F0E3C0, 0x09F05300, 0x09EFC240, - 0x09EF3180, 0x09EEA0C0, 0x09EE1000, - 0x09ED7F40, 0x09ECEE80, 0x09EC5DC0, - 0x09EBCD00, 0x09EB3C40, 0x09EAAB80, - 0x09EA1AC0, 0x09E98A00, 0x09E8F940, - 0x09E86880, 0x09E7D7C0, 0x09E74700, - 0x09E6B640, 0x09E62580, 0x09E594C0, - 0x09E50400, 0x09E47340, 0x09E3E280, - 0x09E351C0, 0x09E2C100, 0x09E23040, - 0x09E19F80, 0x09E10EC0, 0x09E07E00, - 0x09DFED40, 0x09DF5C80, 0x09DECBC0, - 0x09DE3B00, 0x09DDAA40, 0x09DD1980, - 0x09DC88C0, 0x09DBF800, 0x09DB6740, - 0x09DAD680, 0x09DA45C0, 0x09D9B500, - 0x09D92440, 0x09D89380, 0x09D802C0, - 0x09D77200, 0x09D6E140, 0x09D65080, - 0x09D5BFC0, 0x09D52F00, 0x09D49E40, - 0x09D40D80, 0x09D37CC0, 0x09D2EC00, - 0x09D25B40, 0x09D1CA80, 0x09D139C0, - 0x09D0A900, 0x09D01840, 0x09CF8780, - 0x09CEF6C0, 0x09CE6600, 0x09CDD540, - 0x09CD4480, 0x09CCB3C0, 0x09CC2300, - 0x09CB9240, 0x09CB0180, 0x09CA70C0, - 0x09C9E000, 0x09C94F40, 0x09C8BE80, - 0x09C82DC0, 0x09C79D00, 0x09C70C40, - 0x09C67B80, 0x09C5EAC0, 0x09C55A00, - 0x09C4C940, 0x09C43880, 0x09C3A7C0, - 0x09C31700, 0x09C28640, 0x09C1F580, - 0x09C164C0, 0x09C0D400, 0x09C04340, - 0x09BFB280, 0x09BF21C0, 0x09BE9100, - 0x09BE0040, 0x09BD6F80, 0x09BCDEC0, - 0x09BC4E00, 0x09BBBD40, 0x09BB2C80, - 0x09BA9BC0, 0x09BA0B00, 0x09B97A40, - 0x09B8E980, 0x09B858C0, 0x09B7C800, - 0x09B73740, 0x09B6A680, 0x09B615C0, - 0x09B58500, 0x09B4F440, 0x09B46380, - 0x09B3D2C0, 0x09B34200, 0x09B2B140, - 0x09B22080, 0x09B18FC0, 0x09B0FF00, - 0x09B06E40, 0x09AFDD80, 0x09AF4CC0, - 0x09AEBC00, 0x09AE2B40, 0x09AD9A80, - 0x09AD09C0, 0x09AC7900, 0x09ABE840, - 0x09AB5780, 0x09AAC6C0, 0x09AA3600, - 0x09A9A540, 0x09A91480, 0x09A883C0, - 0x09A7F300, 0x09A76240, 0x09A6D180, - 0x09A640C0, 0x09A5B000, 0x09A51F40, - 0x09A48E80, 0x09A3FDC0, 0x09A36D00, - 0x09A2DC40, 0x09A24B80, 0x09A1BAC0, - 0x09A12A00, 0x09A09940, 0x09A00880, - 0x099F77C0, 0x099EE700, 0x099E5640, - 0x099DC580, 0x099D34C0, 0x099CA400, - 0x099C1340, 0x099B8280, 0x099AF1C0, - 0x099A6100, 0x0999D040, 0x09993F80, - 0x0998AEC0, 0x09981E00, 0x09978D40, - 0x0996FC80, 0x09966BC0, 0x0995DB00, - 0x09954A40, 0x0994B980, 0x099428C0, - 0x09939800, 0x09930740, 0x09927680, - 0x0991E5C0, 0x09915500, 0x0990C440, - 0x09903380, 0x098FA2C0, 0x098F1200, - 0x098E8140, 0x098DF080, 0x098D5FC0, - 0x098CCF00, 0x098C3E40, 0x098BAD80, - 0x098B1CC0, 0x098A8C00, 0x0989FB40, - 0x09896A80, 0x0988D9C0, 0x09884900, - 0x0987B840, 0x09872780, 0x098696C0, - 0x09860600, 0x09857540, 0x0984E480, - 0x098453C0, 0x0983C300, 0x09833240, - 0x0982A180, 0x098210C0, 0x09818000, - 0x0980EF40, 0x09805E80, 0x097FCDC0, - 0x097F3D00, 0x097EAC40, 0x097E1B80, - 0x097D8AC0, 0x097CFA00, 0x097C6940, - 0x097BD880, 0x097B47C0, 0x097AB700, - 0x097A2640, 0x09799580, 0x097904C0, - 0x09787400, 0x0977E340, 0x09775280, - 0x0976C1C0, 0x09763100, 0x0975A040, - 0x09750F80, 0x09747EC0, 0x0973EE00, - 0x09735D40, 0x0972CC80, 0x09723BC0, - 0x0971AB00, 0x09711A40, 0x09708980, - 0x096FF8C0, 0x096F6800, 0x096ED740, - 0x096E4680, 0x096DB5C0, 0x096D2500, - 0x096C9440, 0x096C0380, 0x096B72C0, - 0x096AE200, 0x096A5140, 0x0969C080, - 0x09692FC0, 0x09689F00, 0x09680E40, - 0x09677D80, 0x0966ECC0, 0x09665C00, - 0x0965CB40, 0x09653A80, 0x0964A9C0, - 0x09641900, 0x09638840, 0x0962F780, - 0x096266C0, 0x0961D600, 0x09614540, - 0x0960B480, 0x096023C0, 0x095F9300, - 0x095F0240, 0x095E7180, 0x095DE0C0, - 0x095D5000, 0x095CBF40, 0x095C2E80, - 0x095B9DC0, 0x095B0D00, 0x095A7C40, - 0x0959EB80, 0x09595AC0, 0x0958CA00, - 0x09583940, 0x0957A880, 0x095717C0, - 0x09568700, 0x0955F640, 0x09556580, - 0x0954D4C0, 0x09544400, 0x0953B340, - 0x09532280, 0x095291C0, 0x09520100, - 0x09517040, 0x0950DF80, 0x09504EC0, - 0x094FBE00, 0x094F2D40, 0x094E9C80, - 0x094E0BC0, 0x094D7B00, 0x094CEA40, - 0x094C5980, 0x094BC8C0, 0x094B3800, - 0x094AA740, 0x094A1680, 0x094985C0, - 0x0948F500, 0x09486440, 0x0947D380, - 0x094742C0, 0x0946B200, 0x09462140, - 0x09459080, 0x0944FFC0, 0x09446F00, - 0x0943DE40, 0x09434D80, 0x0942BCC0, - 0x09422C00, 0x09419B40, 0x09410A80, - 0x094079C0, 0x093FE900, 0x093F5840, - 0x093EC780, 0x093E36C0, 0x093DA600, - 0x093D1540, 0x093C8480, 0x093BF3C0, - 0x093B6300, 0x093AD240, 0x093A4180, - 0x0939B0C0, 0x09392000, 0x09388F40, - 0x0937FE80, 0x09376DC0, 0x0936DD00, - 0x09364C40, 0x0935BB80, 0x09352AC0, - 0x09349A00, 0x09340940, 0x09337880, - 0x0932E7C0, 0x09325700, 0x0931C640, - 0x09313580, 0x0930A4C0, 0x09301400, - 0x092F8340, 0x092EF280, 0x092E61C0, - 0x092DD100, 0x092D4040, 0x092CAF80, - 0x092C1EC0, 0x092B8E00, 0x092AFD40, - 0x092A6C80, 0x0929DBC0, 0x09294B00, - 0x0928BA40, 0x09282980, 0x092798C0, - 0x09270800, 0x09267740, 0x0925E680, - 0x092555C0, 0x0924C500, 0x09243440, - 0x0923A380, 0x092312C0, 0x09228200, - 0x0921F140, 0x09216080, 0x0920CFC0, - 0x09203F00, 0x091FAE40, 0x091F1D80, - 0x091E8CC0, 0x091DFC00, 0x091D6B40, - 0x091CDA80, 0x091C49C0, 0x091BB900, - 0x091B2840, 0x091A9780, 0x091A06C0, - 0x09197600, 0x0918E540, 0x09185480, - 0x0917C3C0, 0x09173300, 0x0916A240, - 0x09161180, 0x091580C0, 0x0914F000, - 0x09145F40, 0x0913CE80, 0x09133DC0, - 0x0912AD00, 0x09121C40, 0x09118B80, - 0x0910FAC0, 0x09106A00, 0x090FD940, - 0x090F4880, 0x090EB7C0, 0x090E2700, - 0x090D9640, 0x090D0580, 0x090C74C0, - 0x090BE400, 0x090B5340, 0x090AC280, - 0x090A31C0, 0x0909A100, 0x09091040, - 0x09087F80, 0x0907EEC0, 0x09075E00, - 0x0906CD40, 0x09063C80, 0x0905ABC0, - 0x09051B00, 0x09048A40, 0x0903F980, - 0x090368C0, 0x0902D800, 0x09024740, - 0x0901B680, 0x090125C0, 0x09009500, - 0x09000440, 0x08FF7380, 0x08FEE2C0, - 0x08FE5200, 0x08FDC140, 0x08FD3080, - 0x08FC9FC0, 0x08FC0F00, 0x08FB7E40, - 0x08FAED80, 0x08FA5CC0, 0x08F9CC00, - 0x08F93B40, 0x08F8AA80, 0x08F819C0, - 0x08F78900, 0x08F6F840, 0x08F66780, - 0x08F5D6C0, 0x08F54600, 0x08F4B540, - 0x08F42480, 0x08F393C0, 0x08F30300, - 0x08F27240, 0x08F1E180, 0x08F150C0, - 0x08F0C000, 0x08F02F40, 0x08EF9E80, - 0x08EF0DC0, 0x08EE7D00, 0x08EDEC40, - 0x08ED5B80, 0x08ECCAC0, 0x08EC3A00, - 0x08EBA940, 0x08EB1880, 0x08EA87C0, - 0x08E9F700, 0x08E96640, 0x08E8D580, - 0x08E844C0, 0x08E7B400, 0x08E72340, - 0x08E69280, 0x08E601C0, 0x08E57100, - 0x08E4E040, 0x08E44F80, 0x08E3BEC0, - 0x08E32E00, 0x08E29D40, 0x08E20C80, - 0x08E17BC0, 0x08E0EB00, 0x08E05A40, - 0x08DFC980, 0x08DF38C0, 0x08DEA800, - 0x08DE1740, 0x08DD8680, 0x08DCF5C0, - 0x08DC6500, 0x08DBD440, 0x08DB4380, - 0x08DAB2C0, 0x08DA2200, 0x08D99140, - 0x08D90080, 0x08D86FC0, 0x08D7DF00, - 0x08D74E40, 0x08D6BD80, 0x08D62CC0, - 0x08D59C00, 0x08D50B40, 0x08D47A80, - 0x08D3E9C0, 0x08D35900, 0x08D2C840, - 0x08D23780, 0x08D1A6C0, 0x08D11600, - 0x08D08540, 0x08CFF480, 0x08CF63C0, - 0x08CED300, 0x08CE4240, 0x08CDB180, - 0x08CD20C0, 0x08CC9000, 0x08CBFF40, - 0x08CB6E80, 0x08CADDC0, 0x08CA4D00, - 0x08C9BC40, 0x08C92B80, 0x08C89AC0, - 0x08C80A00, 0x08C77940, 0x08C6E880, - 0x08C657C0, 0x08C5C700, 0x08C53640, - 0x08C4A580, 0x08C414C0, 0x08C38400, - 0x08C2F340, 0x08C26280, 0x08C1D1C0, - 0x08C14100, 0x08C0B040, 0x08C01F80, - 0x08BF8EC0, 0x08BEFE00, 0x08BE6D40, - 0x08BDDC80, 0x08BD4BC0, 0x08BCBB00, - 0x08BC2A40, 0x08BB9980, 0x08BB08C0, - 0x08BA7800, 0x08B9E740, 0x08B95680, - 0x08B8C5C0, 0x08B83500, 0x08B7A440, - 0x08B71380, 0x08B682C0, 0x08B5F200, - 0x08B56140, 0x08B4D080, 0x08B43FC0, - 0x08B3AF00, 0x08B31E40, 0x08B28D80, - 0x08B1FCC0, 0x08B16C00, 0x08B0DB40, - 0x08B04A80, 0x08AFB9C0, 0x08AF2900, - 0x08AE9840, 0x08AE0780, 0x08AD76C0, - 0x08ACE600, 0x08AC5540, 0x08ABC480, - 0x08AB33C0, 0x08AAA300, 0x08AA1240, - 0x08A98180, 0x08A8F0C0, 0x08A86000, - 0x08A7CF40, 0x08A73E80, 0x08A6ADC0, - 0x08A61D00, 0x08A58C40, 0x08A4FB80, - 0x08A46AC0, 0x08A3DA00, 0x08A34940, - 0x08A2B880, 0x08A227C0, 0x08A19700, - 0x08A10640, 0x08A07580, 0x089FE4C0, - 0x089F5400, 0x089EC340, 0x089E3280, - 0x089DA1C0, 0x089D1100, 0x089C8040, - 0x089BEF80, 0x089B5EC0, 0x089ACE00, - 0x089A3D40, 0x0899AC80, 0x08991BC0, - 0x08988B00, 0x0897FA40, 0x08976980, - 0x0896D8C0, 0x08964800, 0x0895B740, - 0x08952680, 0x089495C0, 0x08940500, - 0x08937440, 0x0892E380, 0x089252C0, - 0x0891C200, 0x08913140, 0x0890A080, - 0x08900FC0, 0x088F7F00, 0x088EEE40, - 0x088E5D80, 0x088DCCC0, 0x088D3C00, - 0x088CAB40, 0x088C1A80, 0x088B89C0, - 0x088AF900, 0x088A6840, 0x0889D780, - 0x088946C0, 0x0888B600, 0x08882540, - 0x08879480, 0x088703C0, 0x08867300, - 0x0885E240, 0x08855180, 0x0884C0C0, - 0x08843000, 0x08839F40, 0x08830E80, - 0x08827DC0, 0x0881ED00, 0x08815C40, - 0x0880CB80, 0x08803AC0, 0x087FAA00, - 0x087F1940, 0x087E8880, 0x087DF7C0, - 0x087D6700, 0x087CD640, 0x087C4580, - 0x087BB4C0, 0x087B2400, 0x087A9340, - 0x087A0280, 0x087971C0, 0x0878E100, - 0x08785040, 0x0877BF80, 0x08772EC0, - 0x08769E00, 0x08760D40, 0x08757C80, - 0x0874EBC0, 0x08745B00, 0x0873CA40, - 0x08733980, 0x0872A8C0, 0x08721800, - 0x08718740, 0x0870F680, 0x087065C0, - 0x086FD500, 0x086F4440, 0x086EB380, - 0x086E22C0, 0x086D9200, 0x086D0140, - 0x086C7080, 0x086BDFC0, 0x086B4F00, - 0x086ABE40, 0x086A2D80, 0x08699CC0, - 0x08690C00, 0x08687B40, 0x0867EA80, - 0x086759C0, 0x0866C900, 0x08663840, - 0x0865A780, 0x086516C0, 0x08648600, - 0x0863F540, 0x08636480, 0x0862D3C0, - 0x08624300, 0x0861B240, 0x08612180, - 0x086090C0, 0x08620000, 0x08617680, - 0x0860ED00, 0x08606380, 0x085FDA00, - 0x085F5080, 0x085EC700, 0x085E3D80, - 0x085DB400, 0x085D2A80, 0x085CA100, - 0x085C1780, 0x085B8E00, 0x085B0480, - 0x085A7B00, 0x0859F180, 0x08596800, - 0x0858DE80, 0x08585500, 0x0857CB80, - 0x08574200, 0x0856B880, 0x08562F00, - 0x0855A580, 0x08551C00, 0x08549280, - 0x08540900, 0x08537F80, 0x0852F600, - 0x08526C80, 0x0851E300, 0x08515980, - 0x0850D000, 0x08504680, 0x084FBD00, - 0x084F3380, 0x084EAA00, 0x084E2080, - 0x084D9700, 0x084D0D80, 0x084C8400, - 0x084BFA80, 0x084B7100, 0x084AE780, - 0x084A5E00, 0x0849D480, 0x08494B00, - 0x0848C180, 0x08483800, 0x0847AE80, - 0x08472500, 0x08469B80, 0x08461200, - 0x08458880, 0x0844FF00, 0x08447580, - 0x0843EC00, 0x08436280, 0x0842D900, - 0x08424F80, 0x0841C600, 0x08413C80, - 0x0840B300, 0x08402980, 0x083FA000, - 0x083F1680, 0x083E8D00, 0x083E0380, - 0x083D7A00, 0x083CF080, 0x083C6700, - 0x083BDD80, 0x083B5400, 0x083ACA80, - 0x083A4100, 0x0839B780, 0x08392E00, - 0x0838A480, 0x08381B00, 0x08379180, - 0x08370800, 0x08367E80, 0x0835F500, - 0x08356B80, 0x0834E200, 0x08345880, - 0x0833CF00, 0x08334580, 0x0832BC00, - 0x08323280, 0x0831A900, 0x08311F80, - 0x08309600, 0x08300C80, 0x082F8300, - 0x082EF980, 0x082E7000, 0x082DE680, - 0x082D5D00, 0x082CD380, 0x082C4A00, - 0x082BC080, 0x082B3700, 0x082AAD80, - 0x082A2400, 0x08299A80, 0x08291100, - 0x08288780, 0x0827FE00, 0x08277480, - 0x0826EB00, 0x08266180, 0x0825D800, - 0x08254E80, 0x0824C500, 0x08243B80, - 0x0823B200, 0x08232880, 0x08229F00, - 0x08221580, 0x08218C00, 0x08210280, - 0x08207900, 0x081FEF80, 0x081F6600, - 0x081EDC80, 0x081E5300, 0x081DC980, - 0x081D4000, 0x081CB680, 0x081C2D00, - 0x081BA380, 0x081B1A00, 0x081A9080, - 0x081A0700, 0x08197D80, 0x0818F400, - 0x08186A80, 0x0817E100, 0x08175780, - 0x0816CE00, 0x08164480, 0x0815BB00, - 0x08153180, 0x0814A800, 0x08141E80, - 0x08139500, 0x08130B80, 0x08128200, - 0x0811F880, 0x08116F00, 0x0810E580, - 0x08105C00, 0x080FD280, 0x080F4900, - 0x080EBF80, 0x080E3600, 0x080DAC80, - 0x080D2300, 0x080C9980, 0x080C1000, - 0x080B8680, 0x080AFD00, 0x080A7380, - 0x0809EA00, 0x08096080, 0x0808D700, - 0x08084D80, 0x0807C400, 0x08073A80, - 0x0806B100, 0x08062780, 0x08059E00, - 0x08051480, 0x08048B00, 0x08040180, - 0x08037800, 0x0802EE80, 0x08026500, - 0x0801DB80, 0x08015200, 0x0800C880, - 0x08003F00, 0x07FFB580, 0x07FF2C00, - 0x07FEA280, 0x07FE1900, 0x07FD8F80, - 0x07FD0600, 0x07FC7C80, 0x07FBF300, - 0x07FB6980, 0x07FAE000, 0x07FA5680, - 0x07F9CD00, 0x07F94380, 0x07F8BA00, - 0x07F83080, 0x07F7A700, 0x07F71D80, - 0x07F69400, 0x07F60A80, 0x07F58100, - 0x07F4F780, 0x07F46E00, 0x07F3E480, - 0x07F35B00, 0x07F2D180, 0x07F24800, - 0x07F1BE80, 0x07F13500, 0x07F0AB80, - 0x07F02200, 0x07EF9880, 0x07EF0F00, - 0x07EE8580, 0x07EDFC00, 0x07ED7280, - 0x07ECE900, 0x07EC5F80, 0x07EBD600, - 0x07EB4C80, 0x07EAC300, 0x07EA3980, - 0x07E9B000, 0x07E92680, 0x07E89D00, - 0x07E81380, 0x07E78A00, 0x07E70080, - 0x07E67700, 0x07E5ED80, 0x07E56400, - 0x07E4DA80, 0x07E45100, 0x07E3C780, - 0x07E33E00, 0x07E2B480, 0x07E22B00, - 0x07E1A180, 0x07E11800, 0x07E08E80, - 0x07E00500, 0x07DF7B80, 0x07DEF200, - 0x07DE6880, 0x07DDDF00, 0x07DD5580, - 0x07DCCC00, 0x07DC4280, 0x07DBB900, - 0x07DB2F80, 0x07DAA600, 0x07DA1C80, - 0x07D99300, 0x07D90980, 0x07D88000, - 0x07D7F680, 0x07D76D00, 0x07D6E380, - 0x07D65A00, 0x07D5D080, 0x07D54700, - 0x07D4BD80, 0x07D43400, 0x07D3AA80, - 0x07D32100, 0x07D29780, 0x07D20E00, - 0x07D18480, 0x07D0FB00, 0x07D07180, - 0x07CFE800, 0x07CF5E80, 0x07CED500, - 0x07CE4B80, 0x07CDC200, 0x07CD3880, - 0x07CCAF00, 0x07CC2580, 0x07CB9C00, - 0x07CB1280, 0x07CA8900, 0x07C9FF80, - 0x07C97600, 0x07C8EC80, 0x07C86300, - 0x07C7D980, 0x07C75000, 0x07C6C680, - 0x07C63D00, 0x07C5B380, 0x07C52A00, - 0x07C4A080, 0x07C41700, 0x07C38D80, - 0x07C30400, 0x07C27A80, 0x07C1F100, - 0x07C16780, 0x07C0DE00, 0x07C05480, - 0x07BFCB00, 0x07BF4180, 0x07BEB800, - 0x07BE2E80, 0x07BDA500, 0x07BD1B80, - 0x07BC9200, 0x07BC0880, 0x07BB7F00, - 0x07BAF580, 0x07BA6C00, 0x07B9E280, - 0x07B95900, 0x07B8CF80, 0x07B84600, - 0x07B7BC80, 0x07B73300, 0x07B6A980, - 0x07B62000, 0x07B59680, 0x07B50D00, - 0x07B48380, 0x07B3FA00, 0x07B37080, - 0x07B2E700, 0x07B25D80, 0x07B1D400, - 0x07B14A80, 0x07B0C100, 0x07B03780, - 0x07AFAE00, 0x07AF2480, 0x07AE9B00, - 0x07AE1180, 0x07AD8800, 0x07ACFE80, - 0x07AC7500, 0x07ABEB80, 0x07AB6200, - 0x07AAD880, 0x07AA4F00, 0x07A9C580, - 0x07A93C00, 0x07A8B280, 0x07A82900, - 0x07A79F80, 0x07A71600, 0x07A68C80, - 0x07A60300, 0x07A57980, 0x07A4F000, - 0x07A46680, 0x07A3DD00, 0x07A35380, - 0x07A2CA00, 0x07A24080, 0x07A1B700, - 0x07A12D80, 0x07A0A400, 0x07A01A80, - 0x079F9100, 0x079F0780, 0x079E7E00, - 0x079DF480, 0x079D6B00, 0x079CE180, - 0x079C5800, 0x079BCE80, 0x079B4500, - 0x079ABB80, 0x079A3200, 0x0799A880, - 0x07991F00, 0x07989580, 0x07980C00, - 0x07978280, 0x0796F900, 0x07966F80, - 0x0795E600, 0x07955C80, 0x0794D300, - 0x07944980, 0x0793C000, 0x07933680, - 0x0792AD00, 0x07922380, 0x07919A00, - 0x07911080, 0x07908700, 0x078FFD80, - 0x078F7400, 0x078EEA80, 0x078E6100, - 0x078DD780, 0x078D4E00, 0x078CC480, - 0x078C3B00, 0x078BB180, 0x078B2800, - 0x078A9E80, 0x078A1500, 0x07898B80, - 0x07890200, 0x07887880, 0x0787EF00, - 0x07876580, 0x0786DC00, 0x07865280, - 0x0785C900, 0x07853F80, 0x0784B600, - 0x07842C80, 0x0783A300, 0x07831980, - 0x07829000, 0x07820680, 0x07817D00, - 0x0780F380, 0x07806A00, 0x077FE080, - 0x077F5700, 0x077ECD80, 0x077E4400, - 0x077DBA80, 0x077D3100, 0x077CA780, - 0x077C1E00, 0x077B9480, 0x077B0B00, - 0x077A8180, 0x0779F800, 0x07796E80, - 0x0778E500, 0x07785B80, 0x0777D200, - 0x07774880, 0x0776BF00, 0x07763580, - 0x0775AC00, 0x07752280, 0x07749900, - 0x07740F80, 0x07738600, 0x0772FC80, - 0x07727300, 0x0771E980, 0x07716000, - 0x0770D680, 0x07704D00, 0x076FC380, - 0x076F3A00, 0x076EB080, 0x076E2700, - 0x076D9D80, 0x076D1400, 0x076C8A80, - 0x076C0100, 0x076B7780, 0x076AEE00, - 0x076A6480, 0x0769DB00, 0x07695180, - 0x0768C800, 0x07683E80, 0x0767B500, - 0x07672B80, 0x0766A200, 0x07661880, - 0x07658F00, 0x07650580, 0x07647C00, - 0x0763F280, 0x07636900, 0x0762DF80, - 0x07625600, 0x0761CC80, 0x07614300, - 0x0760B980, 0x07603000, 0x075FA680, - 0x075F1D00, 0x075E9380, 0x075E0A00, - 0x075D8080, 0x075CF700, 0x075C6D80, - 0x075BE400, 0x075B5A80, 0x075AD100, - 0x075A4780, 0x0759BE00, 0x07593480, - 0x0758AB00, 0x07582180, 0x07579800, - 0x07570E80, 0x07568500, 0x0755FB80, - 0x07557200, 0x0754E880, 0x07545F00, - 0x0753D580, 0x07534C00, 0x0752C280, - 0x07523900, 0x0751AF80, 0x07512600, - 0x07509C80, 0x07501300, 0x074F8980, - 0x074F0000, 0x074E7680, 0x074DED00, - 0x074D6380, 0x074CDA00, 0x074C5080, - 0x074BC700, 0x074B3D80, 0x074AB400, - 0x074A2A80, 0x0749A100, 0x07491780, - 0x07488E00, 0x07480480, 0x07477B00, - 0x0746F180, 0x07466800, 0x0745DE80, - 0x07455500, 0x0744CB80, 0x07444200, - 0x0743B880, 0x07432F00, 0x0742A580, - 0x07421C00, 0x07419280, 0x07410900, - 0x07407F80, 0x073FF600, 0x073F6C80, - 0x073EE300, 0x073E5980, 0x073DD000, - 0x073D4680, 0x073CBD00, 0x073C3380, - 0x073BAA00, 0x073B2080, 0x073A9700, - 0x073A0D80, 0x07398400, 0x0738FA80, - 0x07387100, 0x0737E780, 0x07375E00, - 0x0736D480, 0x07364B00, 0x0735C180, - 0x07353800, 0x0734AE80, 0x07342500, - 0x07339B80, 0x07331200, 0x07328880, - 0x0731FF00, 0x07317580, 0x0730EC00, - 0x07306280, 0x072FD900, 0x072F4F80, - 0x072EC600, 0x072E3C80, 0x072DB300, - 0x072D2980, 0x072CA000, 0x072C1680, - 0x072B8D00, 0x072B0380, 0x072A7A00, - 0x0729F080, 0x07296700, 0x0728DD80, - 0x07285400, 0x0727CA80, 0x07274100, - 0x0726B780, 0x07262E00, 0x0725A480, - 0x07251B00, 0x07249180, 0x07240800, - 0x07237E80, 0x0722F500, 0x07226B80, - 0x0721E200, 0x07215880, 0x0720CF00, - 0x07204580, 0x071FBC00, 0x071F3280, - 0x071EA900, 0x071E1F80, 0x071D9600, - 0x071D0C80, 0x071C8300, 0x071BF980, - 0x071B7000, 0x071AE680, 0x071A5D00, - 0x0719D380, 0x07194A00, 0x0718C080, - 0x07183700, 0x0717AD80, 0x07172400, - 0x07169A80, 0x07161100, 0x07158780, - 0x0714FE00, 0x07147480, 0x0713EB00, - 0x07136180, 0x0712D800, 0x07124E80, - 0x0711C500, 0x07113B80, 0x0710B200, - 0x07102880, 0x070F9F00, 0x070F1580, - 0x070E8C00, 0x070E0280, 0x070D7900, - 0x070CEF80, 0x070C6600, 0x070BDC80, - 0x070B5300, 0x070AC980, 0x070A4000, - 0x0709B680, 0x07092D00, 0x0708A380, - 0x07081A00, 0x07079080, 0x07070700, - 0x07067D80, 0x0705F400, 0x07056A80, - 0x0704E100, 0x07045780, 0x0703CE00, - 0x07034480, 0x0702BB00, 0x07023180, - 0x0701A800, 0x07011E80, 0x07009500, - 0x07000B80, 0x06FF8200, 0x06FEF880, - 0x06FE6F00, 0x06FDE580, 0x06FD5C00, - 0x06FCD280, 0x06FC4900, 0x06FBBF80, - 0x06FB3600, 0x06FAAC80, 0x06FA2300, - 0x06F99980, 0x06F91000, 0x06F88680, - 0x06F7FD00, 0x06F77380, 0x06F6EA00, - 0x06F66080, 0x06F5D700, 0x06F54D80, - 0x06F4C400, 0x06F43A80, 0x06F3B100, - 0x06F32780, 0x06F29E00, 0x06F21480, - 0x06F18B00, 0x06F10180, 0x06F07800, - 0x06EFEE80, 0x06EF6500, 0x06EEDB80, - 0x06EE5200, 0x06EDC880, 0x06ED3F00, - 0x06ECB580, 0x06EC2C00, 0x06EBA280, - 0x06EB1900, 0x06EA8F80, 0x06EA0600, - 0x06E97C80, 0x06E8F300, 0x06E86980, - 0x06E7E000, 0x06E75680, 0x06E6CD00, - 0x06E64380, 0x06E5BA00, 0x06E53080, - 0x06E4A700, 0x06E41D80, 0x06E39400, - 0x06E30A80, 0x06E28100, 0x06E1F780, - 0x06E16E00, 0x06E0E480, 0x06E05B00, - 0x06DFD180, 0x06DF4800, 0x06DEBE80, - 0x06DE3500, 0x06DDAB80, 0x06DD2200, - 0x06DC9880, 0x06DC0F00, 0x06DB8580, - 0x06DAFC00, 0x06DA7280, 0x06D9E900, - 0x06D95F80, 0x06D8D600, 0x06D84C80, - 0x06D7C300, 0x06D73980, 0x06D6B000, - 0x06D62680, 0x06D59D00, 0x06D51380, - 0x06D48A00, 0x06D40080, 0x06D37700, - 0x06D2ED80, 0x06D26400, 0x06D1DA80, - 0x06D15100, 0x06D0C780, 0x06D03E00, - 0x06CFB480, 0x06CF2B00, 0x06CEA180, - 0x06CE1800, 0x06CD8E80, 0x06CD0500, - 0x06CC7B80, 0x06CBF200, 0x06CB6880, - 0x06CADF00, 0x06CA5580, 0x06C9CC00, - 0x06C94280, 0x06C8B900, 0x06C82F80, - 0x06C7A600, 0x06C71C80, 0x06C69300, - 0x06C60980, 0x06C58000, 0x06C4F680, - 0x06C46D00, 0x06C3E380, 0x06C35A00, - 0x06C2D080, 0x06C24700, 0x06C1BD80, - 0x06C13400, 0x06C0AA80, 0x06C02100, - 0x06BF9780, 0x06BF0E00, 0x06BE8480, - 0x06BDFB00, 0x06BD7180, 0x06BCE800, - 0x06BC5E80, 0x06BBD500, 0x06BB4B80, - 0x06BAC200, 0x06BA3880, 0x06B9AF00, - 0x06B92580, 0x06B89C00, 0x06B81280, - 0x06B78900, 0x06B6FF80, 0x06B67600, - 0x06B5EC80, 0x06B56300, 0x06B4D980, - 0x06B45000, 0x06B3C680, 0x06B33D00, - 0x06B2B380, 0x06B22A00, 0x06B1A080, - 0x06B11700, 0x06B08D80, 0x06B00400, - 0x06AF7A80, 0x06AEF100, 0x06AE6780, - 0x06ADDE00, 0x06AD5480, 0x06ACCB00, - 0x06AC4180, 0x06ABB800, 0x06AB2E80, - 0x06AAA500, 0x06AA1B80, 0x06A99200, - 0x06A90880, 0x06A87F00, 0x06A7F580, - 0x06A76C00, 0x06A6E280, 0x06A65900, - 0x06A5CF80, 0x06A54600, 0x06A4BC80, - 0x06A43300, 0x06A3A980, 0x06A32000, - 0x06A29680, 0x06A20D00, 0x06A18380, - 0x06A0FA00, 0x06A07080, 0x069FE700, - 0x069F5D80, 0x069ED400, 0x069E4A80, - 0x069DC100, 0x069D3780, 0x069CAE00, - 0x069C2480, 0x069B9B00, 0x069B1180, - 0x069A8800, 0x0699FE80, 0x06997500, - 0x0698EB80, 0x06986200, 0x0697D880, - 0x06974F00, 0x0696C580, 0x06963C00, - 0x0695B280, 0x06952900, 0x06949F80, - 0x06941600, 0x06938C80, 0x06930300, - 0x06927980, 0x0691F000, 0x06916680, - 0x0690DD00, 0x06905380, 0x068FCA00, - 0x068F4080, 0x068EB700, 0x068E2D80, - 0x068DA400, 0x068D1A80, 0x068C9100, - 0x068C0780, 0x068B7E00, 0x068AF480, - 0x068A6B00, 0x0689E180, 0x06895800, - 0x0688CE80, 0x06884500, 0x0687BB80, - 0x06873200, 0x0686A880, 0x06861F00, - 0x06859580, 0x06850C00, 0x06848280, - 0x0683F900, 0x06836F80, 0x0682E600, - 0x06825C80, 0x0681D300, 0x06814980, - 0x0680C000, 0x06803680, 0x067FAD00, - 0x067F2380, 0x067E9A00, 0x067E1080, - 0x067D8700, 0x067CFD80, 0x067C7400, - 0x067BEA80, 0x067B6100, 0x067AD780, - 0x067A4E00, 0x0679C480, 0x06793B00, - 0x0678B180, 0x06782800, 0x06779E80, - 0x06771500, 0x06768B80, 0x06760200, - 0x06757880, 0x0674EF00, 0x06746580, - 0x0673DC00, 0x06735280, 0x0672C900, - 0x06723F80, 0x0671B600, 0x06712C80, - 0x0670A300, 0x06701980, 0x066F9000, - 0x066F0680, 0x066E7D00, 0x066DF380, - 0x066D6A00, 0x066CE080, 0x066C5700, - 0x066BCD80, 0x066B4400, 0x066ABA80, - 0x066A3100, 0x0669A780, 0x06691E00, - 0x06689480, 0x06680B00, 0x06678180, - 0x0666F800, 0x06666E80, 0x0665E500, - 0x06655B80, 0x0664D200, 0x06644880, - 0x0663BF00, 0x06633580, 0x0662AC00, - 0x06622280, 0x06619900, 0x06610F80, - 0x06608600, 0x065FFC80, 0x065F7300, - 0x065EE980, 0x065E6000, 0x065DD680, - 0x065D4D00, 0x065CC380, 0x065C3A00, - 0x065BB080, 0x065B2700, 0x065A9D80, - 0x065A1400, 0x06598A80, 0x06590100, - 0x06587780, 0x0657EE00, 0x06576480, - 0x0656DB00, 0x06565180, 0x0655C800, - 0x06553E80, 0x0654B500, 0x06542B80, - 0x0653A200, 0x06531880, 0x06528F00, - 0x06520580, 0x06517C00, 0x0650F280, - 0x06506900, 0x064FDF80, 0x064F5600, - 0x064ECC80, 0x064E4300, 0x064DB980, - 0x064D3000, 0x064CA680, 0x064C1D00, - 0x064B9380, 0x064B0A00, 0x064A8080, - 0x0649F700, 0x06496D80, 0x0648E400, - 0x06485A80, 0x0647D100, 0x06474780, - 0x0646BE00, 0x06463480, 0x0645AB00, - 0x06452180, 0x06449800, 0x06440E80, - 0x06438500, 0x0642FB80, 0x06427200, - 0x0641E880, 0x06415F00, 0x0640D580, - 0x06404C00, 0x063FC280, 0x063F3900, - 0x063EAF80, 0x063E2600, 0x063D9C80, - 0x063D1300, 0x063C8980, 0x063C0000, - 0x063B7680, 0x063AED00, 0x063A6380, - 0x0639DA00, 0x06395080, 0x0638C700, - 0x06383D80, 0x0637B400, 0x06372A80, - 0x0636A100, 0x06361780, 0x06358E00, - 0x06350480, 0x06347B00, 0x0633F180, - 0x06336800, 0x0632DE80, 0x06325500, - 0x0631CB80, 0x06314200, 0x0630B880, - 0x06302F00, 0x062FA580, 0x062F1C00, - 0x062E9280, 0x062E0900, 0x062D7F80, - 0x062CF600, 0x062C6C80, 0x062BE300, - 0x062B5980, 0x062AD000, 0x062A4680, - 0x0629BD00, 0x06293380, 0x0628AA00, - 0x06282080, 0x06279700, 0x06270D80, - 0x06268400, 0x0625FA80, 0x06257100, - 0x0624E780, 0x06245E00, 0x0623D480, - 0x06234B00, 0x0622C180, 0x06223800, - 0x0621AE80, 0x06212500, 0x06209B80, - 0x06201200, 0x061F8880, 0x061EFF00, - 0x061E7580, 0x061DEC00, 0x061D6280, - 0x061CD900, 0x061C4F80, 0x061BC600, - 0x061B3C80, 0x061AB300, 0x061A2980, - 0x0619A000, 0x06191680, 0x06188D00, - 0x06180380, 0x06177A00, 0x0616F080, - 0x06166700, 0x0615DD80, 0x06155400, - 0x0614CA80, 0x06144100, 0x0613B780, - 0x06132E00, 0x0612A480, 0x06121B00, - 0x06119180, 0x06110800, 0x06107E80, - 0x060FF500, 0x060F6B80, 0x060EE200, - 0x060E5880, 0x060DCF00, 0x060D4580, - 0x060CBC00, 0x060C3280, 0x060BA900, - 0x060B1F80, 0x060A9600, 0x060A0C80, - 0x06098300, 0x0608F980, 0x06087000, - 0x0607E680, 0x06075D00, 0x0606D380, - 0x06064A00, 0x0605C080, 0x06053700, - 0x0604AD80, 0x06042400, 0x06039A80, - 0x06031100, 0x06028780, 0x0601FE00, - 0x06017480, 0x0600EB00, 0x06006180, - 0x05FFD800, 0x05FF4E80, 0x05FEC500, - 0x05FE3B80, 0x05FDB200, 0x05FD2880, - 0x05FC9F00, 0x05FC1580, 0x05FB8C00, - 0x05FB0280, 0x05FA7900, 0x05F9EF80, - 0x05F96600, 0x05F8DC80, 0x05F85300, - 0x05F7C980, 0x05F74000, 0x05F6B680, - 0x05F62D00, 0x05F5A380, 0x05F51A00, - 0x05F49080, 0x05F40700, 0x05F37D80, - 0x05F2F400, 0x05F26A80, 0x05F1E100, - 0x05F15780, 0x05F0CE00, 0x05F04480, - 0x05EFBB00, 0x05EF3180, 0x05EEA800, - 0x05EE1E80, 0x05ED9500, 0x05ED0B80, - 0x05EC8200, 0x05EBF880, 0x05EB6F00, - 0x05EAE580, 0x05EA5C00, 0x05E9D280, - 0x05E94900, 0x05E8BF80, 0x05E83600, - 0x05E7AC80, 0x05E72300, 0x05E69980, - 0x05E61000, 0x05E58680, 0x05E4FD00, - 0x05E47380, 0x05E3EA00, 0x05E36080, - 0x05E2D700, 0x05E24D80, 0x05E1C400, - 0x05E13A80, 0x05E0B100, 0x05E02780, - 0x05DF9E00, 0x05DF1480, 0x05DE8B00, - 0x05DE0180, 0x05DD7800, 0x05DCEE80, - 0x05DC6500, 0x05DBDB80, 0x05DB5200, - 0x05DAC880, 0x05DA3F00, 0x05D9B580, - 0x05D92C00, 0x05D8A280, 0x05D81900, - 0x05D78F80, 0x05D70600, 0x05D67C80, - 0x05D5F300, 0x05D56980, 0x05D4E000, - 0x05D45680, 0x05D3CD00, 0x05D34380, - 0x05D2BA00, 0x05D23080, 0x05D1A700, - 0x05D11D80, 0x05D09400, 0x05D00A80, - 0x05CF8100, 0x05CEF780, 0x05CE6E00, - 0x05CDE480, 0x05CD5B00, 0x05CCD180, - 0x05CC4800, 0x05CBBE80, 0x05CB3500, - 0x05CAAB80, 0x05CA2200, 0x05C99880, - 0x05C90F00, 0x05C88580, 0x05C7FC00, - 0x05C77280, 0x05C6E900, 0x05C65F80, - 0x05C5D600, 0x05C54C80, 0x05C4C300, - 0x05C43980, 0x05C3B000, 0x05C32680, - 0x05C29D00, 0x05C21380, 0x05C18A00, - 0x05C10080, 0x05C07700, 0x05BFED80, - 0x05BF6400, 0x05BEDA80, 0x05BE5100, - 0x05BDC780, 0x05BD3E00, 0x05BCB480, - 0x05BC2B00, 0x05BBA180, 0x05BB1800, - 0x05BA8E80, 0x05BA0500, 0x05B97B80, - 0x05B8F200, 0x05B86880, 0x05B7DF00, - 0x05B75580, 0x05B6CC00, 0x05B64280, - 0x05B5B900, 0x05B52F80, 0x05B4A600, - 0x05B41C80, 0x05B39300, 0x05B30980, - 0x05B28000, 0x05B1F680, 0x05B16D00, - 0x05B0E380, 0x05B05A00, 0x05AFD080, - 0x05AF4700, 0x05AEBD80, 0x05AE3400, - 0x05ADAA80, 0x05AD2100, 0x05AC9780, - 0x05AC0E00, 0x05AB8480, 0x05AAFB00, - 0x05AA7180, 0x05A9E800, 0x05A95E80, - 0x05A8D500, 0x05A84B80, 0x05A7C200, - 0x05A73880, 0x05A6AF00, 0x05A62580, - 0x05A59C00, 0x05A51280, 0x05A48900, - 0x05A3FF80, 0x05A37600, 0x05A2EC80, - 0x05A26300, 0x05A1D980, 0x05A15000, - 0x05A0C680, 0x05A03D00, 0x059FB380, - 0x059F2A00, 0x059EA080, 0x059E1700, - 0x059D8D80, 0x059D0400, 0x059C7A80, - 0x059BF100, 0x059B6780, 0x059ADE00, - 0x059A5480, 0x0599CB00, 0x05994180, - 0x0598B800, 0x05982E80, 0x0597A500, - 0x05971B80, 0x05969200, 0x05960880, - 0x05957F00, 0x0594F580, 0x05946C00, - 0x0593E280, 0x05935900, 0x0592CF80, - 0x05924600, 0x0591BC80, 0x05913300, - 0x0590A980, 0x05902000, 0x058F9680, - 0x058F0D00, 0x058E8380, 0x058DFA00, - 0x058D7080, 0x058CE700, 0x058C5D80, - 0x058BD400, 0x058B4A80, 0x058AC100, - 0x058A3780, 0x0589AE00, 0x05892480, - 0x05889B00, 0x05881180, 0x05878800, - 0x0586FE80, 0x05867500, 0x0585EB80, - 0x05856200, 0x0584D880, 0x05844F00, - 0x0583C580, 0x05833C00, 0x0582B280, - 0x05822900, 0x05819F80, 0x05811600, - 0x05808C80, 0x05800300, 0x057F7980, - 0x057EF000, 0x057E6680, 0x057DDD00, - 0x057D5380, 0x057CCA00, 0x057C4080, - 0x057BB700, 0x057B2D80, 0x057AA400, - 0x057A1A80, 0x05799100, 0x05790780, - 0x05787E00, 0x0577F480, 0x05776B00, - 0x0576E180, 0x05765800, 0x0575CE80, - 0x05754500, 0x0574BB80, 0x05743200, - 0x0573A880, 0x05731F00, 0x05729580, - 0x05720C00, 0x05718280, 0x0570F900, - 0x05706F80, 0x056FE600, 0x056F5C80, - 0x056ED300, 0x056E4980, 0x056DC000, - 0x056D3680, 0x056CAD00, 0x056C2380, - 0x056B9A00, 0x056B1080, 0x056A8700, - 0x0569FD80, 0x05697400, 0x0568EA80, - 0x05686100, 0x0567D780, 0x05674E00, - 0x0566C480, 0x05663B00, 0x0565B180, - 0x05652800, 0x05649E80, 0x05641500, - 0x05638B80, 0x05630200, 0x05627880, - 0x0561EF00, 0x05616580, 0x0560DC00, - 0x05605280, 0x055FC900, 0x055F3F80, - 0x055EB600, 0x055E2C80, 0x055DA300, - 0x055D1980, 0x055C9000, 0x055C0680, - 0x055B7D00, 0x055AF380, 0x055A6A00, - 0x0559E080, 0x05595700, 0x0558CD80, - 0x05584400, 0x0557BA80, 0x05573100, - 0x0556A780, 0x05561E00, 0x05559480, - 0x05550B00, 0x05548180, 0x0553F800, - 0x05536E80, 0x0552E500, 0x05525B80, - 0x0551D200, 0x05514880, 0x0550BF00, - 0x05503580, 0x054FAC00, 0x054F2280, - 0x054E9900, 0x054E0F80, 0x054D8600, - 0x054CFC80, 0x054C7300, 0x054BE980, - 0x054B6000, 0x054AD680, 0x054A4D00, - 0x0549C380, 0x05493A00, 0x0548B080, - 0x05482700, 0x05479D80, 0x05471400, - 0x05468A80, 0x05460100, 0x05457780, - 0x0544EE00, 0x05446480, 0x0543DB00, - 0x05435180, 0x0542C800, 0x05423E80, - 0x0541B500, 0x05412B80, 0x0540A200, - 0x05401880, 0x053F8F00, 0x053F0580, - 0x053E7C00, 0x053DF280, 0x053D6900, - 0x053CDF80, 0x053C5600, 0x053BCC80, - 0x053B4300, 0x053AB980, 0x053A3000, - 0x0539A680, 0x05391D00, 0x05389380, - 0x05380A00, 0x05378080, 0x0536F700, - 0x05366D80, 0x0535E400, 0x05355A80, - 0x0534D100, 0x05344780, 0x0533BE00, - 0x05333480, 0x0532AB00, 0x05322180, - 0x05319800, 0x05310E80, 0x05308500, - 0x052FFB80, 0x052F7200, 0x052EE880, - 0x052E5F00, 0x052DD580, 0x052D4C00, - 0x052CC280, 0x052C3900, 0x052BAF80, - 0x052B2600, 0x052A9C80, 0x052A1300, - 0x05298980, 0x05290000, 0x05287680, - 0x0527ED00, 0x05276380, 0x0526DA00, - 0x05265080, 0x0525C700, 0x05253D80, - 0x0524B400, 0x05242A80, 0x0523A100, - 0x05231780, 0x05228E00, 0x05220480, - 0x05217B00, 0x0520F180, 0x05206800, - 0x051FDE80, 0x051F5500, 0x051ECB80, - 0x051E4200, 0x051DB880, 0x051D2F00, - 0x051CA580, 0x051C1C00, 0x051B9280, - 0x051B0900, 0x051A7F80, 0x0519F600, - 0x05196C80, 0x0518E300, 0x05185980, - 0x0517D000, 0x05174680, 0x0516BD00, - 0x05163380, 0x0515AA00, 0x05152080, - 0x05149700, 0x05140D80, 0x05138400, - 0x0512FA80, 0x05127100, 0x0511E780, - 0x05115E00, 0x0510D480, 0x05104B00, - 0x050FC180, 0x050F3800, 0x050EAE80, - 0x050E2500, 0x050D9B80, 0x050D1200, - 0x050C8880, 0x050BFF00, 0x050B7580, - 0x050AEC00, 0x050A6280, 0x0509D900, - 0x05094F80, 0x0508C600, 0x05083C80, - 0x0507B300, 0x05072980, 0x0506A000, - 0x05061680, 0x05058D00, 0x05050380, - 0x05047A00, 0x0503F080, 0x05036700, - 0x0502DD80, 0x05025400, 0x0501CA80, - 0x05014100, 0x0500B780, 0x05002E00, - 0x04FFA480, 0x04FF1B00, 0x04FE9180, - 0x04FE0800, 0x04FD7E80, 0x04FCF500, - 0x04FC6B80, 0x04FBE200, 0x04FB5880, - 0x04FACF00, 0x04FA4580, 0x04F9BC00, - 0x04F93280, 0x04F8A900, 0x04F81F80, - 0x04F79600, 0x04F70C80, 0x04F68300, - 0x04F5F980, 0x04F57000, 0x04F4E680, - 0x04F45D00, 0x04F3D380, 0x04F34A00, - 0x04F2C080, 0x04F23700, 0x04F1AD80, - 0x04F12400, 0x04F09A80, 0x04F01100, - 0x04EF8780, 0x04EEFE00, 0x04EE7480, - 0x04EDEB00, 0x04ED6180, 0x04ECD800, - 0x04EC4E80, 0x04EBC500, 0x04EB3B80, - 0x04EAB200, 0x04EA2880, 0x04E99F00, - 0x04E91580, 0x04E88C00, 0x04E80280, - 0x04E77900, 0x04E6EF80, 0x04E66600, - 0x04E5DC80, 0x04E55300, 0x04E4C980, - 0x04E44000, 0x04E3B680, 0x04E32D00, - 0x04E2A380, 0x04E21A00, 0x04E19080, - 0x04E10700, 0x04E07D80, 0x04DFF400, - 0x04DF6A80, 0x04DEE100, 0x04DE5780, - 0x04DDCE00, 0x04DD4480, 0x04DCBB00, - 0x04DC3180, 0x04DBA800, 0x04DB1E80, - 0x04DA9500, 0x04DA0B80, 0x04D98200, - 0x04D8F880, 0x04D86F00, 0x04D7E580, - 0x04D75C00, 0x04D6D280, 0x04D64900, - 0x04D5BF80, 0x04D53600, 0x04D4AC80, - 0x04D42300, 0x04D39980, 0x04D31000, - 0x04D28680, 0x04D1FD00, 0x04D17380, - 0x04D0EA00, 0x04D06080, 0x04CFD700, - 0x04CF4D80, 0x04CEC400, 0x04CE3A80, - 0x04CDB100, 0x04CD2780, 0x04CC9E00, - 0x04CC1480, 0x04CB8B00, 0x04CB0180, - 0x04CA7800, 0x04C9EE80, 0x04C96500, - 0x04C8DB80, 0x04C85200, 0x04C7C880, - 0x04C73F00, 0x04C6B580, 0x04C62C00, - 0x04C5A280, 0x04C51900, 0x04C48F80, - 0x04C40600, 0x04C37C80, 0x04C2F300, - 0x04C26980, 0x04C1E000, 0x04C15680, - 0x04C0CD00, 0x04C04380, 0x04BFBA00, - 0x04BF3080, 0x04BEA700, 0x04BE1D80, - 0x04BD9400, 0x04BD0A80, 0x04BC8100, - 0x04BBF780, 0x04BB6E00, 0x04BAE480, - 0x04BA5B00, 0x04B9D180, 0x04B94800, - 0x04B8BE80, 0x04B83500, 0x04B7AB80, - 0x04B72200, 0x04B69880, 0x04B60F00, - 0x04B58580, 0x04B4FC00, 0x04B47280, - 0x04B3E900, 0x04B35F80, 0x04B2D600, - 0x04B24C80, 0x04B1C300, 0x04B13980, - 0x04B0B000, 0x04B02680, 0x04AF9D00, - 0x04AF1380, 0x04AE8A00, 0x04AE0080, - 0x04AD7700, 0x04ACED80, 0x04AC6400, - 0x04ABDA80, 0x04AB5100, 0x04AAC780, - 0x04AA3E00, 0x04A9B480, 0x04A92B00, - 0x04A8A180, 0x04A81800, 0x04A78E80, - 0x04A70500, 0x04A67B80, 0x04A5F200, - 0x04A56880, 0x04A4DF00, 0x04A45580, - 0x04A3CC00, 0x04A34280, 0x04A2B900, - 0x04A22F80, 0x04A1A600, 0x04A11C80, - 0x04A09300, 0x04A00980, 0x049F8000, - 0x049EF680, 0x049E6D00, 0x049DE380, - 0x049D5A00, 0x049CD080, 0x049C4700, - 0x049BBD80, 0x049B3400, 0x049AAA80, - 0x049A2100, 0x04999780, 0x04990E00, - 0x04988480, 0x0497FB00, 0x04977180, - 0x0496E800, 0x04965E80, 0x0495D500, - 0x04954B80, 0x0494C200, 0x04943880, - 0x0493AF00, 0x04932580, 0x04929C00, - 0x04921280, 0x04918900, 0x0490FF80, - 0x04907600, 0x048FEC80, 0x048F6300, - 0x048ED980, 0x048E5000, 0x048DC680, - 0x048D3D00, 0x048CB380, 0x048C2A00, - 0x048BA080, 0x048B1700, 0x048A8D80, - 0x048A0400, 0x04897A80, 0x0488F100, - 0x04886780, 0x0487DE00, 0x04875480, - 0x0486CB00, 0x04864180, 0x0485B800, - 0x04852E80, 0x0484A500, 0x04841B80, - 0x04839200, 0x04830880, 0x04827F00, - 0x0481F580, 0x04816C00, 0x0480E280, - 0x04805900, 0x047FCF80, 0x047F4600, - 0x047EBC80, 0x047E3300, 0x047DA980, - 0x047D2000, 0x047C9680, 0x047C0D00, - 0x047B8380, 0x047AFA00, 0x047A7080, - 0x0479E700, 0x04795D80, 0x0478D400, - 0x04784A80, 0x0477C100, 0x04773780, - 0x0476AE00, 0x04762480, 0x04759B00, - 0x04751180, 0x04748800, 0x0473FE80, - 0x04737500, 0x0472EB80, 0x04726200, - 0x0471D880, 0x04714F00, 0x0470C580, - 0x04703C00, 0x046FB280, 0x046F2900, - 0x046E9F80, 0x046E1600, 0x046D8C80, - 0x046D0300, 0x046C7980, 0x046BF000, - 0x046B6680, 0x046ADD00, 0x046A5380, - 0x0469CA00, 0x04694080, 0x0468B700, - 0x04682D80, 0x0467A400, 0x04671A80, - 0x04669100, 0x04660780, 0x04657E00, - 0x0464F480, 0x04646B00, 0x0463E180, - 0x04635800, 0x0462CE80, 0x04624500, - 0x0461BB80, 0x04613200, 0x0460A880, - 0x04601F00, 0x045F9580, 0x045F0C00, - 0x045E8280, 0x045DF900, 0x045D6F80, - 0x045CE600, 0x045C5C80, 0x045BD300, - 0x045B4980, 0x045AC000, 0x045A3680, - 0x0459AD00, 0x04592380, 0x04589A00, - 0x04581080, 0x04578700, 0x0456FD80, - 0x04567400, 0x0455EA80, 0x04556100, - 0x0454D780, 0x04544E00, 0x0453C480, - 0x04533B00, 0x0452B180, 0x04522800, - 0x04519E80, 0x04511500, 0x04508B80, - 0x04500200, 0x044F7880, 0x044EEF00, - 0x044E6580, 0x044DDC00, 0x044D5280, - 0x044CC900, 0x044C3F80, 0x044BB600, - 0x044B2C80, 0x044AA300, 0x044A1980, - 0x04499000, 0x04490680, 0x04487D00, - 0x0447F380, 0x04476A00, 0x0446E080, - 0x04465700, 0x0445CD80, 0x04454400, - 0x0444BA80, 0x04443100, 0x0443A780, - 0x04431E00, 0x04429480, 0x04420B00, - 0x04418180, 0x0440F800, 0x04406E80, - 0x043FE500, 0x043F5B80, 0x043ED200, - 0x043E4880, 0x043DBF00, 0x043D3580, - 0x043CAC00, 0x043C2280, 0x043B9900, - 0x043B0F80, 0x043A8600, 0x0439FC80, - 0x04397300, 0x0438E980, 0x04386000, - 0x0437D680, 0x04374D00, 0x0436C380, - 0x04363A00, 0x0435B080, 0x04352700, - 0x04349D80, 0x04341400, 0x04338A80, - 0x04330100, 0x04327780, 0x0431EE00, - 0x04316480, 0x0430DB00, 0x04305180, - 0x042FC800, 0x042F3E80, 0x042EB500, - 0x042E2B80, 0x042DA200, 0x042D1880, - 0x042C8F00, 0x042C0580, 0x042B7C00, - 0x042AF280, 0x042A6900, 0x0429DF80, - 0x04295600, 0x0428CC80, 0x04284300, - 0x0427B980, 0x04273000, 0x0426A680, - 0x04261D00, 0x04259380, 0x04250A00, - 0x04248080, 0x0423F700, 0x04236D80, - 0x0422E400, 0x04225A80, 0x0421D100, - 0x04214780, 0x0420BE00, 0x04203480, - 0x041FAB00, 0x041F2180, 0x041E9800, - 0x041E0E80, 0x041D8500, 0x041CFB80, - 0x041C7200, 0x041BE880, 0x041B5F00, - 0x041AD580, 0x041A4C00, 0x0419C280, - 0x04193900, 0x0418AF80, 0x04182600, - 0x04179C80, 0x04171300, 0x04168980, - 0x04160000, 0x04157D40, 0x0414FA80, - 0x041477C0, 0x0413F500, 0x04137240, - 0x0412EF80, 0x04126CC0, 0x0411EA00, - 0x04116740, 0x0410E480, 0x041061C0, - 0x040FDF00, 0x040F5C40, 0x040ED980, - 0x040E56C0, 0x040DD400, 0x040D5140, - 0x040CCE80, 0x040C4BC0, 0x040BC900, - 0x040B4640, 0x040AC380, 0x040A40C0, - 0x0409BE00, 0x04093B40, 0x0408B880, - 0x040835C0, 0x0407B300, 0x04073040, - 0x0406AD80, 0x04062AC0, 0x0405A800, - 0x04052540, 0x0404A280, 0x04041FC0, - 0x04039D00, 0x04031A40, 0x04029780, - 0x040214C0, 0x04019200, 0x04010F40, - 0x04008C80, 0x040009C0, 0x03FF8700, - 0x03FF0440, 0x03FE8180, 0x03FDFEC0, - 0x03FD7C00, 0x03FCF940, 0x03FC7680, - 0x03FBF3C0, 0x03FB7100, 0x03FAEE40, - 0x03FA6B80, 0x03F9E8C0, 0x03F96600, - 0x03F8E340, 0x03F86080, 0x03F7DDC0, - 0x03F75B00, 0x03F6D840, 0x03F65580, - 0x03F5D2C0, 0x03F55000, 0x03F4CD40, - 0x03F44A80, 0x03F3C7C0, 0x03F34500, - 0x03F2C240, 0x03F23F80, 0x03F1BCC0, - 0x03F13A00, 0x03F0B740, 0x03F03480, - 0x03EFB1C0, 0x03EF2F00, 0x03EEAC40, - 0x03EE2980, 0x03EDA6C0, 0x03ED2400, - 0x03ECA140, 0x03EC1E80, 0x03EB9BC0, - 0x03EB1900, 0x03EA9640, 0x03EA1380, - 0x03E990C0, 0x03E90E00, 0x03E88B40, - 0x03E80880, 0x03E785C0, 0x03E70300, - 0x03E68040, 0x03E5FD80, 0x03E57AC0, - 0x03E4F800, 0x03E47540, 0x03E3F280, - 0x03E36FC0, 0x03E2ED00, 0x03E26A40, - 0x03E1E780, 0x03E164C0, 0x03E0E200, - 0x03E05F40, 0x03DFDC80, 0x03DF59C0, - 0x03DED700, 0x03DE5440, 0x03DDD180, - 0x03DD4EC0, 0x03DCCC00, 0x03DC4940, - 0x03DBC680, 0x03DB43C0, 0x03DAC100, - 0x03DA3E40, 0x03D9BB80, 0x03D938C0, - 0x03D8B600, 0x03D83340, 0x03D7B080, - 0x03D72DC0, 0x03D6AB00, 0x03D62840, - 0x03D5A580, 0x03D522C0, 0x03D4A000, - 0x03D41D40, 0x03D39A80, 0x03D317C0, - 0x03D29500, 0x03D21240, 0x03D18F80, - 0x03D10CC0, 0x03D08A00, 0x03D00740, - 0x03CF8480, 0x03CF01C0, 0x03CE7F00, - 0x03CDFC40, 0x03CD7980, 0x03CCF6C0, - 0x03CC7400, 0x03CBF140, 0x03CB6E80, - 0x03CAEBC0, 0x03CA6900, 0x03C9E640, - 0x03C96380, 0x03C8E0C0, 0x03C85E00, - 0x03C7DB40, 0x03C75880, 0x03C6D5C0, - 0x03C65300, 0x03C5D040, 0x03C54D80, - 0x03C4CAC0, 0x03C44800, 0x03C3C540, - 0x03C34280, 0x03C2BFC0, 0x03C23D00, - 0x03C1BA40, 0x03C13780, 0x03C0B4C0, - 0x03C03200, 0x03BFAF40, 0x03BF2C80, - 0x03BEA9C0, 0x03BE2700, 0x03BDA440, - 0x03BD2180, 0x03BC9EC0, 0x03BC1C00, - 0x03BB9940, 0x03BB1680, 0x03BA93C0, - 0x03BA1100, 0x03B98E40, 0x03B90B80, - 0x03B888C0, 0x03B80600, 0x03B78340, - 0x03B70080, 0x03B67DC0, 0x03B5FB00, - 0x03B57840, 0x03B4F580, 0x03B472C0, - 0x03B3F000, 0x03B36D40, 0x03B2EA80, - 0x03B267C0, 0x03B1E500, 0x03B16240, - 0x03B0DF80, 0x03B05CC0, 0x03AFDA00, - 0x03AF5740, 0x03AED480, 0x03AE51C0, - 0x03ADCF00, 0x03AD4C40, 0x03ACC980, - 0x03AC46C0, 0x03ABC400, 0x03AB4140, - 0x03AABE80, 0x03AA3BC0, 0x03A9B900, - 0x03A93640, 0x03A8B380, 0x03A830C0, - 0x03A7AE00, 0x03A72B40, 0x03A6A880, - 0x03A625C0, 0x03A5A300, 0x03A52040, - 0x03A49D80, 0x03A41AC0, 0x03A39800, - 0x03A31540, 0x03A29280, 0x03A20FC0, - 0x03A18D00, 0x03A10A40, 0x03A08780, - 0x03A004C0, 0x039F8200, 0x039EFF40, - 0x039E7C80, 0x039DF9C0, 0x039D7700, - 0x039CF440, 0x039C7180, 0x039BEEC0, - 0x039B6C00, 0x039AE940, 0x039A6680, - 0x0399E3C0, 0x03996100, 0x0398DE40, - 0x03985B80, 0x0397D8C0, 0x03975600, - 0x0396D340, 0x03965080, 0x0395CDC0, - 0x03954B00, 0x0394C840, 0x03944580, - 0x0393C2C0, 0x03934000, 0x0392BD40, - 0x03923A80, 0x0391B7C0, 0x03913500, - 0x0390B240, 0x03902F80, 0x038FACC0, - 0x038F2A00, 0x038EA740, 0x038E2480, - 0x038DA1C0, 0x038D1F00, 0x038C9C40, - 0x038C1980, 0x038B96C0, 0x038B1400, - 0x038A9140, 0x038A0E80, 0x03898BC0, - 0x03890900, 0x03888640, 0x03880380, - 0x038780C0, 0x0386FE00, 0x03867B40, - 0x0385F880, 0x038575C0, 0x0384F300, - 0x03847040, 0x0383ED80, 0x03836AC0, - 0x0382E800, 0x03826540, 0x0381E280, - 0x03815FC0, 0x0380DD00, 0x03805A40, - 0x037FD780, 0x037F54C0, 0x037ED200, - 0x037E4F40, 0x037DCC80, 0x037D49C0, - 0x037CC700, 0x037C4440, 0x037BC180, - 0x037B3EC0, 0x037ABC00, 0x037A3940, - 0x0379B680, 0x037933C0, 0x0378B100, - 0x03782E40, 0x0377AB80, 0x037728C0, - 0x0376A600, 0x03762340, 0x0375A080, - 0x03751DC0, 0x03749B00, 0x03741840, - 0x03739580, 0x037312C0, 0x03729000, - 0x03720D40, 0x03718A80, 0x037107C0, - 0x03708500, 0x03700240, 0x036F7F80, - 0x036EFCC0, 0x036E7A00, 0x036DF740, - 0x036D7480, 0x036CF1C0, 0x036C6F00, - 0x036BEC40, 0x036B6980, 0x036AE6C0, - 0x036A6400, 0x0369E140, 0x03695E80, - 0x0368DBC0, 0x03685900, 0x0367D640, - 0x03675380, 0x0366D0C0, 0x03664E00, - 0x0365CB40, 0x03654880, 0x0364C5C0, - 0x03644300, 0x0363C040, 0x03633D80, - 0x0362BAC0, 0x03623800, 0x0361B540, - 0x03613280, 0x0360AFC0, 0x03602D00, - 0x035FAA40, 0x035F2780, 0x035EA4C0, - 0x035E2200, 0x035D9F40, 0x035D1C80, - 0x035C99C0, 0x035C1700, 0x035B9440, - 0x035B1180, 0x035A8EC0, 0x035A0C00, - 0x03598940, 0x03590680, 0x035883C0, - 0x03580100, 0x03577E40, 0x0356FB80, - 0x035678C0, 0x0355F600, 0x03557340, - 0x0354F080, 0x03546DC0, 0x0353EB00, - 0x03536840, 0x0352E580, 0x035262C0, - 0x0351E000, 0x03515D40, 0x0350DA80, - 0x035057C0, 0x034FD500, 0x034F5240, - 0x034ECF80, 0x034E4CC0, 0x034DCA00, - 0x034D4740, 0x034CC480, 0x034C41C0, - 0x034BBF00, 0x034B3C40, 0x034AB980, - 0x034A36C0, 0x0349B400, 0x03493140, - 0x0348AE80, 0x03482BC0, 0x0347A900, - 0x03472640, 0x0346A380, 0x034620C0, - 0x03459E00, 0x03451B40, 0x03449880, - 0x034415C0, 0x03439300, 0x03431040, - 0x03428D80, 0x03420AC0, 0x03418800, - 0x03410540, 0x03408280, 0x033FFFC0, - 0x033F7D00, 0x033EFA40, 0x033E7780, - 0x033DF4C0, 0x033D7200, 0x033CEF40, - 0x033C6C80, 0x033BE9C0, 0x033B6700, - 0x033AE440, 0x033A6180, 0x0339DEC0, - 0x03395C00, 0x0338D940, 0x03385680, - 0x0337D3C0, 0x03375100, 0x0336CE40, - 0x03364B80, 0x0335C8C0, 0x03354600, - 0x0334C340, 0x03344080, 0x0333BDC0, - 0x03333B00, 0x0332B840, 0x03323580, - 0x0331B2C0, 0x03313000, 0x0330AD40, - 0x03302A80, 0x032FA7C0, 0x032F2500, - 0x032EA240, 0x032E1F80, 0x032D9CC0, - 0x032D1A00, 0x032C9740, 0x032C1480, - 0x032B91C0, 0x032B0F00, 0x032A8C40, - 0x032A0980, 0x032986C0, 0x03290400, - 0x03288140, 0x0327FE80, 0x03277BC0, - 0x0326F900, 0x03267640, 0x0325F380, - 0x032570C0, 0x0324EE00, 0x03246B40, - 0x0323E880, 0x032365C0, 0x0322E300, - 0x03226040, 0x0321DD80, 0x03215AC0, - 0x0320D800, 0x03205540, 0x031FD280, - 0x031F4FC0, 0x031ECD00, 0x031E4A40, - 0x031DC780, 0x031D44C0, 0x031CC200, - 0x031C3F40, 0x031BBC80, 0x031B39C0, - 0x031AB700, 0x031A3440, 0x0319B180, - 0x03192EC0, 0x0318AC00, 0x03182940, - 0x0317A680, 0x031723C0, 0x0316A100, - 0x03161E40, 0x03159B80, 0x031518C0, - 0x03149600, 0x03141340, 0x03139080, - 0x03130DC0, 0x03128B00, 0x03120840, - 0x03118580, 0x031102C0, 0x03108000, - 0x030FFD40, 0x030F7A80, 0x030EF7C0, - 0x030E7500, 0x030DF240, 0x030D6F80, - 0x030CECC0, 0x030C6A00, 0x030BE740, - 0x030B6480, 0x030AE1C0, 0x030A5F00, - 0x0309DC40, 0x03095980, 0x0308D6C0, - 0x03085400, 0x0307D140, 0x03074E80, - 0x0306CBC0, 0x03064900, 0x0305C640, - 0x03054380, 0x0304C0C0, 0x03043E00, - 0x0303BB40, 0x03033880, 0x0302B5C0, - 0x03023300, 0x0301B040, 0x03012D80, - 0x0300AAC0, 0x03002800, 0x02FFA540, - 0x02FF2280, 0x02FE9FC0, 0x02FE1D00, - 0x02FD9A40, 0x02FD1780, 0x02FC94C0, - 0x02FC1200, 0x02FB8F40, 0x02FB0C80, - 0x02FA89C0, 0x02FA0700, 0x02F98440, - 0x02F90180, 0x02F87EC0, 0x02F7FC00, - 0x02F77940, 0x02F6F680, 0x02F673C0, - 0x02F5F100, 0x02F56E40, 0x02F4EB80, - 0x02F468C0, 0x02F3E600, 0x02F36340, - 0x02F2E080, 0x02F25DC0, 0x02F1DB00, - 0x02F15840, 0x02F0D580, 0x02F052C0, - 0x02EFD000, 0x02EF4D40, 0x02EECA80, - 0x02EE47C0, 0x02EDC500, 0x02ED4240, - 0x02ECBF80, 0x02EC3CC0, 0x02EBBA00, - 0x02EB3740, 0x02EAB480, 0x02EA31C0, - 0x02E9AF00, 0x02E92C40, 0x02E8A980, - 0x02E826C0, 0x02E7A400, 0x02E72140, - 0x02E69E80, 0x02E61BC0, 0x02E59900, - 0x02E51640, 0x02E49380, 0x02E410C0, - 0x02E38E00, 0x02E30B40, 0x02E28880, - 0x02E205C0, 0x02E18300, 0x02E10040, - 0x02E07D80, 0x02DFFAC0, 0x02DF7800, - 0x02DEF540, 0x02DE7280, 0x02DDEFC0, - 0x02DD6D00, 0x02DCEA40, 0x02DC6780, - 0x02DBE4C0, 0x02DB6200, 0x02DADF40, - 0x02DA5C80, 0x02D9D9C0, 0x02D95700, - 0x02D8D440, 0x02D85180, 0x02D7CEC0, - 0x02D74C00, 0x02D6C940, 0x02D64680, - 0x02D5C3C0, 0x02D54100, 0x02D4BE40, - 0x02D43B80, 0x02D3B8C0, 0x02D33600, - 0x02D2B340, 0x02D23080, 0x02D1ADC0, - 0x02D12B00, 0x02D0A840, 0x02D02580, - 0x02CFA2C0, 0x02CF2000, 0x02CE9D40, - 0x02CE1A80, 0x02CD97C0, 0x02CD1500, - 0x02CC9240, 0x02CC0F80, 0x02CB8CC0, - 0x02CB0A00, 0x02CA8740, 0x02CA0480, - 0x02C981C0, 0x02C8FF00, 0x02C87C40, - 0x02C7F980, 0x02C776C0, 0x02C6F400, - 0x02C67140, 0x02C5EE80, 0x02C56BC0, - 0x02C4E900, 0x02C46640, 0x02C3E380, - 0x02C360C0, 0x02C2DE00, 0x02C25B40, - 0x02C1D880, 0x02C155C0, 0x02C0D300, - 0x02C05040, 0x02BFCD80, 0x02BF4AC0, - 0x02BEC800, 0x02BE4540, 0x02BDC280, - 0x02BD3FC0, 0x02BCBD00, 0x02BC3A40, - 0x02BBB780, 0x02BB34C0, 0x02BAB200, - 0x02BA2F40, 0x02B9AC80, 0x02B929C0, - 0x02B8A700, 0x02B82440, 0x02B7A180, - 0x02B71EC0, 0x02B69C00, 0x02B61940, - 0x02B59680, 0x02B513C0, 0x02B49100, - 0x02B40E40, 0x02B38B80, 0x02B308C0, - 0x02B28600, 0x02B20340, 0x02B18080, - 0x02B0FDC0, 0x02B07B00, 0x02AFF840, - 0x02AF7580, 0x02AEF2C0, 0x02AE7000, - 0x02ADED40, 0x02AD6A80, 0x02ACE7C0, - 0x02AC6500, 0x02ABE240, 0x02AB5F80, - 0x02AADCC0, 0x02AA5A00, 0x02A9D740, - 0x02A95480, 0x02A8D1C0, 0x02A84F00, - 0x02A7CC40, 0x02A74980, 0x02A6C6C0, - 0x02A64400, 0x02A5C140, 0x02A53E80, - 0x02A4BBC0, 0x02A43900, 0x02A3B640, - 0x02A33380, 0x02A2B0C0, 0x02A22E00, - 0x02A1AB40, 0x02A12880, 0x02A0A5C0, - 0x02A02300, 0x029FA040, 0x029F1D80, - 0x029E9AC0, 0x029E1800, 0x029D9540, - 0x029D1280, 0x029C8FC0, 0x029C0D00, - 0x029B8A40, 0x029B0780, 0x029A84C0, - 0x029A0200, 0x02997F40, 0x0298FC80, - 0x029879C0, 0x0297F700, 0x02977440, - 0x0296F180, 0x02966EC0, 0x0295EC00, - 0x02956940, 0x0294E680, 0x029463C0, - 0x0293E100, 0x02935E40, 0x0292DB80, - 0x029258C0, 0x0291D600, 0x02915340, - 0x0290D080, 0x02904DC0, 0x028FCB00, - 0x028F4840, 0x028EC580, 0x028E42C0, - 0x028DC000, 0x028D3D40, 0x028CBA80, - 0x028C37C0, 0x028BB500, 0x028B3240, - 0x028AAF80, 0x028A2CC0, 0x0289AA00, - 0x02892740, 0x0288A480, 0x028821C0, - 0x02879F00, 0x02871C40, 0x02869980, - 0x028616C0, 0x02859400, 0x02851140, - 0x02848E80, 0x02840BC0, 0x02838900, - 0x02830640, 0x02828380, 0x028200C0, - 0x02817E00, 0x0280FB40, 0x02807880, - 0x027FF5C0, 0x027F7300, 0x027EF040, - 0x027E6D80, 0x027DEAC0, 0x027D6800, - 0x027CE540, 0x027C6280, 0x027BDFC0, - 0x027B5D00, 0x027ADA40, 0x027A5780, - 0x0279D4C0, 0x02795200, 0x0278CF40, - 0x02784C80, 0x0277C9C0, 0x02774700, - 0x0276C440, 0x02764180, 0x0275BEC0, - 0x02753C00, 0x0274B940, 0x02743680, - 0x0273B3C0, 0x02733100, 0x0272AE40, - 0x02722B80, 0x0271A8C0, 0x02712600, - 0x0270A340, 0x02702080, 0x026F9DC0, - 0x026F1B00, 0x026E9840, 0x026E1580, - 0x026D92C0, 0x026D1000, 0x026C8D40, - 0x026C0A80, 0x026B87C0, 0x026B0500, - 0x026A8240, 0x0269FF80, 0x02697CC0, - 0x0268FA00, 0x02687740, 0x0267F480, - 0x026771C0, 0x0266EF00, 0x02666C40, - 0x0265E980, 0x026566C0, 0x0264E400, - 0x02646140, 0x0263DE80, 0x02635BC0, - 0x0262D900, 0x02625640, 0x0261D380, - 0x026150C0, 0x0260CE00, 0x02604B40, - 0x025FC880, 0x025F45C0, 0x025EC300, - 0x025E4040, 0x025DBD80, 0x025D3AC0, - 0x025CB800, 0x025C3540, 0x025BB280, - 0x025B2FC0, 0x025AAD00, 0x025A2A40, - 0x0259A780, 0x025924C0, 0x0258A200, - 0x02581F40, 0x02579C80, 0x025719C0, - 0x02569700, 0x02561440, 0x02559180, - 0x02550EC0, 0x02548C00, 0x02540940, - 0x02538680, 0x025303C0, 0x02528100, - 0x0251FE40, 0x02517B80, 0x0250F8C0, - 0x02507600, 0x024FF340, 0x024F7080, - 0x024EEDC0, 0x024E6B00, 0x024DE840, - 0x024D6580, 0x024CE2C0, 0x024C6000, - 0x024BDD40, 0x024B5A80, 0x024AD7C0, - 0x024A5500, 0x0249D240, 0x02494F80, - 0x0248CCC0, 0x02484A00, 0x0247C740, - 0x02474480, 0x0246C1C0, 0x02463F00, - 0x0245BC40, 0x02453980, 0x0244B6C0, - 0x02443400, 0x0243B140, 0x02432E80, - 0x0242ABC0, 0x02422900, 0x0241A640, - 0x02412380, 0x0240A0C0, 0x02401E00, - 0x023F9B40, 0x023F1880, 0x023E95C0, - 0x023E1300, 0x023D9040, 0x023D0D80, - 0x023C8AC0, 0x023C0800, 0x023B8540, - 0x023B0280, 0x023A7FC0, 0x0239FD00, - 0x02397A40, 0x0238F780, 0x023874C0, - 0x0237F200, 0x02376F40, 0x0236EC80, - 0x023669C0, 0x0235E700, 0x02356440, - 0x0234E180, 0x02345EC0, 0x0233DC00, - 0x02335940, 0x0232D680, 0x023253C0, - 0x0231D100, 0x02314E40, 0x0230CB80, - 0x023048C0, 0x022FC600, 0x022F4340, - 0x022EC080, 0x022E3DC0, 0x022DBB00, - 0x022D3840, 0x022CB580, 0x022C32C0, - 0x022BB000, 0x022B2D40, 0x022AAA80, - 0x022A27C0, 0x0229A500, 0x02292240, - 0x02289F80, 0x02281CC0, 0x02279A00, - 0x02271740, 0x02269480, 0x022611C0, - 0x02258F00, 0x02250C40, 0x02248980, - 0x022406C0, 0x02238400, 0x02230140, - 0x02227E80, 0x0221FBC0, 0x02217900, - 0x0220F640, 0x02207380, 0x021FF0C0, - 0x021F6E00, 0x021EEB40, 0x021E6880, - 0x021DE5C0, 0x021D6300, 0x021CE040, - 0x021C5D80, 0x021BDAC0, 0x021B5800, - 0x021AD540, 0x021A5280, 0x0219CFC0, - 0x02194D00, 0x0218CA40, 0x02184780, - 0x0217C4C0, 0x02174200, 0x0216BF40, - 0x02163C80, 0x0215B9C0, 0x02153700, - 0x0214B440, 0x02143180, 0x0213AEC0, - 0x02132C00, 0x0212A940, 0x02122680, - 0x0211A3C0, 0x02112100, 0x02109E40, - 0x02101B80, 0x020F98C0, 0x020F1600, - 0x020E9340, 0x020E1080, 0x020D8DC0, - 0x020D0B00, 0x020C8840, 0x020C0580, - 0x020B82C0, 0x020B0000, 0x020A7D40, - 0x0209FA80, 0x020977C0, 0x0208F500, - 0x02087240, 0x0207EF80, 0x02076CC0, - 0x0206EA00, 0x02066740, 0x0205E480, - 0x020561C0, 0x0204DF00, 0x02045C40, - 0x0203D980, 0x020356C0, 0x0202D400, - 0x02025140, 0x0201CE80, 0x02014BC0, - 0x0200C900, 0x02004640, 0x01FFC380, - 0x01FF40C0, 0x01FEBE00, 0x01FE3B40, - 0x01FDB880, 0x01FD35C0, 0x01FCB300, - 0x01FC3040, 0x01FBAD80, 0x01FB2AC0, - 0x01FAA800, 0x01FA2540, 0x01F9A280, - 0x01F91FC0, 0x01F89D00, 0x01F81A40, - 0x01F79780, 0x01F714C0, 0x01F69200, - 0x01F60F40, 0x01F58C80, 0x01F509C0, - 0x01F48700, 0x01F40440, 0x01F38180, - 0x01F2FEC0, 0x01F27C00, 0x01F1F940, - 0x01F17680, 0x01F0F3C0, 0x01F07100, - 0x01EFEE40, 0x01EF6B80, 0x01EEE8C0, - 0x01EE6600, 0x01EDE340, 0x01ED6080, - 0x01ECDDC0, 0x01EC5B00, 0x01EBD840, - 0x01EB5580, 0x01EAD2C0, 0x01EA5000, - 0x01E9CD40, 0x01E94A80, 0x01E8C7C0, - 0x01E84500, 0x01E7C240, 0x01E73F80, - 0x01E6BCC0, 0x01E63A00, 0x01E5B740, - 0x01E53480, 0x01E4B1C0, 0x01E42F00, - 0x01E3AC40, 0x01E32980, 0x01E2A6C0, - 0x01E22400, 0x01E1A140, 0x01E11E80, - 0x01E09BC0, 0x01E01900, 0x01DF9640, - 0x01DF1380, 0x01DE90C0, 0x01DE0E00, - 0x01DD8B40, 0x01DD0880, 0x01DC85C0, - 0x01DC0300, 0x01DB8040, 0x01DAFD80, - 0x01DA7AC0, 0x01D9F800, 0x01D97540, - 0x01D8F280, 0x01D86FC0, 0x01D7ED00, - 0x01D76A40, 0x01D6E780, 0x01D664C0, - 0x01D5E200, 0x01D55F40, 0x01D4DC80, - 0x01D459C0, 0x01D3D700, 0x01D35440, - 0x01D2D180, 0x01D24EC0, 0x01D1CC00, - 0x01D14940, 0x01D0C680, 0x01D043C0, - 0x01CFC100, 0x01CF3E40, 0x01CEBB80, - 0x01CE38C0, 0x01CDB600, 0x01CD3340, - 0x01CCB080, 0x01CC2DC0, 0x01CBAB00, - 0x01CB2840, 0x01CAA580, 0x01CA22C0, - 0x01C9A000, 0x01C91D40, 0x01C89A80, - 0x01C817C0, 0x01C79500, 0x01C71240, - 0x01C68F80, 0x01C60CC0, 0x01C58A00, - 0x01C50740, 0x01C48480, 0x01C401C0, - 0x01C37F00, 0x01C2FC40, 0x01C27980, - 0x01C1F6C0, 0x01C17400, 0x01C0F140, - 0x01C06E80, 0x01BFEBC0, 0x01BF6900, - 0x01BEE640, 0x01BE6380, 0x01BDE0C0, - 0x01BD5E00, 0x01BCDB40, 0x01BC5880, - 0x01BBD5C0, 0x01BB5300, 0x01BAD040, - 0x01BA4D80, 0x01B9CAC0, 0x01B94800, - 0x01B8C540, 0x01B84280, 0x01B7BFC0, - 0x01B73D00, 0x01B6BA40, 0x01B63780, - 0x01B5B4C0, 0x01B53200, 0x01B4AF40, - 0x01B42C80, 0x01B3A9C0, 0x01B32700, - 0x01B2A440, 0x01B22180, 0x01B19EC0, - 0x01B11C00, 0x01B09940, 0x01B01680, - 0x01AF93C0, 0x01AF1100, 0x01AE8E40, - 0x01AE0B80, 0x01AD88C0, 0x01AD0600, - 0x01AC8340, 0x01AC0080, 0x01AB7DC0, - 0x01AAFB00, 0x01AA7840, 0x01A9F580, - 0x01A972C0, 0x01A8F000, 0x01A86D40, - 0x01A7EA80, 0x01A767C0, 0x01A6E500, - 0x01A66240, 0x01A5DF80, 0x01A55CC0, - 0x01A4DA00, 0x01A45740, 0x01A3D480, - 0x01A351C0, 0x01A2CF00, 0x01A24C40, - 0x01A1C980, 0x01A146C0, 0x01A0C400, - 0x01A04140, 0x019FBE80, 0x019F3BC0, - 0x019EB900, 0x019E3640, 0x019DB380, - 0x019D30C0, 0x019CAE00, 0x019C2B40, - 0x019BA880, 0x019B25C0, 0x019AA300, - 0x019A2040, 0x01999D80, 0x01991AC0, - 0x01989800, 0x01981540, 0x01979280, - 0x01970FC0, 0x01968D00, 0x01960A40, - 0x01958780, 0x019504C0, 0x01948200, - 0x0193FF40, 0x01937C80, 0x0192F9C0, - 0x01927700, 0x0191F440, 0x01917180, - 0x0190EEC0, 0x01906C00, 0x018FE940, - 0x018F6680, 0x018EE3C0, 0x018E6100, - 0x018DDE40, 0x018D5B80, 0x018CD8C0, - 0x018C5600, 0x018BD340, 0x018B5080, - 0x018ACDC0, 0x018A4B00, 0x0189C840, - 0x01894580, 0x0188C2C0, 0x01884000, - 0x0187BD40, 0x01873A80, 0x0186B7C0, - 0x01863500, 0x0185B240, 0x01852F80, - 0x0184ACC0, 0x01842A00, 0x0183A740, - 0x01832480, 0x0182A1C0, 0x01821F00, - 0x01819C40, 0x01811980, 0x018096C0, - 0x01801400, 0x017F9140, 0x017F0E80, - 0x017E8BC0, 0x017E0900, 0x017D8640, - 0x017D0380, 0x017C80C0, 0x017BFE00, - 0x017B7B40, 0x017AF880, 0x017A75C0, - 0x0179F300, 0x01797040, 0x0178ED80, - 0x01786AC0, 0x0177E800, 0x01776540, - 0x0176E280, 0x01765FC0, 0x0175DD00, - 0x01755A40, 0x0174D780, 0x017454C0, - 0x0173D200, 0x01734F40, 0x0172CC80, - 0x017249C0, 0x0171C700, 0x01714440, - 0x0170C180, 0x01703EC0, 0x016FBC00, - 0x016F3940, 0x016EB680, 0x016E33C0, - 0x016DB100, 0x016D2E40, 0x016CAB80, - 0x016C28C0, 0x016BA600, 0x016B2340, - 0x016AA080, 0x016A1DC0, 0x01699B00, - 0x01691840, 0x01689580, 0x016812C0, - 0x01679000, 0x01670D40, 0x01668A80, - 0x016607C0, 0x01658500, 0x01650240, - 0x01647F80, 0x0163FCC0, 0x01637A00, - 0x0162F740, 0x01627480, 0x0161F1C0, - 0x01616F00, 0x0160EC40, 0x01606980, - 0x015FE6C0, 0x015F6400, 0x015EE140, - 0x015E5E80, 0x015DDBC0, 0x015D5900, - 0x015CD640, 0x015C5380, 0x015BD0C0, - 0x015B4E00, 0x015ACB40, 0x015A4880, - 0x0159C5C0, 0x01594300, 0x0158C040, - 0x01583D80, 0x0157BAC0, 0x01573800, - 0x0156B540, 0x01563280, 0x0155AFC0, - 0x01552D00, 0x0154AA40, 0x01542780, - 0x0153A4C0, 0x01532200, 0x01529F40, - 0x01521C80, 0x015199C0, 0x01511700, - 0x01509440, 0x01501180, 0x014F8EC0, - 0x014F0C00, 0x014E8940, 0x014E0680, - 0x014D83C0, 0x014D0100, 0x014C7E40, - 0x014BFB80, 0x014B78C0, 0x014AF600, - 0x014A7340, 0x0149F080, 0x01496DC0, - 0x0148EB00, 0x01486840, 0x0147E580, - 0x014762C0, 0x0146E000, 0x01465D40, - 0x0145DA80, 0x014557C0, 0x0144D500, - 0x01445240, 0x0143CF80, 0x01434CC0, - 0x0142CA00, 0x01424740, 0x0141C480, - 0x014141C0, 0x0140BF00, 0x01403C40, - 0x013FB980, 0x013F36C0, 0x013EB400, - 0x013E3140, 0x013DAE80, 0x013D2BC0, - 0x013CA900, 0x013C2640, 0x013BA380, - 0x013B20C0, 0x013A9E00, 0x013A1B40, - 0x01399880, 0x013915C0, 0x01389300, - 0x01381040, 0x01378D80, 0x01370AC0, - 0x01368800, 0x01360540, 0x01358280, - 0x0134FFC0, 0x01347D00, 0x0133FA40, - 0x01337780, 0x0132F4C0, 0x01327200, - 0x0131EF40, 0x01316C80, 0x0130E9C0, - 0x01306700, 0x012FE440, 0x012F6180, - 0x012EDEC0, 0x012E5C00, 0x012DD940, - 0x012D5680, 0x012CD3C0, 0x012C5100, - 0x012BCE40, 0x012B4B80, 0x012AC8C0, - 0x012A4600, 0x0129C340, 0x01294080, - 0x0128BDC0, 0x01283B00, 0x0127B840, - 0x01273580, 0x0126B2C0, 0x01263000, - 0x0125AD40, 0x01252A80, 0x0124A7C0, - 0x01242500, 0x0123A240, 0x01231F80, - 0x01229CC0, 0x01221A00, 0x01219740, - 0x01211480, 0x012091C0, 0x01200F00, - 0x011F8C40, 0x011F0980, 0x011E86C0, - 0x011E0400, 0x011D8140, 0x011CFE80, - 0x011C7BC0, 0x011BF900, 0x011B7640, - 0x011AF380, 0x011A70C0, 0x0119EE00, - 0x01196B40, 0x0118E880, 0x011865C0, - 0x0117E300, 0x01176040, 0x0116DD80, - 0x01165AC0, 0x0115D800, 0x01155540, - 0x0114D280, 0x01144FC0, 0x0113CD00, - 0x01134A40, 0x0112C780, 0x011244C0, - 0x0111C200, 0x01113F40, 0x0110BC80, - 0x011039C0, 0x010FB700, 0x010F3440, - 0x010EB180, 0x010E2EC0, 0x010DAC00, - 0x010D2940, 0x010CA680, 0x010C23C0, - 0x010BA100, 0x010B1E40, 0x010A9B80, - 0x010A18C0, 0x01099600, 0x01091340, - 0x01089080, 0x01080DC0, 0x01078B00, - 0x01070840, 0x01068580, 0x010602C0, - 0x01058000, 0x0104FD40, 0x01047A80, - 0x0103F7C0, 0x01037500, 0x0102F240, - 0x01026F80, 0x0101ECC0, 0x01016A00, - 0x0100E740, 0x01006480, 0x00FFE1C0, - 0x00FF5F00, 0x00FEDC40, 0x00FE5980, - 0x00FDD6C0, 0x00FD5400, 0x00FCD140, - 0x00FC4E80, 0x00FBCBC0, 0x00FB4900, - 0x00FAC640, 0x00FA4380, 0x00F9C0C0, - 0x00F93E00, 0x00F8BB40, 0x00F83880, - 0x00F7B5C0, 0x00F73300, 0x00F6B040, - 0x00F62D80, 0x00F5AAC0, 0x00F52800, - 0x00F4A540, 0x00F42280, 0x00F39FC0, - 0x00F31D00, 0x00F29A40, 0x00F21780, - 0x00F194C0, 0x00F11200, 0x00F08F40, - 0x00F00C80, 0x00EF89C0, 0x00EF0700, - 0x00EE8440, 0x00EE0180, 0x00ED7EC0, - 0x00ECFC00, 0x00EC7940, 0x00EBF680, - 0x00EB73C0, 0x00EAF100, 0x00EA6E40, - 0x00E9EB80, 0x00E968C0, 0x00E8E600, - 0x00E86340, 0x00E7E080, 0x00E75DC0, - 0x00E6DB00, 0x00E65840, 0x00E5D580, - 0x00E552C0, 0x00E4D000, 0x00E44D40, - 0x00E3CA80, 0x00E347C0, 0x00E2C500, - 0x00E24240, 0x00E1BF80, 0x00E13CC0, - 0x00E0BA00, 0x00E03740, 0x00DFB480, - 0x00DF31C0, 0x00DEAF00, 0x00DE2C40, - 0x00DDA980, 0x00DD26C0, 0x00DCA400, - 0x00DC2140, 0x00DB9E80, 0x00DB1BC0, - 0x00DA9900, 0x00DA1640, 0x00D99380, - 0x00D910C0, 0x00D88E00, 0x00D80B40, - 0x00D78880, 0x00D705C0, 0x00D68300, - 0x00D60040, 0x00D57D80, 0x00D4FAC0, - 0x00D47800, 0x00D3F540, 0x00D37280, - 0x00D2EFC0, 0x00D26D00, 0x00D1EA40, - 0x00D16780, 0x00D0E4C0, 0x00D06200, - 0x00CFDF40, 0x00CF5C80, 0x00CED9C0, - 0x00CE5700, 0x00CDD440, 0x00CD5180, - 0x00CCCEC0, 0x00CC4C00, 0x00CBC940, - 0x00CB4680, 0x00CAC3C0, 0x00CA4100, - 0x00C9BE40, 0x00C93B80, 0x00C8B8C0, - 0x00C83600, 0x00C7B340, 0x00C73080, - 0x00C6ADC0, 0x00C62B00, 0x00C5A840, - 0x00C52580, 0x00C4A2C0, 0x00C42000, - 0x00C39D40, 0x00C31A80, 0x00C297C0, - 0x00C21500, 0x00C19240, 0x00C10F80, - 0x00C08CC0, 0x00C00A00, 0x00BF8740, - 0x00BF0480, 0x00BE81C0, 0x00BDFF00, - 0x00BD7C40, 0x00BCF980, 0x00BC76C0, - 0x00BBF400, 0x00BB7140, 0x00BAEE80, - 0x00BA6BC0, 0x00B9E900, 0x00B96640, - 0x00B8E380, 0x00B860C0, 0x00B7DE00, - 0x00B75B40, 0x00B6D880, 0x00B655C0, - 0x00B5D300, 0x00B55040, 0x00B4CD80, - 0x00B44AC0, 0x00B3C800, 0x00B34540, - 0x00B2C280, 0x00B23FC0, 0x00B1BD00, - 0x00B13A40, 0x00B0B780, 0x00B034C0, - 0x00AFB200, 0x00AF2F40, 0x00AEAC80, - 0x00AE29C0, 0x00ADA700, 0x00AD2440, - 0x00ACA180, 0x00AC1EC0, 0x00AB9C00, - 0x00AB1940, 0x00AA9680, 0x00AA13C0, - 0x00A99100, 0x00A90E40, 0x00A88B80, - 0x00A808C0, 0x00A78600, 0x00A70340, - 0x00A68080, 0x00A5FDC0, 0x00A57B00, - 0x00A4F840, 0x00A47580, 0x00A3F2C0, - 0x00A37000, 0x00A2ED40, 0x00A26A80, - 0x00A1E7C0, 0x00A16500, 0x00A0E240, - 0x00A05F80, 0x009FDCC0, 0x009F5A00, - 0x009ED740, 0x009E5480, 0x009DD1C0, - 0x009D4F00, 0x009CCC40, 0x009C4980, - 0x009BC6C0, 0x009B4400, 0x009AC140, - 0x009A3E80, 0x0099BBC0, 0x00993900, - 0x0098B640, 0x00983380, 0x0097B0C0, - 0x00972E00, 0x0096AB40, 0x00962880, - 0x0095A5C0, 0x00952300, 0x0094A040, - 0x00941D80, 0x00939AC0, 0x00931800, - 0x00929540, 0x00921280, 0x00918FC0, - 0x00910D00, 0x00908A40, 0x00900780, - 0x008F84C0, 0x008F0200, 0x008E7F40, - 0x008DFC80, 0x008D79C0, 0x008CF700, - 0x008C7440, 0x008BF180, 0x008B6EC0, - 0x008AEC00, 0x008A6940, 0x0089E680, - 0x008963C0, 0x0088E100, 0x00885E40, - 0x0087DB80, 0x008758C0, 0x0086D600, - 0x00865340, 0x0085D080, 0x00854DC0, - 0x0084CB00, 0x00844840, 0x0083C580, - 0x008342C0, 0x0082C000, 0x00823D40, - 0x0081BA80, 0x008137C0, 0x0080B500, - 0x00803240, 0x007FAF80, 0x007F2CC0, - 0x007EAA00, 0x007E2740, 0x007DA480, - 0x007D21C0, 0x007C9F00, 0x007C1C40, - 0x007B9980, 0x007B16C0, 0x007A9400, - 0x007A1140, 0x00798E80, 0x00790BC0, - 0x00788900, 0x00780640, 0x00778380, - 0x007700C0, 0x00767E00, 0x0075FB40, - 0x00757880, 0x0074F5C0, 0x00747300, - 0x0073F040, 0x00736D80, 0x0072EAC0, - 0x00726800, 0x0071E540, 0x00716280, - 0x0070DFC0, 0x00705D00, 0x006FDA40, - 0x006F5780, 0x006ED4C0, 0x006E5200, - 0x006DCF40, 0x006D4C80, 0x006CC9C0, - 0x006C4700, 0x006BC440, 0x006B4180, - 0x006ABEC0, 0x006A3C00, 0x0069B940, - 0x00693680, 0x0068B3C0, 0x00683100, - 0x0067AE40, 0x00672B80, 0x0066A8C0, - 0x00662600, 0x0065A340, 0x00652080, - 0x00649DC0, 0x00641B00, 0x00639840, - 0x00631580, 0x006292C0, 0x00621000, - 0x00618D40, 0x00610A80, 0x006087C0, - 0x00600500, 0x005F8240, 0x005EFF80, - 0x005E7CC0, 0x005DFA00, 0x005D7740, - 0x005CF480, 0x005C71C0, 0x005BEF00, - 0x005B6C40, 0x005AE980, 0x005A66C0, - 0x0059E400, 0x00596140, 0x0058DE80, - 0x00585BC0, 0x0057D900, 0x00575640, - 0x0056D380, 0x005650C0, 0x0055CE00, - 0x00554B40, 0x0054C880, 0x005445C0, - 0x0053C300, 0x00534040, 0x0052BD80, - 0x00523AC0, 0x0051B800, 0x00513540, - 0x0050B280, 0x00502FC0, 0x004FAD00, - 0x004F2A40, 0x004EA780, 0x004E24C0, - 0x004DA200, 0x004D1F40, 0x004C9C80, - 0x004C19C0, 0x004B9700, 0x004B1440, - 0x004A9180, 0x004A0EC0, 0x00498C00, - 0x00490940, 0x00488680, 0x004803C0, - 0x00478100, 0x0046FE40, 0x00467B80, - 0x0045F8C0, 0x00457600, 0x0044F340, - 0x00447080, 0x0043EDC0, 0x00436B00, - 0x0042E840, 0x00426580, 0x0041E2C0, - 0x00416000, 0x0040DD40, 0x00405A80, - 0x003FD7C0, 0x003F5500, 0x003ED240, - 0x003E4F80, 0x003DCCC0, 0x003D4A00, - 0x003CC740, 0x003C4480, 0x003BC1C0, - 0x003B3F00, 0x003ABC40, 0x003A3980, - 0x0039B6C0, 0x00393400, 0x0038B140, - 0x00382E80, 0x0037ABC0, 0x00372900, - 0x0036A640, 0x00362380, 0x0035A0C0, - 0x00351E00, 0x00349B40, 0x00341880, - 0x003395C0, 0x00331300, 0x00329040, - 0x00320D80, 0x00318AC0, 0x00310800, - 0x00308540, 0x00300280, 0x002F7FC0, - 0x002EFD00, 0x002E7A40, 0x002DF780, - 0x002D74C0, 0x002CF200, 0x002C6F40, - 0x002BEC80, 0x002B69C0, 0x002AE700, - 0x002A6440, 0x0029E180, 0x00295EC0, - 0x0028DC00, 0x00285940, 0x0027D680, - 0x002753C0, 0x0026D100, 0x00264E40, - 0x0025CB80, 0x002548C0, 0x0024C600, - 0x00244340, 0x0023C080, 0x00233DC0, - 0x0022BB00, 0x00223840, 0x0021B580, - 0x002132C0, 0x0020B000, 0x00202D40, - 0x001FAA80, 0x001F27C0, 0x001EA500, - 0x001E2240, 0x001D9F80, 0x001D1CC0, - 0x001C9A00, 0x001C1740, 0x001B9480, - 0x001B11C0, 0x001A8F00, 0x001A0C40, - 0x00198980, 0x001906C0, 0x00188400, - 0x00180140, 0x00177E80, 0x0016FBC0, - 0x00167900, 0x0015F640, 0x00157380, - 0x0014F0C0, 0x00146E00, 0x0013EB40, - 0x00136880, 0x0012E5C0, 0x00126300, - 0x0011E040, 0x00115D80, 0x0010DAC0, - 0x00105800, 0x000FD540, 0x000F5280, - 0x000ECFC0, 0x000E4D00, 0x000DCA40, - 0x000D4780, 0x000CC4C0, 0x000C4200, - 0x000BBF40, 0x000B3C80, 0x000AB9C0, - 0x000A3700, 0x0009B440, 0x00093180, - 0x0008AEC0, 0x00082C00, 0x0007A940, - 0x00072680, 0x0006A3C0, 0x00062100, - 0x00059E40, 0x00051B80, 0x000498C0, - 0x00041600, 0x00039340, 0x00031080, - 0x00028DC0, 0x00020B00, 0x00018840, - 0x00010580, 0x000082C0, 0xFFE80000, - 0xFFE61700, 0xFFE42E00, 0xFFE24500, - 0xFFE05C00, 0xFFDE7300, 0xFFDC8A00, - 0xFFDAA100, 0xFFD8B800, 0xFFD6CF00, - 0xFFD4E600, 0xFFD2FD00, 0xFFD11400, - 0xFFCF2B00, 0xFFCD4200, 0xFFCB5900, - 0xFFC97000, 0xFFC78700, 0xFFC59E00, - 0xFFC3B500, 0xFFC1CC00, 0xFFBFE300, - 0xFFBDFA00, 0xFFBC1100, 0xFFBA2800, - 0xFFB83F00, 0xFFB65600, 0xFFB46D00, - 0xFFB28400, 0xFFB09B00, 0xFFAEB200, - 0xFFACC900, 0xFFAAE000, 0xFFA8F700, - 0xFFA70E00, 0xFFA52500, 0xFFA33C00, - 0xFFA15300, 0xFF9F6A00, 0xFF9D8100, - 0xFF9B9800, 0xFF99AF00, 0xFF97C600, - 0xFF95DD00, 0xFF93F400, 0xFF920B00, - 0xFF902200, 0xFF8E3900, 0xFF8C5000, - 0xFF8A6700, 0xFF887E00, 0xFF869500, - 0xFF84AC00, 0xFF82C300, 0xFF80DA00, - 0xFF7EF100, 0xFF7D0800, 0xFF7B1F00, - 0xFF793600, 0xFF774D00, 0xFF756400, - 0xFF737B00, 0xFF719200, 0xFF6FA900, - 0xFF6DC000, 0xFF6BD700, 0xFF69EE00, - 0xFF680500, 0xFF661C00, 0xFF643300, - 0xFF624A00, 0xFF606100, 0xFF5E7800, - 0xFF5C8F00, 0xFF5AA600, 0xFF58BD00, - 0xFF56D400, 0xFF54EB00, 0xFF530200, - 0xFF511900, 0xFF4F3000, 0xFF4D4700, - 0xFF4B5E00, 0xFF497500, 0xFF478C00, - 0xFF45A300, 0xFF43BA00, 0xFF41D100, - 0xFF3FE800, 0xFF3DFF00, 0xFF3C1600, - 0xFF3A2D00, 0xFF384400, 0xFF365B00, - 0xFF347200, 0xFF328900, 0xFF30A000, - 0xFF2EB700, 0xFF2CCE00, 0xFF2AE500, - 0xFF28FC00, 0xFF271300, 0xFF252A00, - 0xFF234100, 0xFF215800, 0xFF1F6F00, - 0xFF1D8600, 0xFF1B9D00, 0xFF19B400, - 0xFF17CB00, 0xFF15E200, 0xFF13F900, - 0xFF121000, 0xFF102700, 0xFF0E3E00, - 0xFF0C5500, 0xFF0A6C00, 0xFF088300, - 0xFF069A00, 0xFF04B100, 0xFF02C800, - 0xFF00DF00, 0xFEFEF600, 0xFEFD0D00, - 0xFEFB2400, 0xFEF93B00, 0xFEF75200, - 0xFEF56900, 0xFEF38000, 0xFEF19700, - 0xFEEFAE00, 0xFEEDC500, 0xFEEBDC00, - 0xFEE9F300, 0xFEE80A00, 0xFEE62100, - 0xFEE43800, 0xFEE24F00, 0xFEE06600, - 0xFEDE7D00, 0xFEDC9400, 0xFEDAAB00, - 0xFED8C200, 0xFED6D900, 0xFED4F000, - 0xFED30700, 0xFED11E00, 0xFECF3500, - 0xFECD4C00, 0xFECB6300, 0xFEC97A00, - 0xFEC79100, 0xFEC5A800, 0xFEC3BF00, - 0xFEC1D600, 0xFEBFED00, 0xFEBE0400, - 0xFEBC1B00, 0xFEBA3200, 0xFEB84900, - 0xFEB66000, 0xFEB47700, 0xFEB28E00, - 0xFEB0A500, 0xFEAEBC00, 0xFEACD300, - 0xFEAAEA00, 0xFEA90100, 0xFEA71800, - 0xFEA52F00, 0xFEA34600, 0xFEA15D00, - 0xFE9F7400, 0xFE9D8B00, 0xFE9BA200, - 0xFE99B900, 0xFE97D000, 0xFE95E700, - 0xFE93FE00, 0xFE921500, 0xFE902C00, - 0xFE8E4300, 0xFE8C5A00, 0xFE8A7100, - 0xFE888800, 0xFE869F00, 0xFE84B600, - 0xFE82CD00, 0xFE80E400, 0xFE7EFB00, - 0xFE7D1200, 0xFE7B2900, 0xFE794000, - 0xFE775700, 0xFE756E00, 0xFE738500, - 0xFE719C00, 0xFE6FB300, 0xFE6DCA00, - 0xFE6BE100, 0xFE69F800, 0xFE680F00, - 0xFE662600, 0xFE643D00, 0xFE625400, - 0xFE606B00, 0xFE5E8200, 0xFE5C9900, - 0xFE5AB000, 0xFE58C700, 0xFE56DE00, - 0xFE54F500, 0xFE530C00, 0xFE512300, - 0xFE4F3A00, 0xFE4D5100, 0xFE4B6800, - 0xFE497F00, 0xFE479600, 0xFE45AD00, - 0xFE43C400, 0xFE41DB00, 0xFE3FF200, - 0xFE3E0900, 0xFE3C2000, 0xFE3A3700, - 0xFE384E00, 0xFE366500, 0xFE347C00, - 0xFE329300, 0xFE30AA00, 0xFE2EC100, - 0xFE2CD800, 0xFE2AEF00, 0xFE290600, - 0xFE271D00, 0xFE253400, 0xFE234B00, - 0xFE216200, 0xFE1F7900, 0xFE1D9000, - 0xFE1BA700, 0xFE19BE00, 0xFE17D500, - 0xFE15EC00, 0xFE140300, 0xFE121A00, - 0xFE103100, 0xFE0E4800, 0xFE0C5F00, - 0xFE0A7600, 0xFE088D00, 0xFE06A400, - 0xFE04BB00, 0xFE02D200, 0xFE00E900, - 0xFDFF0000, 0xFDFD1700, 0xFDFB2E00, - 0xFDF94500, 0xFDF75C00, 0xFDF57300, - 0xFDF38A00, 0xFDF1A100, 0xFDEFB800, - 0xFDEDCF00, 0xFDEBE600, 0xFDE9FD00, - 0xFDE81400, 0xFDE62B00, 0xFDE44200, - 0xFDE25900, 0xFDE07000, 0xFDDE8700, - 0xFDDC9E00, 0xFDDAB500, 0xFDD8CC00, - 0xFDD6E300, 0xFDD4FA00, 0xFDD31100, - 0xFDD12800, 0xFDCF3F00, 0xFDCD5600, - 0xFDCB6D00, 0xFDC98400, 0xFDC79B00, - 0xFDC5B200, 0xFDC3C900, 0xFDC1E000, - 0xFDBFF700, 0xFDBE0E00, 0xFDBC2500, - 0xFDBA3C00, 0xFDB85300, 0xFDB66A00, - 0xFDB48100, 0xFDB29800, 0xFDB0AF00, - 0xFDAEC600, 0xFDACDD00, 0xFDAAF400, - 0xFDA90B00, 0xFDA72200, 0xFDA53900, - 0xFDA35000, 0xFDA16700, 0xFD9F7E00, - 0xFD9D9500, 0xFD9BAC00, 0xFD99C300, - 0xFD97DA00, 0xFD95F100, 0xFD940800, - 0xFD921F00, 0xFD903600, 0xFD8E4D00, - 0xFD8C6400, 0xFD8A7B00, 0xFD889200, - 0xFD86A900, 0xFD84C000, 0xFD82D700, - 0xFD80EE00, 0xFD7F0500, 0xFD7D1C00, - 0xFD7B3300, 0xFD794A00, 0xFD776100, - 0xFD757800, 0xFD738F00, 0xFD71A600, - 0xFD6FBD00, 0xFD6DD400, 0xFD6BEB00, - 0xFD6A0200, 0xFD681900, 0xFD663000, - 0xFD644700, 0xFD625E00, 0xFD607500, - 0xFD5E8C00, 0xFD5CA300, 0xFD5ABA00, - 0xFD58D100, 0xFD56E800, 0xFD54FF00, - 0xFD531600, 0xFD512D00, 0xFD4F4400, - 0xFD4D5B00, 0xFD4B7200, 0xFD498900, - 0xFD47A000, 0xFD45B700, 0xFD43CE00, - 0xFD41E500, 0xFD3FFC00, 0xFD3E1300, - 0xFD3C2A00, 0xFD3A4100, 0xFD385800, - 0xFD366F00, 0xFD348600, 0xFD329D00, - 0xFD30B400, 0xFD2ECB00, 0xFD2CE200, - 0xFD2AF900, 0xFD291000, 0xFD272700, - 0xFD253E00, 0xFD235500, 0xFD216C00, - 0xFD1F8300, 0xFD1D9A00, 0xFD1BB100, - 0xFD19C800, 0xFD17DF00, 0xFD15F600, - 0xFD140D00, 0xFD122400, 0xFD103B00, - 0xFD0E5200, 0xFD0C6900, 0xFD0A8000, - 0xFD089700, 0xFD06AE00, 0xFD04C500, - 0xFD02DC00, 0xFD00F300, 0xFCFF0A00, - 0xFCFD2100, 0xFCFB3800, 0xFCF94F00, - 0xFCF76600, 0xFCF57D00, 0xFCF39400, - 0xFCF1AB00, 0xFCEFC200, 0xFCEDD900, - 0xFCEBF000, 0xFCEA0700, 0xFCE81E00, - 0xFCE63500, 0xFCE44C00, 0xFCE26300, - 0xFCE07A00, 0xFCDE9100, 0xFCDCA800, - 0xFCDABF00, 0xFCD8D600, 0xFCD6ED00, - 0xFCD50400, 0xFCD31B00, 0xFCD13200, - 0xFCCF4900, 0xFCCD6000, 0xFCCB7700, - 0xFCC98E00, 0xFCC7A500, 0xFCC5BC00, - 0xFCC3D300, 0xFCC1EA00, 0xFCC00100, - 0xFCBE1800, 0xFCBC2F00, 0xFCBA4600, - 0xFCB85D00, 0xFCB67400, 0xFCB48B00, - 0xFCB2A200, 0xFCB0B900, 0xFCAED000, - 0xFCACE700, 0xFCAAFE00, 0xFCA91500, - 0xFCA72C00, 0xFCA54300, 0xFCA35A00, - 0xFCA17100, 0xFC9F8800, 0xFC9D9F00, - 0xFC9BB600, 0xFC99CD00, 0xFC97E400, - 0xFC95FB00, 0xFC941200, 0xFC922900, - 0xFC904000, 0xFC8E5700, 0xFC8C6E00, - 0xFC8A8500, 0xFC889C00, 0xFC86B300, - 0xFC84CA00, 0xFC82E100, 0xFC80F800, - 0xFC7F0F00, 0xFC7D2600, 0xFC7B3D00, - 0xFC795400, 0xFC776B00, 0xFC758200, - 0xFC739900, 0xFC71B000, 0xFC6FC700, - 0xFC6DDE00, 0xFC6BF500, 0xFC6A0C00, - 0xFC682300, 0xFC663A00, 0xFC645100, - 0xFC626800, 0xFC607F00, 0xFC5E9600, - 0xFC5CAD00, 0xFC5AC400, 0xFC58DB00, - 0xFC56F200, 0xFC550900, 0xFC532000, - 0xFC513700, 0xFC4F4E00, 0xFC4D6500, - 0xFC4B7C00, 0xFC499300, 0xFC47AA00, - 0xFC45C100, 0xFC43D800, 0xFC41EF00, - 0xFC400600, 0xFC3E1D00, 0xFC3C3400, - 0xFC3A4B00, 0xFC386200, 0xFC367900, - 0xFC349000, 0xFC32A700, 0xFC30BE00, - 0xFC2ED500, 0xFC2CEC00, 0xFC2B0300, - 0xFC291A00, 0xFC273100, 0xFC254800, - 0xFC235F00, 0xFC217600, 0xFC1F8D00, - 0xFC1DA400, 0xFC1BBB00, 0xFC19D200, - 0xFC17E900, 0xFC160000, 0xFC141700, - 0xFC122E00, 0xFC104500, 0xFC0E5C00, - 0xFC0C7300, 0xFC0A8A00, 0xFC08A100, - 0xFC06B800, 0xFC04CF00, 0xFC02E600, - 0xFC00FD00, 0xFBFF1400, 0xFBFD2B00, - 0xFBFB4200, 0xFBF95900, 0xFBF77000, - 0xFBF58700, 0xFBF39E00, 0xFBF1B500, - 0xFBEFCC00, 0xFBEDE300, 0xFBEBFA00, - 0xFBEA1100, 0xFBE82800, 0xFBE63F00, - 0xFBE45600, 0xFBE26D00, 0xFBE08400, - 0xFBDE9B00, 0xFBDCB200, 0xFBDAC900, - 0xFBD8E000, 0xFBD6F700, 0xFBD50E00, - 0xFBD32500, 0xFBD13C00, 0xFBCF5300, - 0xFBCD6A00, 0xFBCB8100, 0xFBC99800, - 0xFBC7AF00, 0xFBC5C600, 0xFBC3DD00, - 0xFBC1F400, 0xFBC00B00, 0xFBBE2200, - 0xFBBC3900, 0xFBBA5000, 0xFBB86700, - 0xFBB67E00, 0xFBB49500, 0xFBB2AC00, - 0xFBB0C300, 0xFBAEDA00, 0xFBACF100, - 0xFBAB0800, 0xFBA91F00, 0xFBA73600, - 0xFBA54D00, 0xFBA36400, 0xFBA17B00, - 0xFB9F9200, 0xFB9DA900, 0xFB9BC000, - 0xFB99D700, 0xFB97EE00, 0xFB960500, - 0xFB941C00, 0xFB923300, 0xFB904A00, - 0xFB8E6100, 0xFB8C7800, 0xFB8A8F00, - 0xFB88A600, 0xFB86BD00, 0xFB84D400, - 0xFB82EB00, 0xFB810200, 0xFB7F1900, - 0xFB7D3000, 0xFB7B4700, 0xFB795E00, - 0xFB777500, 0xFB758C00, 0xFB73A300, - 0xFB71BA00, 0xFB6FD100, 0xFB6DE800, - 0xFB6BFF00, 0xFB6A1600, 0xFB682D00, - 0xFB664400, 0xFB645B00, 0xFB627200, - 0xFB608900, 0xFB5EA000, 0xFB5CB700, - 0xFB5ACE00, 0xFB58E500, 0xFB56FC00, - 0xFB551300, 0xFB532A00, 0xFB514100, - 0xFB4F5800, 0xFB4D6F00, 0xFB4B8600, - 0xFB499D00, 0xFB47B400, 0xFB45CB00, - 0xFB43E200, 0xFB41F900, 0xFB401000, - 0xFB3E2700, 0xFB3C3E00, 0xFB3A5500, - 0xFB386C00, 0xFB368300, 0xFB349A00, - 0xFB32B100, 0xFB30C800, 0xFB2EDF00, - 0xFB2CF600, 0xFB2B0D00, 0xFB292400, - 0xFB273B00, 0xFB255200, 0xFB236900, - 0xFB218000, 0xFB1F9700, 0xFB1DAE00, - 0xFB1BC500, 0xFB19DC00, 0xFB17F300, - 0xFB160A00, 0xFB142100, 0xFB123800, - 0xFB104F00, 0xFB0E6600, 0xFB0C7D00, - 0xFB0A9400, 0xFB08AB00, 0xFB06C200, - 0xFB04D900, 0xFB02F000, 0xFB010700, - 0xFAFF1E00, 0xFAFD3500, 0xFAFB4C00, - 0xFAF96300, 0xFAF77A00, 0xFAF59100, - 0xFAF3A800, 0xFAF1BF00, 0xFAEFD600, - 0xFAEDED00, 0xFAEC0400, 0xFAEA1B00, - 0xFAE83200, 0xFAE64900, 0xFAE46000, - 0xFAE27700, 0xFAE08E00, 0xFADEA500, - 0xFADCBC00, 0xFADAD300, 0xFAD8EA00, - 0xFAD70100, 0xFAD51800, 0xFAD32F00, - 0xFAD14600, 0xFACF5D00, 0xFACD7400, - 0xFACB8B00, 0xFAC9A200, 0xFAC7B900, - 0xFAC5D000, 0xFAC3E700, 0xFAC1FE00, - 0xFAC01500, 0xFABE2C00, 0xFABC4300, - 0xFABA5A00, 0xFAB87100, 0xFAB68800, - 0xFAB49F00, 0xFAB2B600, 0xFAB0CD00, - 0xFAAEE400, 0xFAACFB00, 0xFAAB1200, - 0xFAA92900, 0xFAA74000, 0xFAA55700, - 0xFAA36E00, 0xFAA18500, 0xFA9F9C00, - 0xFA9DB300, 0xFA9BCA00, 0xFA99E100, - 0xFA97F800, 0xFA960F00, 0xFA942600, - 0xFA923D00, 0xFA905400, 0xFA8E6B00, - 0xFA8C8200, 0xFA8A9900, 0xFA88B000, - 0xFA86C700, 0xFA84DE00, 0xFA82F500, - 0xFA810C00, 0xFA7F2300, 0xFA7D3A00, - 0xFA7B5100, 0xFA796800, 0xFA777F00, - 0xFA759600, 0xFA73AD00, 0xFA71C400, - 0xFA6FDB00, 0xFA6DF200, 0xFA6C0900, - 0xFA6A2000, 0xFA683700, 0xFA664E00, - 0xFA646500, 0xFA627C00, 0xFA609300, - 0xFA5EAA00, 0xFA5CC100, 0xFA5AD800, - 0xFA58EF00, 0xFA570600, 0xFA551D00, - 0xFA533400, 0xFA514B00, 0xFA4F6200, - 0xFA4D7900, 0xFA4B9000, 0xFA49A700, - 0xFA47BE00, 0xFA45D500, 0xFA43EC00, - 0xFA420300, 0xFA401A00, 0xFA3E3100, - 0xFA3C4800, 0xFA3A5F00, 0xFA387600, - 0xFA368D00, 0xFA34A400, 0xFA32BB00, - 0xFA30D200, 0xFA2EE900, 0xFA2D0000, - 0xFA2B1700, 0xFA292E00, 0xFA274500, - 0xFA255C00, 0xFA237300, 0xFA218A00, - 0xFA1FA100, 0xFA1DB800, 0xFA1BCF00, - 0xFA19E600, 0xFA17FD00, 0xFA161400, - 0xFA142B00, 0xFA124200, 0xFA105900, - 0xFA0E7000, 0xFA0C8700, 0xFA0A9E00, - 0xFA08B500, 0xFA06CC00, 0xFA04E300, - 0xFA02FA00, 0xFA011100, 0xF9FF2800, - 0xF9FD3F00, 0xF9FB5600, 0xF9F96D00, - 0xF9F78400, 0xF9F59B00, 0xF9F3B200, - 0xF9F1C900, 0xF9EFE000, 0xF9EDF700, - 0xF9EC0E00, 0xF9EA2500, 0xF9E83C00, - 0xF9E65300, 0xF9E46A00, 0xF9E28100, - 0xF9E09800, 0xF9DEAF00, 0xF9DCC600, - 0xF9DADD00, 0xF9D8F400, 0xF9D70B00, - 0xF9D52200, 0xF9D33900, 0xF9D15000, - 0xF9CF6700, 0xF9CD7E00, 0xF9CB9500, - 0xF9C9AC00, 0xF9C7C300, 0xF9C5DA00, - 0xF9C3F100, 0xF9C20800, 0xF9C01F00, - 0xF9BE3600, 0xF9BC4D00, 0xF9BA6400, - 0xF9B87B00, 0xF9B69200, 0xF9B4A900, - 0xF9B2C000, 0xF9B0D700, 0xF9AEEE00, - 0xF9AD0500, 0xF9AB1C00, 0xF9A93300, - 0xF9A74A00, 0xF9A56100, 0xF9A37800, - 0xF9A18F00, 0xF99FA600, 0xF99DBD00, - 0xF99BD400, 0xF999EB00, 0xF9980200, - 0xF9961900, 0xF9943000, 0xF9924700, - 0xF9905E00, 0xF98E7500, 0xF98C8C00, - 0xF98AA300, 0xF988BA00, 0xF986D100, - 0xF984E800, 0xF982FF00, 0xF9811600, - 0xF97F2D00, 0xF97D4400, 0xF97B5B00, - 0xF9797200, 0xF9778900, 0xF975A000, - 0xF973B700, 0xF971CE00, 0xF96FE500, - 0xF96DFC00, 0xF96C1300, 0xF96A2A00, - 0xF9684100, 0xF9665800, 0xF9646F00, - 0xF9628600, 0xF9609D00, 0xF95EB400, - 0xF95CCB00, 0xF95AE200, 0xF958F900, - 0xF9571000, 0xF9552700, 0xF9533E00, - 0xF9515500, 0xF94F6C00, 0xF94D8300, - 0xF94B9A00, 0xF949B100, 0xF947C800, - 0xF945DF00, 0xF943F600, 0xF9420D00, - 0xF9402400, 0xF93E3B00, 0xF93C5200, - 0xF93A6900, 0xF9388000, 0xF9369700, - 0xF934AE00, 0xF932C500, 0xF930DC00, - 0xF92EF300, 0xF92D0A00, 0xF92B2100, - 0xF9293800, 0xF9274F00, 0xF9256600, - 0xF9237D00, 0xF9219400, 0xF91FAB00, - 0xF91DC200, 0xF91BD900, 0xF919F000, - 0xF9180700, 0xF9161E00, 0xF9143500, - 0xF9124C00, 0xF9106300, 0xF90E7A00, - 0xF90C9100, 0xF90AA800, 0xF908BF00, - 0xF906D600, 0xF904ED00, 0xF9030400, - 0xF9011B00, 0xF8FF3200, 0xF8FD4900, - 0xF8FB6000, 0xF8F97700, 0xF8F78E00, - 0xF8F5A500, 0xF8F3BC00, 0xF8F1D300, - 0xF8EFEA00, 0xF8EE0100, 0xF8EC1800, - 0xF8EA2F00, 0xF8E84600, 0xF8E65D00, - 0xF8E47400, 0xF8E28B00, 0xF8E0A200, - 0xF8DEB900, 0xF8DCD000, 0xF8DAE700, - 0xF8D8FE00, 0xF8D71500, 0xF8D52C00, - 0xF8D34300, 0xF8D15A00, 0xF8CF7100, - 0xF8CD8800, 0xF8CB9F00, 0xF8C9B600, - 0xF8C7CD00, 0xF8C5E400, 0xF8C3FB00, - 0xF8C21200, 0xF8C02900, 0xF8BE4000, - 0xF8BC5700, 0xF8BA6E00, 0xF8B88500, - 0xF8B69C00, 0xF8B4B300, 0xF8B2CA00, - 0xF8B0E100, 0xF8AEF800, 0xF8AD0F00, - 0xF8AB2600, 0xF8A93D00, 0xF8A75400, - 0xF8A56B00, 0xF8A38200, 0xF8A19900, - 0xF89FB000, 0xF89DC700, 0xF89BDE00, - 0xF899F500, 0xF8980C00, 0xF8962300, - 0xF8943A00, 0xF8925100, 0xF8906800, - 0xF88E7F00, 0xF88C9600, 0xF88AAD00, - 0xF888C400, 0xF886DB00, 0xF884F200, - 0xF8830900, 0xF8812000, 0xF87F3700, - 0xF87D4E00, 0xF87B6500, 0xF8797C00, - 0xF8779300, 0xF875AA00, 0xF873C100, - 0xF871D800, 0xF86FEF00, 0xF86E0600, - 0xF86C1D00, 0xF86A3400, 0xF8684B00, - 0xF8666200, 0xF8647900, 0xF8629000, - 0xF860A700, 0xF85EBE00, 0xF85CD500, - 0xF85AEC00, 0xF8590300, 0xF8571A00, - 0xF8553100, 0xF8534800, 0xF8515F00, - 0xF84F7600, 0xF84D8D00, 0xF84BA400, - 0xF849BB00, 0xF847D200, 0xF845E900, - 0xF8440000, 0xF8421700, 0xF8402E00, - 0xF83E4500, 0xF83C5C00, 0xF83A7300, - 0xF8388A00, 0xF836A100, 0xF834B800, - 0xF832CF00, 0xF830E600, 0xF82EFD00, - 0xF82D1400, 0xF82B2B00, 0xF8294200, - 0xF8275900, 0xF8257000, 0xF8238700, - 0xF8219E00, 0xF81FB500, 0xF81DCC00, - 0xF81BE300, 0xF819FA00, 0xF8181100, - 0xF8162800, 0xF8143F00, 0xF8125600, - 0xF8106D00, 0xF80E8400, 0xF80C9B00, - 0xF80AB200, 0xF808C900, 0xF806E000, - 0xF804F700, 0xF8030E00, 0xF8012500, - 0xF7FF3C00, 0xF7FD5300, 0xF7FB6A00, - 0xF7F98100, 0xF7F79800, 0xF7F5AF00, - 0xF7F3C600, 0xF7F1DD00, 0xF7EFF400, - 0xF7EE0B00, 0xF7EC2200, 0xF7EA3900, - 0xF7E85000, 0xF7E66700, 0xF7E47E00, - 0xF7E29500, 0xF7E0AC00, 0xF7DEC300, - 0xF7DCDA00, 0xF7DAF100, 0xF7D90800, - 0xF7D71F00, 0xF7D53600, 0xF7D34D00, - 0xF7D16400, 0xF7CF7B00, 0xF7CD9200, - 0xF7CBA900, 0xF7C9C000, 0xF7C7D700, - 0xF7C5EE00, 0xF7C40500, 0xF7C21C00, - 0xF7C03300, 0xF7BE4A00, 0xF7BC6100, - 0xF7BA7800, 0xF7B88F00, 0xF7B6A600, - 0xF7B4BD00, 0xF7B2D400, 0xF7B0EB00, - 0xF7AF0200, 0xF7AD1900, 0xF7AB3000, - 0xF7A94700, 0xF7A75E00, 0xF7A57500, - 0xF7A38C00, 0xF7A1A300, 0xF79FBA00, - 0xF79DD100, 0xF79BE800, 0xF799FF00, - 0xF7981600, 0xF7962D00, 0xF7944400, - 0xF7925B00, 0xF7907200, 0xF78E8900, - 0xF78CA000, 0xF78AB700, 0xF788CE00, - 0xF786E500, 0xF784FC00, 0xF7831300, - 0xF7812A00, 0xF77F4100, 0xF77D5800, - 0xF77B6F00, 0xF7798600, 0xF7779D00, - 0xF775B400, 0xF773CB00, 0xF771E200, - 0xF76FF900, 0xF76E1000, 0xF76C2700, - 0xF76A3E00, 0xF7685500, 0xF7666C00, - 0xF7648300, 0xF7629A00, 0xF760B100, - 0xF75EC800, 0xF75CDF00, 0xF75AF600, - 0xF7590D00, 0xF7572400, 0xF7553B00, - 0xF7535200, 0xF7516900, 0xF74F8000, - 0xF74D9700, 0xF74BAE00, 0xF749C500, - 0xF747DC00, 0xF745F300, 0xF7440A00, - 0xF7422100, 0xF7403800, 0xF73E4F00, - 0xF73C6600, 0xF73A7D00, 0xF7389400, - 0xF736AB00, 0xF734C200, 0xF732D900, - 0xF730F000, 0xF72F0700, 0xF72D1E00, - 0xF72B3500, 0xF7294C00, 0xF7276300, - 0xF7257A00, 0xF7239100, 0xF721A800, - 0xF71FBF00, 0xF71DD600, 0xF71BED00, - 0xF71A0400, 0xF7181B00, 0xF7163200, - 0xF7144900, 0xF7126000, 0xF7107700, - 0xF70E8E00, 0xF70CA500, 0xF70ABC00, - 0xF708D300, 0xF706EA00, 0xF7050100, - 0xF7031800, 0xF7012F00, 0xF6FF4600, - 0xF6FD5D00, 0xF6FB7400, 0xF6F98B00, - 0xF6F7A200, 0xF6F5B900, 0xF6F3D000, - 0xF6F1E700, 0xF6EFFE00, 0xF6EE1500, - 0xF6EC2C00, 0xF6EA4300, 0xF6E85A00, - 0xF6E67100, 0xF6E48800, 0xF6E29F00, - 0xF6E0B600, 0xF6DECD00, 0xF6DCE400, - 0xF6DAFB00, 0xF6D91200, 0xF6D72900, - 0xF6D54000, 0xF6D35700, 0xF6D16E00, - 0xF6CF8500, 0xF6CD9C00, 0xF6CBB300, - 0xF6C9CA00, 0xF6C7E100, 0xF6C5F800, - 0xF6C40F00, 0xF6C22600, 0xF6C03D00, - 0xF6BE5400, 0xF6BC6B00, 0xF6BA8200, - 0xF6B89900, 0xF6B6B000, 0xF6B4C700, - 0xF6B2DE00, 0xF6B0F500, 0xF6AF0C00, - 0xF6AD2300, 0xF6AB3A00, 0xF6A95100, - 0xF6A76800, 0xF6A57F00, 0xF6A39600, - 0xF6A1AD00, 0xF69FC400, 0xF69DDB00, - 0xF69BF200, 0xF69A0900, 0xF6982000, - 0xF6963700, 0xF6944E00, 0xF6926500, - 0xF6907C00, 0xF68E9300, 0xF68CAA00, - 0xF68AC100, 0xF688D800, 0xF686EF00, - 0xF6850600, 0xF6831D00, 0xF6813400, - 0xF67F4B00, 0xF67D6200, 0xF67B7900, - 0xF6799000, 0xF677A700, 0xF675BE00, - 0xF673D500, 0xF671EC00, 0xF6700300, - 0xF66E1A00, 0xF66C3100, 0xF66A4800, - 0xF6685F00, 0xF6667600, 0xF6648D00, - 0xF662A400, 0xF660BB00, 0xF65ED200, - 0xF65CE900, 0xF65B0000, 0xF6591700, - 0xF6572E00, 0xF6554500, 0xF6535C00, - 0xF6517300, 0xF64F8A00, 0xF64DA100, - 0xF64BB800, 0xF649CF00, 0xF647E600, - 0xF645FD00, 0xF6441400, 0xF6422B00, - 0xF6404200, 0xF63E5900, 0xF63C7000, - 0xF63A8700, 0xF6389E00, 0xF636B500, - 0xF634CC00, 0xF632E300, 0xF630FA00, - 0xF62F1100, 0xF62D2800, 0xF62B3F00, - 0xF6295600, 0xF6276D00, 0xF6258400, - 0xF6239B00, 0xF621B200, 0xF61FC900, - 0xF61DE000, 0xF61BF700, 0xF61A0E00, - 0xF6182500, 0xF6163C00, 0xF6145300, - 0xF6126A00, 0xF6108100, 0xF60E9800, - 0xF60CAF00, 0xF60AC600, 0xF608DD00, - 0xF606F400, 0xF6050B00, 0xF6032200, - 0xF6013900, 0xF5FF5000, 0xF5FD6700, - 0xF5FB7E00, 0xF5F99500, 0xF5F7AC00, - 0xF5F5C300, 0xF5F3DA00, 0xF5F1F100, - 0xF5F00800, 0xF5EE1F00, 0xF5EC3600, - 0xF5EA4D00, 0xF5E86400, 0xF5E67B00, - 0xF5E49200, 0xF5E2A900, 0xF5E0C000, - 0xF5DED700, 0xF5DCEE00, 0xF5DB0500, - 0xF5D91C00, 0xF5D73300, 0xF5D54A00, - 0xF5D36100, 0xF5D17800, 0xF5CF8F00, - 0xF5CDA600, 0xF5CBBD00, 0xF5C9D400, - 0xF5C7EB00, 0xF5C60200, 0xF5C41900, - 0xF5C23000, 0xF5C04700, 0xF5BE5E00, - 0xF5BC7500, 0xF5BA8C00, 0xF5B8A300, - 0xF5B6BA00, 0xF5B4D100, 0xF5B2E800, - 0xF5B0FF00, 0xF5AF1600, 0xF5AD2D00, - 0xF5AB4400, 0xF5A95B00, 0xF5A77200, - 0xF5A58900, 0xF5A3A000, 0xF5A1B700, - 0xF59FCE00, 0xF59DE500, 0xF59BFC00, - 0xF59A1300, 0xF5982A00, 0xF5964100, - 0xF5945800, 0xF5926F00, 0xF5908600, - 0xF58E9D00, 0xF58CB400, 0xF58ACB00, - 0xF588E200, 0xF586F900, 0xF5851000, - 0xF5832700, 0xF5813E00, 0xF57F5500, - 0xF57D6C00, 0xF57B8300, 0xF5799A00, - 0xF577B100, 0xF575C800, 0xF573DF00, - 0xF571F600, 0xF5700D00, 0xF56E2400, - 0xF56C3B00, 0xF56A5200, 0xF5686900, - 0xF5668000, 0xF5649700, 0xF562AE00, - 0xF560C500, 0xF55EDC00, 0xF55CF300, - 0xF55B0A00, 0xF5592100, 0xF5573800, - 0xF5554F00, 0xF5536600, 0xF5517D00, - 0xF54F9400, 0xF54DAB00, 0xF54BC200, - 0xF549D900, 0xF547F000, 0xF5460700, - 0xF5441E00, 0xF5423500, 0xF5404C00, - 0xF53E6300, 0xF53C7A00, 0xF53A9100, - 0xF538A800, 0xF536BF00, 0xF534D600, - 0xF532ED00, 0xF5310400, 0xF52F1B00, - 0xF52D3200, 0xF52B4900, 0xF5296000, - 0xF5277700, 0xF5258E00, 0xF523A500, - 0xF521BC00, 0xF51FD300, 0xF51DEA00, - 0xF51C0100, 0xF51A1800, 0xF5182F00, - 0xF5164600, 0xF5145D00, 0xF5127400, - 0xF5108B00, 0xF50EA200, 0xF50CB900, - 0xF50AD000, 0xF508E700, 0xF506FE00, - 0xF5051500, 0xF5032C00, 0xF5014300, - 0xF4FF5A00, 0xF4FD7100, 0xF4FB8800, - 0xF4F99F00, 0xF4F7B600, 0xF4F5CD00, - 0xF4F3E400, 0xF4F1FB00, 0xF4F01200, - 0xF4EE2900, 0xF4EC4000, 0xF4EA5700, - 0xF4E86E00, 0xF4E68500, 0xF4E49C00, - 0xF4E2B300, 0xF4E0CA00, 0xF4DEE100, - 0xF4DCF800, 0xF4DB0F00, 0xF4D92600, - 0xF4D73D00, 0xF4D55400, 0xF4D36B00, - 0xF4D18200, 0xF4CF9900, 0xF4CDB000, - 0xF4CBC700, 0xF4C9DE00, 0xF4C7F500, - 0xF4C60C00, 0xF4C42300, 0xF4C23A00, - 0xF4C05100, 0xF4BE6800, 0xF4BC7F00, - 0xF4BA9600, 0xF4B8AD00, 0xF4B6C400, - 0xF4B4DB00, 0xF4B2F200, 0xF4B10900, - 0xF4AF2000, 0xF4AD3700, 0xF4AB4E00, - 0xF4A96500, 0xF4A77C00, 0xF4A59300, - 0xF4A3AA00, 0xF4A1C100, 0xF49FD800, - 0xF49DEF00, 0xF49C0600, 0xF49A1D00, - 0xF4983400, 0xF4964B00, 0xF4946200, - 0xF4927900, 0xF4909000, 0xF48EA700, - 0xF48CBE00, 0xF48AD500, 0xF488EC00, - 0xF4870300, 0xF4851A00, 0xF4833100, - 0xF4814800, 0xF47F5F00, 0xF47D7600, - 0xF47B8D00, 0xF479A400, 0xF477BB00, - 0xF475D200, 0xF473E900, 0xF4720000, - 0xF4701700, 0xF46E2E00, 0xF46C4500, - 0xF46A5C00, 0xF4687300, 0xF4668A00, - 0xF464A100, 0xF462B800, 0xF460CF00, - 0xF45EE600, 0xF45CFD00, 0xF45B1400, - 0xF4592B00, 0xF4574200, 0xF4555900, - 0xF4537000, 0xF4518700, 0xF44F9E00, - 0xF44DB500, 0xF44BCC00, 0xF449E300, - 0xF447FA00, 0xF4461100, 0xF4442800, - 0xF4423F00, 0xF4405600, 0xF43E6D00, - 0xF43C8400, 0xF43A9B00, 0xF438B200, - 0xF436C900, 0xF434E000, 0xF432F700, - 0xF4310E00, 0xF42F2500, 0xF42D3C00, - 0xF42B5300, 0xF4296A00, 0xF4278100, - 0xF4259800, 0xF423AF00, 0xF421C600, - 0xF41FDD00, 0xF41DF400, 0xF41C0B00, - 0xF41A2200, 0xF4183900, 0xF4165000, - 0xF4146700, 0xF4127E00, 0xF4109500, - 0xF40EAC00, 0xF40CC300, 0xF40ADA00, - 0xF408F100, 0xF4070800, 0xF4051F00, - 0xF4033600, 0xF4014D00, 0xF3FF6400, - 0xF3FD7B00, 0xF3FB9200, 0xF3F9A900, - 0xF3F7C000, 0xF3F5D700, 0xF3F3EE00, - 0xF3F20500, 0xF3F01C00, 0xF3EE3300, - 0xF3EC4A00, 0xF3EA6100, 0xF3E87800, - 0xF3E68F00, 0xF3E4A600, 0xF3E2BD00, - 0xF3E0D400, 0xF3DEEB00, 0xF3DD0200, - 0xF3DB1900, 0xF3D93000, 0xF3D74700, - 0xF3D55E00, 0xF3D37500, 0xF3D18C00, - 0xF3CFA300, 0xF3CDBA00, 0xF3CBD100, - 0xF3C9E800, 0xF3C7FF00, 0xF3C61600, - 0xF3C42D00, 0xF3C24400, 0xF3C05B00, - 0xF3BE7200, 0xF3BC8900, 0xF3BAA000, - 0xF3B8B700, 0xF3B6CE00, 0xF3B4E500, - 0xF3B2FC00, 0xF3B11300, 0xF3AF2A00, - 0xF3AD4100, 0xF3AB5800, 0xF3A96F00, - 0xF3A78600, 0xF3A59D00, 0xF3A3B400, - 0xF3A1CB00, 0xF39FE200, 0xF39DF900, - 0xF39C1000, 0xF39A2700, 0xF3983E00, - 0xF3965500, 0xF3946C00, 0xF3928300, - 0xF3909A00, 0xF38EB100, 0xF38CC800, - 0xF38ADF00, 0xF388F600, 0xF3870D00, - 0xF3852400, 0xF3833B00, 0xF3815200, - 0xF37F6900, 0xF37D8000, 0xF37B9700, - 0xF379AE00, 0xF377C500, 0xF375DC00, - 0xF373F300, 0xF3720A00, 0xF3702100, - 0xF36E3800, 0xF36C4F00, 0xF36A6600, - 0xF3687D00, 0xF3669400, 0xF364AB00, - 0xF362C200, 0xF360D900, 0xF35EF000, - 0xF35D0700, 0xF35B1E00, 0xF3593500, - 0xF3574C00, 0xF3556300, 0xF3537A00, - 0xF3519100, 0xF34FA800, 0xF34DBF00, - 0xF34BD600, 0xF349ED00, 0xF3480400, - 0xF3461B00, 0xF3443200, 0xF3424900, - 0xF3406000, 0xF33E7700, 0xF33C8E00, - 0xF33AA500, 0xF338BC00, 0xF336D300, - 0xF334EA00, 0xF3330100, 0xF3311800, - 0xF32F2F00, 0xF32D4600, 0xF32B5D00, - 0xF3297400, 0xF3278B00, 0xF325A200, - 0xF323B900, 0xF321D000, 0xF31FE700, - 0xF31DFE00, 0xF31C1500, 0xF31A2C00, - 0xF3184300, 0xF3165A00, 0xF3147100, - 0xF3128800, 0xF3109F00, 0xF30EB600, - 0xF30CCD00, 0xF30AE400, 0xF308FB00, - 0xF3071200, 0xF3052900, 0xF3034000, - 0xF3015700, 0xF2FF6E00, 0xF2FD8500, - 0xF2FB9C00, 0xF2F9B300, 0xF2F7CA00, - 0xF2F5E100, 0xF2F3F800, 0xF2F20F00, - 0xF2F02600, 0xF2EE3D00, 0xF2EC5400, - 0xF2EA6B00, 0xF2E88200, 0xF2E69900, - 0xF2E4B000, 0xF2E2C700, 0xF2E0DE00, - 0xF2DEF500, 0xF2DD0C00, 0xF2DB2300, - 0xF2D93A00, 0xF2D75100, 0xF2D56800, - 0xF2D37F00, 0xF2D19600, 0xF2CFAD00, - 0xF2CDC400, 0xF2CBDB00, 0xF2C9F200, - 0xF2C80900, 0xF2C62000, 0xF2C43700, - 0xF2C24E00, 0xF2C06500, 0xF2BE7C00, - 0xF2BC9300, 0xF2BAAA00, 0xF2B8C100, - 0xF2B6D800, 0xF2B4EF00, 0xF2B30600, - 0xF2B11D00, 0xF2AF3400, 0xF2AD4B00, - 0xF2AB6200, 0xF2A97900, 0xF2A79000, - 0xF2A5A700, 0xF2A3BE00, 0xF2A1D500, - 0xF29FEC00, 0xF29E0300, 0xF29C1A00, - 0xF29A3100, 0xF2984800, 0xF2965F00, - 0xF2947600, 0xF2928D00, 0xF290A400, - 0xF28EBB00, 0xF28CD200, 0xF28AE900, - 0xF2890000, 0xF2871700, 0xF2852E00, - 0xF2834500, 0xF2815C00, 0xF27F7300, - 0xF27D8A00, 0xF27BA100, 0xF279B800, - 0xF277CF00, 0xF275E600, 0xF273FD00, - 0xF2721400, 0xF2702B00, 0xF26E4200, - 0xF26C5900, 0xF26A7000, 0xF2688700, - 0xF2669E00, 0xF264B500, 0xF262CC00, - 0xF260E300, 0xF25EFA00, 0xF25D1100, - 0xF25B2800, 0xF2593F00, 0xF2575600, - 0xF2556D00, 0xF2538400, 0xF2519B00, - 0xF24FB200, 0xF24DC900, 0xF24BE000, - 0xF249F700, 0xF2480E00, 0xF2462500, - 0xF2443C00, 0xF2425300, 0xF2406A00, - 0xF23E8100, 0xF23C9800, 0xF23AAF00, - 0xF238C600, 0xF236DD00, 0xF234F400, - 0xF2330B00, 0xF2312200, 0xF22F3900, - 0xF22D5000, 0xF22B6700, 0xF2297E00, - 0xF2279500, 0xF225AC00, 0xF223C300, - 0xF221DA00, 0xF21FF100, 0xF21E0800, - 0xF21C1F00, 0xF21A3600, 0xF2184D00, - 0xF2166400, 0xF2147B00, 0xF2129200, - 0xF210A900, 0xF20EC000, 0xF20CD700, - 0xF20AEE00, 0xF2090500, 0xF2071C00, - 0xF2053300, 0xF2034A00, 0xF2016100, - 0xF1FF7800, 0xF1FD8F00, 0xF1FBA600, - 0xF1F9BD00, 0xF1F7D400, 0xF1F5EB00, - 0xF1F40200, 0xF1F21900, 0xF1F03000, - 0xF1EE4700, 0xF1EC5E00, 0xF1EA7500, - 0xF1E88C00, 0xF1E6A300, 0xF1E4BA00, - 0xF1E2D100, 0xF1E0E800, 0xF1DEFF00, - 0xF1DD1600, 0xF1DB2D00, 0xF1D94400, - 0xF1D75B00, 0xF1D57200, 0xF1D38900, - 0xF1D1A000, 0xF1CFB700, 0xF1CDCE00, - 0xF1CBE500, 0xF1C9FC00, 0xF1C81300, - 0xF1C62A00, 0xF1C44100, 0xF1C25800, - 0xF1C06F00, 0xF1BE8600, 0xF1BC9D00, - 0xF1BAB400, 0xF1B8CB00, 0xF1B6E200, - 0xF1B4F900, 0xF1B31000, 0xF1B12700, - 0xF1AF3E00, 0xF1AD5500, 0xF1AB6C00, - 0xF1A98300, 0xF1A79A00, 0xF1A5B100, - 0xF1A3C800, 0xF1A1DF00, 0xF19FF600, - 0xF19E0D00, 0xF19C2400, 0xF19A3B00, - 0xF1985200, 0xF1966900, 0xF1948000, - 0xF1929700, 0xF190AE00, 0xF18EC500, - 0xF18CDC00, 0xF18AF300, 0xF1890A00, - 0xF1872100, 0xF1853800, 0xF1834F00, - 0xF1816600, 0xF17F7D00, 0xF17D9400, - 0xF17BAB00, 0xF179C200, 0xF177D900, - 0xF175F000, 0xF1740700, 0xF1721E00, - 0xF1703500, 0xF16E4C00, 0xF16C6300, - 0xF16A7A00, 0xF1689100, 0xF166A800, - 0xF164BF00, 0xF162D600, 0xF160ED00, - 0xF15F0400, 0xF15D1B00, 0xF15B3200, - 0xF1594900, 0xF1576000, 0xF1557700, - 0xF1538E00, 0xF151A500, 0xF14FBC00, - 0xF14DD300, 0xF14BEA00, 0xF14A0100, - 0xF1481800, 0xF1462F00, 0xF1444600, - 0xF1425D00, 0xF1407400, 0xF13E8B00, - 0xF13CA200, 0xF13AB900, 0xF138D000, - 0xF136E700, 0xF134FE00, 0xF1331500, - 0xF1312C00, 0xF12F4300, 0xF12D5A00, - 0xF12B7100, 0xF1298800, 0xF1279F00, - 0xF125B600, 0xF123CD00, 0xF121E400, - 0xF11FFB00, 0xF11E1200, 0xF11C2900, - 0xF11A4000, 0xF1185700, 0xF1166E00, - 0xF1148500, 0xF1129C00, 0xF110B300, - 0xF10ECA00, 0xF10CE100, 0xF10AF800, - 0xF1090F00, 0xF1072600, 0xF1053D00, - 0xF1035400, 0xF1016B00, 0xF0FF8200, - 0xF0FD9900, 0xF0FBB000, 0xF0F9C700, - 0xF0F7DE00, 0xF0F5F500, 0xF0F40C00, - 0xF0F22300, 0xF0F03A00, 0xF0EE5100, - 0xF0EC6800, 0xF0EA7F00, 0xF0E89600, - 0xF0E6AD00, 0xF0E4C400, 0xF0E2DB00, - 0xF0E0F200, 0xF0DF0900, 0xF0DD2000, - 0xF0DB3700, 0xF0D94E00, 0xF0D76500, - 0xF0D57C00, 0xF0D39300, 0xF0D1AA00, - 0xF0CFC100, 0xF0CDD800, 0xF0CBEF00, - 0xF0CA0600, 0xF0C81D00, 0xF0C63400, - 0xF0C44B00, 0xF0C26200, 0xF0C07900, - 0xF0BE9000, 0xF0BCA700, 0xF0BABE00, - 0xF0B8D500, 0xF0B6EC00, 0xF0B50300, - 0xF0B31A00, 0xF0B13100, 0xF0AF4800, - 0xF0AD5F00, 0xF0AB7600, 0xF0A98D00, - 0xF0A7A400, 0xF0A5BB00, 0xF0A3D200, - 0xF0A1E900, 0xF0A40000, 0xF0A24000, - 0xF0A08000, 0xF09EC000, 0xF09D0000, - 0xF09B4000, 0xF0998000, 0xF097C000, - 0xF0960000, 0xF0944000, 0xF0928000, - 0xF090C000, 0xF08F0000, 0xF08D4000, - 0xF08B8000, 0xF089C000, 0xF0880000, - 0xF0864000, 0xF0848000, 0xF082C000, - 0xF0810000, 0xF07F4000, 0xF07D8000, - 0xF07BC000, 0xF07A0000, 0xF0784000, - 0xF0768000, 0xF074C000, 0xF0730000, - 0xF0714000, 0xF06F8000, 0xF06DC000, - 0xF06C0000, 0xF06A4000, 0xF0688000, - 0xF066C000, 0xF0650000, 0xF0634000, - 0xF0618000, 0xF05FC000, 0xF05E0000, - 0xF05C4000, 0xF05A8000, 0xF058C000, - 0xF0570000, 0xF0554000, 0xF0538000, - 0xF051C000, 0xF0500000, 0xF04E4000, - 0xF04C8000, 0xF04AC000, 0xF0490000, - 0xF0474000, 0xF0458000, 0xF043C000, - 0xF0420000, 0xF0404000, 0xF03E8000, - 0xF03CC000, 0xF03B0000, 0xF0394000, - 0xF0378000, 0xF035C000, 0xF0340000, - 0xF0324000, 0xF0308000, 0xF02EC000, - 0xF02D0000, 0xF02B4000, 0xF0298000, - 0xF027C000, 0xF0260000, 0xF0244000, - 0xF0228000, 0xF020C000, 0xF01F0000, - 0xF01D4000, 0xF01B8000, 0xF019C000, - 0xF0180000, 0xF0164000, 0xF0148000, - 0xF012C000, 0xF0110000, 0xF00F4000, - 0xF00D8000, 0xF00BC000, 0xF00A0000, - 0xF0084000, 0xF0068000, 0xF004C000, - 0xF0030000, 0xF0014000, 0xEFFF8000, - 0xEFFDC000, 0xEFFC0000, 0xEFFA4000, - 0xEFF88000, 0xEFF6C000, 0xEFF50000, - 0xEFF34000, 0xEFF18000, 0xEFEFC000, - 0xEFEE0000, 0xEFEC4000, 0xEFEA8000, - 0xEFE8C000, 0xEFE70000, 0xEFE54000, - 0xEFE38000, 0xEFE1C000, 0xEFE00000, - 0xEFDE4000, 0xEFDC8000, 0xEFDAC000, - 0xEFD90000, 0xEFD74000, 0xEFD58000, - 0xEFD3C000, 0xEFD20000, 0xEFD04000, - 0xEFCE8000, 0xEFCCC000, 0xEFCB0000, - 0xEFC94000, 0xEFC78000, 0xEFC5C000, - 0xEFC40000, 0xEFC24000, 0xEFC08000, - 0xEFBEC000, 0xEFBD0000, 0xEFBB4000, - 0xEFB98000, 0xEFB7C000, 0xEFB60000, - 0xEFB44000, 0xEFB28000, 0xEFB0C000, - 0xEFAF0000, 0xEFAD4000, 0xEFAB8000, - 0xEFA9C000, 0xEFA80000, 0xEFA64000, - 0xEFA48000, 0xEFA2C000, 0xEFA10000, - 0xEF9F4000, 0xEF9D8000, 0xEF9BC000, - 0xEF9A0000, 0xEF984000, 0xEF968000, - 0xEF94C000, 0xEF930000, 0xEF914000, - 0xEF8F8000, 0xEF8DC000, 0xEF8C0000, - 0xEF8A4000, 0xEF888000, 0xEF86C000, - 0xEF850000, 0xEF834000, 0xEF818000, - 0xEF7FC000, 0xEF7E0000, 0xEF7C4000, - 0xEF7A8000, 0xEF78C000, 0xEF770000, - 0xEF754000, 0xEF738000, 0xEF71C000, - 0xEF700000, 0xEF6E4000, 0xEF6C8000, - 0xEF6AC000, 0xEF690000, 0xEF674000, - 0xEF658000, 0xEF63C000, 0xEF620000, - 0xEF604000, 0xEF5E8000, 0xEF5CC000, - 0xEF5B0000, 0xEF594000, 0xEF578000, - 0xEF55C000, 0xEF540000, 0xEF524000, - 0xEF508000, 0xEF4EC000, 0xEF4D0000, - 0xEF4B4000, 0xEF498000, 0xEF47C000, - 0xEF460000, 0xEF444000, 0xEF428000, - 0xEF40C000, 0xEF3F0000, 0xEF3D4000, - 0xEF3B8000, 0xEF39C000, 0xEF380000, - 0xEF364000, 0xEF348000, 0xEF32C000, - 0xEF310000, 0xEF2F4000, 0xEF2D8000, - 0xEF2BC000, 0xEF2A0000, 0xEF284000, - 0xEF268000, 0xEF24C000, 0xEF230000, - 0xEF214000, 0xEF1F8000, 0xEF1DC000, - 0xEF1C0000, 0xEF1A4000, 0xEF188000, - 0xEF16C000, 0xEF150000, 0xEF134000, - 0xEF118000, 0xEF0FC000, 0xEF0E0000, - 0xEF0C4000, 0xEF0A8000, 0xEF08C000, - 0xEF070000, 0xEF054000, 0xEF038000, - 0xEF01C000, 0xEF000000, 0xEEFE4000, - 0xEEFC8000, 0xEEFAC000, 0xEEF90000, - 0xEEF74000, 0xEEF58000, 0xEEF3C000, - 0xEEF20000, 0xEEF04000, 0xEEEE8000, - 0xEEECC000, 0xEEEB0000, 0xEEE94000, - 0xEEE78000, 0xEEE5C000, 0xEEE40000, - 0xEEE24000, 0xEEE08000, 0xEEDEC000, - 0xEEDD0000, 0xEEDB4000, 0xEED98000, - 0xEED7C000, 0xEED60000, 0xEED44000, - 0xEED28000, 0xEED0C000, 0xEECF0000, - 0xEECD4000, 0xEECB8000, 0xEEC9C000, - 0xEEC80000, 0xEEC64000, 0xEEC48000, - 0xEEC2C000, 0xEEC10000, 0xEEBF4000, - 0xEEBD8000, 0xEEBBC000, 0xEEBA0000, - 0xEEB84000, 0xEEB68000, 0xEEB4C000, - 0xEEB30000, 0xEEB14000, 0xEEAF8000, - 0xEEADC000, 0xEEAC0000, 0xEEAA4000, - 0xEEA88000, 0xEEA6C000, 0xEEA50000, - 0xEEA34000, 0xEEA18000, 0xEE9FC000, - 0xEE9E0000, 0xEE9C4000, 0xEE9A8000, - 0xEE98C000, 0xEE970000, 0xEE954000, - 0xEE938000, 0xEE91C000, 0xEE900000, - 0xEE8E4000, 0xEE8C8000, 0xEE8AC000, - 0xEE890000, 0xEE874000, 0xEE858000, - 0xEE83C000, 0xEE820000, 0xEE804000, - 0xEE7E8000, 0xEE7CC000, 0xEE7B0000, - 0xEE794000, 0xEE778000, 0xEE75C000, - 0xEE740000, 0xEE724000, 0xEE708000, - 0xEE6EC000, 0xEE6D0000, 0xEE6B4000, - 0xEE698000, 0xEE67C000, 0xEE660000, - 0xEE644000, 0xEE628000, 0xEE60C000, - 0xEE5F0000, 0xEE5D4000, 0xEE5B8000, - 0xEE59C000, 0xEE580000, 0xEE564000, - 0xEE548000, 0xEE52C000, 0xEE510000, - 0xEE4F4000, 0xEE4D8000, 0xEE4BC000, - 0xEE4A0000, 0xEE484000, 0xEE468000, - 0xEE44C000, 0xEE430000, 0xEE414000, - 0xEE3F8000, 0xEE3DC000, 0xEE3C0000, - 0xEE3A4000, 0xEE388000, 0xEE36C000, - 0xEE350000, 0xEE334000, 0xEE318000, - 0xEE2FC000, 0xEE2E0000, 0xEE2C4000, - 0xEE2A8000, 0xEE28C000, 0xEE270000, - 0xEE254000, 0xEE238000, 0xEE21C000, - 0xEE200000, 0xEE1E4000, 0xEE1C8000, - 0xEE1AC000, 0xEE190000, 0xEE174000, - 0xEE158000, 0xEE13C000, 0xEE120000, - 0xEE104000, 0xEE0E8000, 0xEE0CC000, - 0xEE0B0000, 0xEE094000, 0xEE078000, - 0xEE05C000, 0xEE040000, 0xEE024000, - 0xEE008000, 0xEDFEC000, 0xEDFD0000, - 0xEDFB4000, 0xEDF98000, 0xEDF7C000, - 0xEDF60000, 0xEDF44000, 0xEDF28000, - 0xEDF0C000, 0xEDEF0000, 0xEDED4000, - 0xEDEB8000, 0xEDE9C000, 0xEDE80000, - 0xEDE64000, 0xEDE48000, 0xEDE2C000, - 0xEDE10000, 0xEDDF4000, 0xEDDD8000, - 0xEDDBC000, 0xEDDA0000, 0xEDD84000, - 0xEDD68000, 0xEDD4C000, 0xEDD30000, - 0xEDD14000, 0xEDCF8000, 0xEDCDC000, - 0xEDCC0000, 0xEDCA4000, 0xEDC88000, - 0xEDC6C000, 0xEDC50000, 0xEDC34000, - 0xEDC18000, 0xEDBFC000, 0xEDBE0000, - 0xEDBC4000, 0xEDBA8000, 0xEDB8C000, - 0xEDB70000, 0xEDB54000, 0xEDB38000, - 0xEDB1C000, 0xEDB00000, 0xEDAE4000, - 0xEDAC8000, 0xEDAAC000, 0xEDA90000, - 0xEDA74000, 0xEDA58000, 0xEDA3C000, - 0xEDA20000, 0xEDA04000, 0xED9E8000, - 0xED9CC000, 0xED9B0000, 0xED994000, - 0xED978000, 0xED95C000, 0xED940000, - 0xED924000, 0xED908000, 0xED8EC000, - 0xED8D0000, 0xED8B4000, 0xED898000, - 0xED87C000, 0xED860000, 0xED844000, - 0xED828000, 0xED80C000, 0xED7F0000, - 0xED7D4000, 0xED7B8000, 0xED79C000, - 0xED780000, 0xED764000, 0xED748000, - 0xED72C000, 0xED710000, 0xED6F4000, - 0xED6D8000, 0xED6BC000, 0xED6A0000, - 0xED684000, 0xED668000, 0xED64C000, - 0xED630000, 0xED614000, 0xED5F8000, - 0xED5DC000, 0xED5C0000, 0xED5A4000, - 0xED588000, 0xED56C000, 0xED550000, - 0xED534000, 0xED518000, 0xED4FC000, - 0xED4E0000, 0xED4C4000, 0xED4A8000, - 0xED48C000, 0xED470000, 0xED454000, - 0xED438000, 0xED41C000, 0xED400000, - 0xED3E4000, 0xED3C8000, 0xED3AC000, - 0xED390000, 0xED374000, 0xED358000, - 0xED33C000, 0xED320000, 0xED304000, - 0xED2E8000, 0xED2CC000, 0xED2B0000, - 0xED294000, 0xED278000, 0xED25C000, - 0xED240000, 0xED224000, 0xED208000, - 0xED1EC000, 0xED1D0000, 0xED1B4000, - 0xED198000, 0xED17C000, 0xED160000, - 0xED144000, 0xED128000, 0xED10C000, - 0xED0F0000, 0xED0D4000, 0xED0B8000, - 0xED09C000, 0xED080000, 0xED064000, - 0xED048000, 0xED02C000, 0xED010000, - 0xECFF4000, 0xECFD8000, 0xECFBC000, - 0xECFA0000, 0xECF84000, 0xECF68000, - 0xECF4C000, 0xECF30000, 0xECF14000, - 0xECEF8000, 0xECEDC000, 0xECEC0000, - 0xECEA4000, 0xECE88000, 0xECE6C000, - 0xECE50000, 0xECE34000, 0xECE18000, - 0xECDFC000, 0xECDE0000, 0xECDC4000, - 0xECDA8000, 0xECD8C000, 0xECD70000, - 0xECD54000, 0xECD38000, 0xECD1C000, - 0xECD00000, 0xECCE4000, 0xECCC8000, - 0xECCAC000, 0xECC90000, 0xECC74000, - 0xECC58000, 0xECC3C000, 0xECC20000, - 0xECC04000, 0xECBE8000, 0xECBCC000, - 0xECBB0000, 0xECB94000, 0xECB78000, - 0xECB5C000, 0xECB40000, 0xECB24000, - 0xECB08000, 0xECAEC000, 0xECAD0000, - 0xECAB4000, 0xECA98000, 0xECA7C000, - 0xECA60000, 0xECA44000, 0xECA28000, - 0xECA0C000, 0xEC9F0000, 0xEC9D4000, - 0xEC9B8000, 0xEC99C000, 0xEC980000, - 0xEC964000, 0xEC948000, 0xEC92C000, - 0xEC910000, 0xEC8F4000, 0xEC8D8000, - 0xEC8BC000, 0xEC8A0000, 0xEC884000, - 0xEC868000, 0xEC84C000, 0xEC830000, - 0xEC814000, 0xEC7F8000, 0xEC7DC000, - 0xEC7C0000, 0xEC7A4000, 0xEC788000, - 0xEC76C000, 0xEC750000, 0xEC734000, - 0xEC718000, 0xEC6FC000, 0xEC6E0000, - 0xEC6C4000, 0xEC6A8000, 0xEC68C000, - 0xEC670000, 0xEC654000, 0xEC638000, - 0xEC61C000, 0xEC600000, 0xEC5E4000, - 0xEC5C8000, 0xEC5AC000, 0xEC590000, - 0xEC574000, 0xEC558000, 0xEC53C000, - 0xEC520000, 0xEC504000, 0xEC4E8000, - 0xEC4CC000, 0xEC4B0000, 0xEC494000, - 0xEC478000, 0xEC45C000, 0xEC440000, - 0xEC424000, 0xEC408000, 0xEC3EC000, - 0xEC3D0000, 0xEC3B4000, 0xEC398000, - 0xEC37C000, 0xEC360000, 0xEC344000, - 0xEC328000, 0xEC30C000, 0xEC2F0000, - 0xEC2D4000, 0xEC2B8000, 0xEC29C000, - 0xEC280000, 0xEC264000, 0xEC248000, - 0xEC22C000, 0xEC210000, 0xEC1F4000, - 0xEC1D8000, 0xEC1BC000, 0xEC1A0000, - 0xEC184000, 0xEC168000, 0xEC14C000, - 0xEC130000, 0xEC114000, 0xEC0F8000, - 0xEC0DC000, 0xEC0C0000, 0xEC0A4000, - 0xEC088000, 0xEC06C000, 0xEC050000, - 0xEC034000, 0xEC018000, 0xEBFFC000, - 0xEBFE0000, 0xEBFC4000, 0xEBFA8000, - 0xEBF8C000, 0xEBF70000, 0xEBF54000, - 0xEBF38000, 0xEBF1C000, 0xEBF00000, - 0xEBEE4000, 0xEBEC8000, 0xEBEAC000, - 0xEBE90000, 0xEBE74000, 0xEBE58000, - 0xEBE3C000, 0xEBE20000, 0xEBE04000, - 0xEBDE8000, 0xEBDCC000, 0xEBDB0000, - 0xEBD94000, 0xEBD78000, 0xEBD5C000, - 0xEBD40000, 0xEBD24000, 0xEBD08000, - 0xEBCEC000, 0xEBCD0000, 0xEBCB4000, - 0xEBC98000, 0xEBC7C000, 0xEBC60000, - 0xEBC44000, 0xEBC28000, 0xEBC0C000, - 0xEBBF0000, 0xEBBD4000, 0xEBBB8000, - 0xEBB9C000, 0xEBB80000, 0xEBB64000, - 0xEBB48000, 0xEBB2C000, 0xEBB10000, - 0xEBAF4000, 0xEBAD8000, 0xEBABC000, - 0xEBAA0000, 0xEBA84000, 0xEBA68000, - 0xEBA4C000, 0xEBA30000, 0xEBA14000, - 0xEB9F8000, 0xEB9DC000, 0xEB9C0000, - 0xEB9A4000, 0xEB988000, 0xEB96C000, - 0xEB950000, 0xEB934000, 0xEB918000, - 0xEB8FC000, 0xEB8E0000, 0xEB8C4000, - 0xEB8A8000, 0xEB88C000, 0xEB870000, - 0xEB854000, 0xEB838000, 0xEB81C000, - 0xEB800000, 0xEB7E4000, 0xEB7C8000, - 0xEB7AC000, 0xEB790000, 0xEB774000, - 0xEB758000, 0xEB73C000, 0xEB720000, - 0xEB704000, 0xEB6E8000, 0xEB6CC000, - 0xEB6B0000, 0xEB694000, 0xEB678000, - 0xEB65C000, 0xEB640000, 0xEB624000, - 0xEB608000, 0xEB5EC000, 0xEB5D0000, - 0xEB5B4000, 0xEB598000, 0xEB57C000, - 0xEB560000, 0xEB544000, 0xEB528000, - 0xEB50C000, 0xEB4F0000, 0xEB4D4000, - 0xEB4B8000, 0xEB49C000, 0xEB480000, - 0xEB464000, 0xEB448000, 0xEB42C000, - 0xEB410000, 0xEB3F4000, 0xEB3D8000, - 0xEB3BC000, 0xEB3A0000, 0xEB384000, - 0xEB368000, 0xEB34C000, 0xEB330000, - 0xEB314000, 0xEB2F8000, 0xEB2DC000, - 0xEB2C0000, 0xEB2A4000, 0xEB288000, - 0xEB26C000, 0xEB250000, 0xEB234000, - 0xEB218000, 0xEB1FC000, 0xEB1E0000, - 0xEB1C4000, 0xEB1A8000, 0xEB18C000, - 0xEB170000, 0xEB154000, 0xEB138000, - 0xEB11C000, 0xEB100000, 0xEB0E4000, - 0xEB0C8000, 0xEB0AC000, 0xEB090000, - 0xEB074000, 0xEB058000, 0xEB03C000, - 0xEB020000, 0xEB004000, 0xEAFE8000, - 0xEAFCC000, 0xEAFB0000, 0xEAF94000, - 0xEAF78000, 0xEAF5C000, 0xEAF40000, - 0xEAF24000, 0xEAF08000, 0xEAEEC000, - 0xEAED0000, 0xEAEB4000, 0xEAE98000, - 0xEAE7C000, 0xEAE60000, 0xEAE44000, - 0xEAE28000, 0xEAE0C000, 0xEADF0000, - 0xEADD4000, 0xEADB8000, 0xEAD9C000, - 0xEAD80000, 0xEAD64000, 0xEAD48000, - 0xEAD2C000, 0xEAD10000, 0xEACF4000, - 0xEACD8000, 0xEACBC000, 0xEACA0000, - 0xEAC84000, 0xEAC68000, 0xEAC4C000, - 0xEAC30000, 0xEAC14000, 0xEABF8000, - 0xEABDC000, 0xEABC0000, 0xEABA4000, - 0xEAB88000, 0xEAB6C000, 0xEAB50000, - 0xEAB34000, 0xEAB18000, 0xEAAFC000, - 0xEAAE0000, 0xEAAC4000, 0xEAAA8000, - 0xEAA8C000, 0xEAA70000, 0xEAA54000, - 0xEAA38000, 0xEAA1C000, 0xEAA00000, - 0xEA9E4000, 0xEA9C8000, 0xEA9AC000, - 0xEA990000, 0xEA974000, 0xEA958000, - 0xEA93C000, 0xEA920000, 0xEA904000, - 0xEA8E8000, 0xEA8CC000, 0xEA8B0000, - 0xEA894000, 0xEA878000, 0xEA85C000, - 0xEA840000, 0xEA824000, 0xEA808000, - 0xEA7EC000, 0xEA7D0000, 0xEA7B4000, - 0xEA798000, 0xEA77C000, 0xEA760000, - 0xEA744000, 0xEA728000, 0xEA70C000, - 0xEA6F0000, 0xEA6D4000, 0xEA6B8000, - 0xEA69C000, 0xEA680000, 0xEA664000, - 0xEA648000, 0xEA62C000, 0xEA610000, - 0xEA5F4000, 0xEA5D8000, 0xEA5BC000, - 0xEA5A0000, 0xEA584000, 0xEA568000, - 0xEA54C000, 0xEA530000, 0xEA514000, - 0xEA4F8000, 0xEA4DC000, 0xEA4C0000, - 0xEA4A4000, 0xEA488000, 0xEA46C000, - 0xEA450000, 0xEA434000, 0xEA418000, - 0xEA3FC000, 0xEA3E0000, 0xEA3C4000, - 0xEA3A8000, 0xEA38C000, 0xEA370000, - 0xEA354000, 0xEA338000, 0xEA31C000, - 0xEA300000, 0xEA2E4000, 0xEA2C8000, - 0xEA2AC000, 0xEA290000, 0xEA274000, - 0xEA258000, 0xEA23C000, 0xEA220000, - 0xEA204000, 0xEA1E8000, 0xEA1CC000, - 0xEA1B0000, 0xEA194000, 0xEA178000, - 0xEA15C000, 0xEA140000, 0xEA124000, - 0xEA108000, 0xEA0EC000, 0xEA0D0000, - 0xEA0B4000, 0xEA098000, 0xEA07C000, - 0xEA060000, 0xEA044000, 0xEA028000, - 0xEA00C000, 0xE9FF0000, 0xE9FD4000, - 0xE9FB8000, 0xE9F9C000, 0xE9F80000, - 0xE9F64000, 0xE9F48000, 0xE9F2C000, - 0xE9F10000, 0xE9EF4000, 0xE9ED8000, - 0xE9EBC000, 0xE9EA0000, 0xE9E84000, - 0xE9E68000, 0xE9E4C000, 0xE9E30000, - 0xE9E14000, 0xE9DF8000, 0xE9DDC000, - 0xE9DC0000, 0xE9DA4000, 0xE9D88000, - 0xE9D6C000, 0xE9D50000, 0xE9D34000, - 0xE9D18000, 0xE9CFC000, 0xE9CE0000, - 0xE9CC4000, 0xE9CA8000, 0xE9C8C000, - 0xE9C70000, 0xE9C54000, 0xE9C38000, - 0xE9C1C000, 0xE9C00000, 0xE9BE4000, - 0xE9BC8000, 0xE9BAC000, 0xE9B90000, - 0xE9B74000, 0xE9B58000, 0xE9B3C000, - 0xE9B20000, 0xE9B04000, 0xE9AE8000, - 0xE9ACC000, 0xE9AB0000, 0xE9A94000, - 0xE9A78000, 0xE9A5C000, 0xE9A40000, - 0xE9A24000, 0xE9A08000, 0xE99EC000, - 0xE99D0000, 0xE99B4000, 0xE9998000, - 0xE997C000, 0xE9960000, 0xE9944000, - 0xE9928000, 0xE990C000, 0xE98F0000, - 0xE98D4000, 0xE98B8000, 0xE989C000, - 0xE9880000, 0xE9864000, 0xE9848000, - 0xE982C000, 0xE9810000, 0xE97F4000, - 0xE97D8000, 0xE97BC000, 0xE97A0000, - 0xE9784000, 0xE9768000, 0xE974C000, - 0xE9730000, 0xE9714000, 0xE96F8000, - 0xE96DC000, 0xE96C0000, 0xE96A4000, - 0xE9688000, 0xE966C000, 0xE9650000, - 0xE9634000, 0xE9618000, 0xE95FC000, - 0xE95E0000, 0xE95C4000, 0xE95A8000, - 0xE958C000, 0xE9570000, 0xE9554000, - 0xE9538000, 0xE951C000, 0xE9500000, - 0xE94E4000, 0xE94C8000, 0xE94AC000, - 0xE9490000, 0xE9474000, 0xE9458000, - 0xE943C000, 0xE9420000, 0xE9404000, - 0xE93E8000, 0xE93CC000, 0xE93B0000, - 0xE9394000, 0xE9378000, 0xE935C000, - 0xE9340000, 0xE9324000, 0xE9308000, - 0xE92EC000, 0xE92D0000, 0xE92B4000, - 0xE9298000, 0xE927C000, 0xE9260000, - 0xE9244000, 0xE9228000, 0xE920C000, - 0xE91F0000, 0xE91D4000, 0xE91B8000, - 0xE919C000, 0xE9180000, 0xE9164000, - 0xE9148000, 0xE912C000, 0xE9110000, - 0xE90F4000, 0xE90D8000, 0xE90BC000, - 0xE90A0000, 0xE9084000, 0xE9068000, - 0xE904C000, 0xE9030000, 0xE9014000, - 0xE8FF8000, 0xE8FDC000, 0xE8FC0000, - 0xE8FA4000, 0xE8F88000, 0xE8F6C000, - 0xE8F50000, 0xE8F34000, 0xE8F18000, - 0xE8EFC000, 0xE8EE0000, 0xE8EC4000, - 0xE8EA8000, 0xE8E8C000, 0xE8E70000, - 0xE8E54000, 0xE8E38000, 0xE8E1C000, - 0xE8E00000, 0xE8DE4000, 0xE8DC8000, - 0xE8DAC000, 0xE8D90000, 0xE8D74000, - 0xE8D58000, 0xE8D3C000, 0xE8D20000, - 0xE8D04000, 0xE8CE8000, 0xE8CCC000, - 0xE8CB0000, 0xE8C94000, 0xE8C78000, - 0xE8C5C000, 0xE8C40000, 0xE8C24000, - 0xE8C08000, 0xE8BEC000, 0xE8BD0000, - 0xE8BB4000, 0xE8B98000, 0xE8B7C000, - 0xE8B60000, 0xE8B44000, 0xE8B28000, - 0xE8B0C000, 0xE8AF0000, 0xE8AD4000, - 0xE8AB8000, 0xE8A9C000, 0xE8A80000, - 0xE8A64000, 0xE8A48000, 0xE8A2C000, - 0xE8A10000, 0xE89F4000, 0xE89D8000, - 0xE89BC000, 0xE89A0000, 0xE8984000, - 0xE8968000, 0xE894C000, 0xE8930000, - 0xE8914000, 0xE88F8000, 0xE88DC000, - 0xE88C0000, 0xE88A4000, 0xE8888000, - 0xE886C000, 0xE8850000, 0xE8834000, - 0xE8818000, 0xE87FC000, 0xE87E0000, - 0xE87C4000, 0xE87A8000, 0xE878C000, - 0xE8770000, 0xE8754000, 0xE8738000, - 0xE871C000, 0xE8700000, 0xE86E4000, - 0xE86C8000, 0xE86AC000, 0xE8690000, - 0xE8674000, 0xE8658000, 0xE863C000, - 0xE8620000, 0xE8604000, 0xE85E8000, - 0xE85CC000, 0xE85B0000, 0xE8594000, - 0xE8578000, 0xE855C000, 0xE8540000, - 0xE8524000, 0xE8508000, 0xE84EC000, - 0xE84D0000, 0xE84B4000, 0xE8498000, - 0xE847C000, 0xE8460000, 0xE8444000, - 0xE8428000, 0xE840C000, 0xE83F0000, - 0xE83D4000, 0xE83B8000, 0xE839C000, - 0xE8380000, 0xE8364000, 0xE8348000, - 0xE832C000, 0xE8310000, 0xE82F4000, - 0xE82D8000, 0xE82BC000, 0xE82A0000, - 0xE8284000, 0xE8268000, 0xE824C000, - 0xE8230000, 0xE8214000, 0xE81F8000, - 0xE81DC000, 0xE81C0000, 0xE81A4000, - 0xE8188000, 0xE816C000, 0xE8150000, - 0xE8134000, 0xE8118000, 0xE80FC000, - 0xE80E0000, 0xE80C4000, 0xE80A8000, - 0xE808C000, 0xE8070000, 0xE8054000, - 0xE8038000, 0xE801C000, 0xE8000000, - 0xE7FE4000, 0xE7FC8000, 0xE7FAC000, - 0xE7F90000, 0xE7F74000, 0xE7F58000, - 0xE7F3C000, 0xE7F20000, 0xE7F04000, - 0xE7EE8000, 0xE7ECC000, 0xE7EB0000, - 0xE7E94000, 0xE7E78000, 0xE7E5C000, - 0xE7E40000, 0xE7E24000, 0xE7E08000, - 0xE7DEC000, 0xE7DD0000, 0xE7DB4000, - 0xE7D98000, 0xE7D7C000, 0xE7D60000, - 0xE7D44000, 0xE7D28000, 0xE7D0C000, - 0xE7CF0000, 0xE7CD4000, 0xE7CB8000, - 0xE7C9C000, 0xE7C80000, 0xE7C64000, - 0xE7C48000, 0xE7C2C000, 0xE7C10000, - 0xE7BF4000, 0xE7BD8000, 0xE7BBC000, - 0xE7BA0000, 0xE7B84000, 0xE7B68000, - 0xE7B4C000, 0xE7B30000, 0xE7B14000, - 0xE7AF8000, 0xE7ADC000, 0xE7AC0000, - 0xE7AA4000, 0xE7A88000, 0xE7A6C000, - 0xE7A50000, 0xE7A34000, 0xE7A18000, - 0xE79FC000, 0xE79E0000, 0xE79C4000, - 0xE79A8000, 0xE798C000, 0xE7970000, - 0xE7954000, 0xE7938000, 0xE791C000, - 0xE7900000, 0xE78E4000, 0xE78C8000, - 0xE78AC000, 0xE7890000, 0xE7874000, - 0xE7858000, 0xE783C000, 0xE7820000, - 0xE7804000, 0xE77E8000, 0xE77CC000, - 0xE77B0000, 0xE7794000, 0xE7778000, - 0xE775C000, 0xE7740000, 0xE7724000, - 0xE7708000, 0xE76EC000, 0xE76D0000, - 0xE76B4000, 0xE7698000, 0xE767C000, - 0xE7660000, 0xE7644000, 0xE7628000, - 0xE760C000, 0xE75F0000, 0xE75D4000, - 0xE75B8000, 0xE759C000, 0xE7580000, - 0xE7564000, 0xE7548000, 0xE752C000, - 0xE7510000, 0xE74F4000, 0xE74D8000, - 0xE74BC000, 0xE74A0000, 0xE7484000, - 0xE7468000, 0xE744C000, 0xE7430000, - 0xE7414000, 0xE73F8000, 0xE73DC000, - 0xE73C0000, 0xE73A4000, 0xE7388000, - 0xE736C000, 0xE7350000, 0xE7334000, - 0xE7318000, 0xE72FC000, 0xE72E0000, - 0xE72C4000, 0xE72A8000, 0xE728C000, - 0xE7270000, 0xE7254000, 0xE7238000, - 0xE721C000, 0xE7200000, 0xE71E4000, - 0xE71C8000, 0xE71AC000, 0xE7190000, - 0xE7174000, 0xE7158000, 0xE713C000, - 0xE7120000, 0xE7104000, 0xE70E8000, - 0xE70CC000, 0xE70B0000, 0xE7094000, - 0xE7078000, 0xE705C000, 0xE7040000, - 0xE7024000, 0xE7008000, 0xE6FEC000, - 0xE6FD0000, 0xE6FB4000, 0xE6F98000, - 0xE6F7C000, 0xE6F60000, 0xE6F44000, - 0xE6F28000, 0xE6F0C000, 0xE6EF0000, - 0xE6ED4000, 0xE6EB8000, 0xE6E9C000, - 0xE6E80000, 0xE6E64000, 0xE6E48000, - 0xE6E2C000, 0xE6E10000, 0xE6DF4000, - 0xE6DD8000, 0xE6DBC000, 0xE6DA0000, - 0xE6D84000, 0xE6D68000, 0xE6D4C000, - 0xE6D30000, 0xE6D14000, 0xE6CF8000, - 0xE6CDC000, 0xE6CC0000, 0xE6CA4000, - 0xE6C88000, 0xE6C6C000, 0xE6C50000, - 0xE6C34000, 0xE6C18000, 0xE6BFC000, - 0xE6BE0000, 0xE6BC4000, 0xE6BA8000, - 0xE6B8C000, 0xE6B70000, 0xE6B54000, - 0xE6B38000, 0xE6B1C000, 0xE6B00000, - 0xE6AE4000, 0xE6AC8000, 0xE6AAC000, - 0xE6A90000, 0xE6A74000, 0xE6A58000, - 0xE6A3C000, 0xE6A20000, 0xE6A04000, - 0xE69E8000, 0xE69CC000, 0xE69B0000, - 0xE6994000, 0xE6978000, 0xE695C000, - 0xE6940000, 0xE6924000, 0xE6908000, - 0xE68EC000, 0xE68D0000, 0xE68B4000, - 0xE6898000, 0xE687C000, 0xE6860000, - 0xE6844000, 0xE6828000, 0xE680C000, - 0xE67F0000, 0xE67D4000, 0xE67B8000, - 0xE679C000, 0xE6780000, 0xE6764000, - 0xE6748000, 0xE672C000, 0xE6710000, - 0xE66F4000, 0xE66D8000, 0xE66BC000, - 0xE66A0000, 0xE6684000, 0xE6668000, - 0xE664C000, 0xE6630000, 0xE6614000, - 0xE65F8000, 0xE65DC000, 0xE65C0000, - 0xE65A4000, 0xE6588000, 0xE656C000, - 0xE6550000, 0xE6534000, 0xE6518000, - 0xE64FC000, 0xE64E0000, 0xE64C4000, - 0xE64A8000, 0xE648C000, 0xE6470000, - 0xE6454000, 0xE6438000, 0xE641C000, - 0xE6400000, 0xE63E4000, 0xE63C8000, - 0xE63AC000, 0xE6390000, 0xE6374000, - 0xE6358000, 0xE633C000, 0xE6320000, - 0xE6304000, 0xE62E8000, 0xE62CC000, - 0xE62B0000, 0xE6294000, 0xE6278000, - 0xE625C000, 0xE6240000, 0xE6224000, - 0xE6208000, 0xE61EC000, 0xE61D0000, - 0xE61B4000, 0xE6198000, 0xE617C000, - 0xE6160000, 0xE6144000, 0xE6128000, - 0xE610C000, 0xE60F0000, 0xE60D4000, - 0xE60B8000, 0xE609C000, 0xE6080000, - 0xE6064000, 0xE6048000, 0xE602C000, - 0xE6010000, 0xE5FF4000, 0xE5FD8000, - 0xE5FBC000, 0xE5FA0000, 0xE5F84000, - 0xE5F68000, 0xE5F4C000, 0xE5F30000, - 0xE5F14000, 0xE5EF8000, 0xE5EDC000, - 0xE5EC0000, 0xE5EA4000, 0xE5E88000, - 0xE5E6C000, 0xE5E50000, 0xE5E34000, - 0xE5E18000, 0xE5DFC000, 0xE5DE0000, - 0xE5DC4000, 0xE5DA8000, 0xE5D8C000, - 0xE5D70000, 0xE5D54000, 0xE5D38000, - 0xE5D1C000, 0xE5D00000, 0xE5CE4000, - 0xE5CC8000, 0xE5CAC000, 0xE5C90000, - 0xE5C74000, 0xE5C58000, 0xE5C3C000, - 0xE5C20000, 0xE5C04000, 0xE5BE8000, - 0xE5BCC000, 0xE5BB0000, 0xE5B94000, - 0xE5B78000, 0xE5B5C000, 0xE5B40000, - 0xE5B24000, 0xE5B08000, 0xE5AEC000, - 0xE5AD0000, 0xE5AB4000, 0xE5A98000, - 0xE5A7C000, 0xE5A60000, 0xE5A44000, - 0xE5A28000, 0xE5A0C000, 0xE59F0000, - 0xE59D4000, 0xE59B8000, 0xE599C000, - 0xE5980000, 0xE5964000, 0xE5948000, - 0xE592C000, 0xE5910000, 0xE58F4000, - 0xE58D8000, 0xE58BC000, 0xE58A0000, - 0xE5884000, 0xE5868000, 0xE584C000, - 0xE5830000, 0xE5814000, 0xE57F8000, - 0xE57DC000, 0xE57C0000, 0xE57A4000, - 0xE5788000, 0xE576C000, 0xE5750000, - 0xE5734000, 0xE5718000, 0xE56FC000, - 0xE56E0000, 0xE56C4000, 0xE56A8000, - 0xE568C000, 0xE5670000, 0xE5654000, - 0xE5638000, 0xE561C000, 0xE5600000, - 0xE55E4000, 0xE55C8000, 0xE55AC000, - 0xE5590000, 0xE5574000, 0xE5558000, - 0xE553C000, 0xE5520000, 0xE5504000, - 0xE54E8000, 0xE54CC000, 0xE54B0000, - 0xE5494000, 0xE5478000, 0xE545C000, - 0xE5440000, 0xE5424000, 0xE5408000, - 0xE53EC000, 0xE53D0000, 0xE53B4000, - 0xE5398000, 0xE537C000, 0xE5360000, - 0xE5344000, 0xE5328000, 0xE530C000, - 0xE52F0000, 0xE52D4000, 0xE52B8000, - 0xE529C000, 0xE5280000, 0xE5264000, - 0xE5248000, 0xE522C000, 0xE5210000, - 0xE51F4000, 0xE51D8000, 0xE51BC000, - 0xE51A0000, 0xE5184000, 0xE5168000, - 0xE514C000, 0xE5130000, 0xE5114000, - 0xE50F8000, 0xE50DC000, 0xE50C0000, - 0xE50A4000, 0xE5088000, 0xE506C000, - 0xE5050000, 0xE5034000, 0xE5018000, - 0xE4FFC000, 0xE4FE0000, 0xE4FC4000, - 0xE4FA8000, 0xE4F8C000, 0xE4F70000, - 0xE4F54000, 0xE4F38000, 0xE4F1C000, - 0xE4F00000, 0xE4EE4000, 0xE4EC8000, - 0xE4EAC000, 0xE4E90000, 0xE4E74000, - 0xE4E58000, 0xE4E3C000, 0xE4E20000, - 0xE4E04000, 0xE4DE8000, 0xE4DCC000, - 0xE4DB0000, 0xE4D94000, 0xE4D78000, - 0xE4D5C000, 0xE4D40000, 0xE4D24000, - 0xE4D08000, 0xE4CEC000, 0xE4CD0000, - 0xE4CB4000, 0xE4C98000, 0xE4C7C000, - 0xE4C60000, 0xE4C44000, 0xE4C28000, - 0xE4C0C000, 0xE4BF0000, 0xE4BD4000, - 0xE4BB8000, 0xE4B9C000, 0xE4B80000, - 0xE4B64000, 0xE4B48000, 0xE4B2C000, - 0xE4B10000, 0xE4AF4000, 0xE4AD8000, - 0xE4ABC000, 0xE4AA0000, 0xE4A84000, - 0xE4A68000, 0xE4A4C000, 0xE4A30000, - 0xE4A14000, 0xE49F8000, 0xE49DC000, - 0xE49C0000, 0xE49A4000, 0xE4988000, - 0xE496C000, 0xE4950000, 0xE4934000, - 0xE4918000, 0xE48FC000, 0xE48E0000, - 0xE48C4000, 0xE48A8000, 0xE488C000, - 0xE4870000, 0xE4854000, 0xE4838000, - 0xE481C000, 0xE4800000, 0xE47E4000, - 0xE47C8000, 0xE47AC000, 0xE4790000, - 0xE4774000, 0xE4758000, 0xE473C000, - 0xE4720000, 0xE4704000, 0xE46E8000, - 0xE46CC000, 0xE46B0000, 0xE4694000, - 0xE4678000, 0xE465C000, 0xE4640000, - 0xE4624000, 0xE4608000, 0xE45EC000, - 0xE45D0000, 0xE45B4000, 0xE4598000, - 0xE457C000, 0xE4560000, 0xE4544000, - 0xE4528000, 0xE450C000, 0xE44F0000, - 0xE44D4000, 0xE44B8000, 0xE449C000, - 0xE4480000, 0xE4464000, 0xE4448000, - 0xE442C000, 0xE4410000, 0xE43F4000, - 0xE43D8000, 0xE43BC000, 0xE43A0000, - 0xE4384000, 0xE4368000, 0xE434C000, - 0xE4330000, 0xE4314000, 0xE42F8000, - 0xE42DC000, 0xE42C0000, 0xE42A4000, - 0xE4288000, 0xE426C000, 0xE4250000, - 0xE4234000, 0xE4218000, 0xE41FC000, - 0xE41E0000, 0xE41C4000, 0xE41A8000, - 0xE418C000, 0xE4170000, 0xE4154000, - 0xE4138000, 0xE411C000, 0xE4100000, - 0xE40E4000, 0xE40C8000, 0xE40AC000, - 0xE4090000, 0xE4074000, 0xE4058000, - 0xE403C000, 0xE4020000, 0xE4004000, - 0xE3FE8000, 0xE3FCC000, 0xE3FB0000, - 0xE3F94000, 0xE3F78000, 0xE3F5C000, - 0xE3F40000, 0xE3F24000, 0xE3F08000, - 0xE3EEC000, 0xE3ED0000, 0xE3EB4000, - 0xE3E98000, 0xE3E7C000, 0xE3E60000, - 0xE3E44000, 0xE3E28000, 0xE3E0C000, - 0xE3DF0000, 0xE3DD4000, 0xE3DB8000, - 0xE3D9C000, 0xE3D80000, 0xE3D64000, - 0xE3D48000, 0xE3D2C000, 0xE3D10000, - 0xE3CF4000, 0xE3CD8000, 0xE3CBC000, - 0xE3CA0000, 0xE3C84000, 0xE3C68000, - 0xE3C4C000, 0xE3C30000, 0xE3C14000, - 0xE3BF8000, 0xE3BDC000, 0xE3BC0000, - 0xE3BA4000, 0xE3B88000, 0xE3B6C000, - 0xE3B50000, 0xE3B34000, 0xE3B18000, - 0xE3AFC000, 0xE3AE0000, 0xE3AC4000, - 0xE3AA8000, 0xE3A8C000, 0xE3A70000, - 0xE3A54000, 0xE3A38000, 0xE3A1C000, - 0xE3A00000, 0xE39E4000, 0xE39C8000, - 0xE39AC000, 0xE3990000, 0xE3974000, - 0xE3958000, 0xE393C000, 0xE3920000, - 0xE3904000, 0xE38E8000, 0xE38CC000, - 0xE38B0000, 0xE3894000, 0xE3878000, - 0xE385C000, 0xE3840000, 0xE3824000, - 0xE3808000, 0xE37EC000, 0xE37D0000, - 0xE37B4000, 0xE3798000, 0xE377C000, - 0xE3760000, 0xE3744000, 0xE3728000, - 0xE370C000, 0xE36F0000, 0xE36D4000, - 0xE36B8000, 0xE369C000, 0xE3680000, - 0xE3664000, 0xE3648000, 0xE362C000, - 0xE3610000, 0xE35F4000, 0xE35D8000, - 0xE35BC000, 0xE35A0000, 0xE3584000, - 0xE3568000, 0xE354C000, 0xE3530000, - 0xE3514000, 0xE34F8000, 0xE34DC000, - 0xE34C0000, 0xE34A4000, 0xE3488000, - 0xE346C000, 0xE3450000, 0xE3434000, - 0xE3418000, 0xE33FC000, 0xE33E0000, - 0xE33C4000, 0xE33A8000, 0xE338C000, - 0xE3370000, 0xE3354000, 0xE3338000, - 0xE331C000, 0xE3300000, 0xE32E4000, - 0xE32C8000, 0xE32AC000, 0xE3290000, - 0xE3274000, 0xE3258000, 0xE323C000, - 0xE3220000, 0xE3204000, 0xE31E8000, - 0xE31CC000, 0xE31B0000, 0xE3194000, - 0xE3178000, 0xE315C000, 0xE3140000, - 0xE3124000, 0xE3108000, 0xE30EC000, - 0xE30D0000, 0xE30B4000, 0xE3098000, - 0xE307C000, 0xE3060000, 0xE3044000, - 0xE3028000, 0xE300C000, 0xE2FF0000, - 0xE2FD4000, 0xE2FB8000, 0xE2F9C000, - 0xE2F80000, 0xE2F64000, 0xE2F48000, - 0xE2F2C000, 0xE2F10000, 0xE2EF4000, - 0xE2ED8000, 0xE2EBC000, 0xE2EA0000, - 0xE2E84000, 0xE2E68000, 0xE2E4C000, - 0xE2E30000, 0xE2E14000, 0xE2DF8000, - 0xE2DDC000, 0xE2DC0000, 0xE2DA4000, - 0xE2D88000, 0xE2D6C000, 0xE2D50000, - 0xE2D34000, 0xE2D18000, 0xE2CFC000, - 0xE2CE0000, 0xE2CC4000, 0xE2CA8000, - 0xE2C8C000, 0xE2C70000, 0xE2C54000, - 0xE2C38000, 0xE2C1C000, 0xE2C00000, - 0xE2BE4000, 0xE2BC8000, 0xE2BAC000, - 0xE2B90000, 0xE2B74000, 0xE2B58000, - 0xE2B3C000, 0xE2B20000, 0xE2B04000, - 0xE2AE8000, 0xE2ACC000, 0xE2AB0000, - 0xE2A94000, 0xE2A78000, 0xE2A5C000, - 0xE2A80000, 0xE2A66400, 0xE2A4C800, - 0xE2A32C00, 0xE2A19000, 0xE29FF400, - 0xE29E5800, 0xE29CBC00, 0xE29B2000, - 0xE2998400, 0xE297E800, 0xE2964C00, - 0xE294B000, 0xE2931400, 0xE2917800, - 0xE28FDC00, 0xE28E4000, 0xE28CA400, - 0xE28B0800, 0xE2896C00, 0xE287D000, - 0xE2863400, 0xE2849800, 0xE282FC00, - 0xE2816000, 0xE27FC400, 0xE27E2800, - 0xE27C8C00, 0xE27AF000, 0xE2795400, - 0xE277B800, 0xE2761C00, 0xE2748000, - 0xE272E400, 0xE2714800, 0xE26FAC00, - 0xE26E1000, 0xE26C7400, 0xE26AD800, - 0xE2693C00, 0xE267A000, 0xE2660400, - 0xE2646800, 0xE262CC00, 0xE2613000, - 0xE25F9400, 0xE25DF800, 0xE25C5C00, - 0xE25AC000, 0xE2592400, 0xE2578800, - 0xE255EC00, 0xE2545000, 0xE252B400, - 0xE2511800, 0xE24F7C00, 0xE24DE000, - 0xE24C4400, 0xE24AA800, 0xE2490C00, - 0xE2477000, 0xE245D400, 0xE2443800, - 0xE2429C00, 0xE2410000, 0xE23F6400, - 0xE23DC800, 0xE23C2C00, 0xE23A9000, - 0xE238F400, 0xE2375800, 0xE235BC00, - 0xE2342000, 0xE2328400, 0xE230E800, - 0xE22F4C00, 0xE22DB000, 0xE22C1400, - 0xE22A7800, 0xE228DC00, 0xE2274000, - 0xE225A400, 0xE2240800, 0xE2226C00, - 0xE220D000, 0xE21F3400, 0xE21D9800, - 0xE21BFC00, 0xE21A6000, 0xE218C400, - 0xE2172800, 0xE2158C00, 0xE213F000, - 0xE2125400, 0xE210B800, 0xE20F1C00, - 0xE20D8000, 0xE20BE400, 0xE20A4800, - 0xE208AC00, 0xE2071000, 0xE2057400, - 0xE203D800, 0xE2023C00, 0xE200A000, - 0xE1FF0400, 0xE1FD6800, 0xE1FBCC00, - 0xE1FA3000, 0xE1F89400, 0xE1F6F800, - 0xE1F55C00, 0xE1F3C000, 0xE1F22400, - 0xE1F08800, 0xE1EEEC00, 0xE1ED5000, - 0xE1EBB400, 0xE1EA1800, 0xE1E87C00, - 0xE1E6E000, 0xE1E54400, 0xE1E3A800, - 0xE1E20C00, 0xE1E07000, 0xE1DED400, - 0xE1DD3800, 0xE1DB9C00, 0xE1DA0000, - 0xE1D86400, 0xE1D6C800, 0xE1D52C00, - 0xE1D39000, 0xE1D1F400, 0xE1D05800, - 0xE1CEBC00, 0xE1CD2000, 0xE1CB8400, - 0xE1C9E800, 0xE1C84C00, 0xE1C6B000, - 0xE1C51400, 0xE1C37800, 0xE1C1DC00, - 0xE1C04000, 0xE1BEA400, 0xE1BD0800, - 0xE1BB6C00, 0xE1B9D000, 0xE1B83400, - 0xE1B69800, 0xE1B4FC00, 0xE1B36000, - 0xE1B1C400, 0xE1B02800, 0xE1AE8C00, - 0xE1ACF000, 0xE1AB5400, 0xE1A9B800, - 0xE1A81C00, 0xE1A68000, 0xE1A4E400, - 0xE1A34800, 0xE1A1AC00, 0xE1A01000, - 0xE19E7400, 0xE19CD800, 0xE19B3C00, - 0xE199A000, 0xE1980400, 0xE1966800, - 0xE194CC00, 0xE1933000, 0xE1919400, - 0xE18FF800, 0xE18E5C00, 0xE18CC000, - 0xE18B2400, 0xE1898800, 0xE187EC00, - 0xE1865000, 0xE184B400, 0xE1831800, - 0xE1817C00, 0xE17FE000, 0xE17E4400, - 0xE17CA800, 0xE17B0C00, 0xE1797000, - 0xE177D400, 0xE1763800, 0xE1749C00, - 0xE1730000, 0xE1716400, 0xE16FC800, - 0xE16E2C00, 0xE16C9000, 0xE16AF400, - 0xE1695800, 0xE167BC00, 0xE1662000, - 0xE1648400, 0xE162E800, 0xE1614C00, - 0xE15FB000, 0xE15E1400, 0xE15C7800, - 0xE15ADC00, 0xE1594000, 0xE157A400, - 0xE1560800, 0xE1546C00, 0xE152D000, - 0xE1513400, 0xE14F9800, 0xE14DFC00, - 0xE14C6000, 0xE14AC400, 0xE1492800, - 0xE1478C00, 0xE145F000, 0xE1445400, - 0xE142B800, 0xE1411C00, 0xE13F8000, - 0xE13DE400, 0xE13C4800, 0xE13AAC00, - 0xE1391000, 0xE1377400, 0xE135D800, - 0xE1343C00, 0xE132A000, 0xE1310400, - 0xE12F6800, 0xE12DCC00, 0xE12C3000, - 0xE12A9400, 0xE128F800, 0xE1275C00, - 0xE125C000, 0xE1242400, 0xE1228800, - 0xE120EC00, 0xE11F5000, 0xE11DB400, - 0xE11C1800, 0xE11A7C00, 0xE118E000, - 0xE1174400, 0xE115A800, 0xE1140C00, - 0xE1127000, 0xE110D400, 0xE10F3800, - 0xE10D9C00, 0xE10C0000, 0xE10A6400, - 0xE108C800, 0xE1072C00, 0xE1059000, - 0xE103F400, 0xE1025800, 0xE100BC00, - 0xE0FF2000, 0xE0FD8400, 0xE0FBE800, - 0xE0FA4C00, 0xE0F8B000, 0xE0F71400, - 0xE0F57800, 0xE0F3DC00, 0xE0F24000, - 0xE0F0A400, 0xE0EF0800, 0xE0ED6C00, - 0xE0EBD000, 0xE0EA3400, 0xE0E89800, - 0xE0E6FC00, 0xE0E56000, 0xE0E3C400, - 0xE0E22800, 0xE0E08C00, 0xE0DEF000, - 0xE0DD5400, 0xE0DBB800, 0xE0DA1C00, - 0xE0D88000, 0xE0D6E400, 0xE0D54800, - 0xE0D3AC00, 0xE0D21000, 0xE0D07400, - 0xE0CED800, 0xE0CD3C00, 0xE0CBA000, - 0xE0CA0400, 0xE0C86800, 0xE0C6CC00, - 0xE0C53000, 0xE0C39400, 0xE0C1F800, - 0xE0C05C00, 0xE0BEC000, 0xE0BD2400, - 0xE0BB8800, 0xE0B9EC00, 0xE0B85000, - 0xE0B6B400, 0xE0B51800, 0xE0B37C00, - 0xE0B1E000, 0xE0B04400, 0xE0AEA800, - 0xE0AD0C00, 0xE0AB7000, 0xE0A9D400, - 0xE0A83800, 0xE0A69C00, 0xE0A50000, - 0xE0A36400, 0xE0A1C800, 0xE0A02C00, - 0xE09E9000, 0xE09CF400, 0xE09B5800, - 0xE099BC00, 0xE0982000, 0xE0968400, - 0xE094E800, 0xE0934C00, 0xE091B000, - 0xE0901400, 0xE08E7800, 0xE08CDC00, - 0xE08B4000, 0xE089A400, 0xE0880800, - 0xE0866C00, 0xE084D000, 0xE0833400, - 0xE0819800, 0xE07FFC00, 0xE07E6000, - 0xE07CC400, 0xE07B2800, 0xE0798C00, - 0xE077F000, 0xE0765400, 0xE074B800, - 0xE0731C00, 0xE0718000, 0xE06FE400, - 0xE06E4800, 0xE06CAC00, 0xE06B1000, - 0xE0697400, 0xE067D800, 0xE0663C00, - 0xE064A000, 0xE0630400, 0xE0616800, - 0xE05FCC00, 0xE05E3000, 0xE05C9400, - 0xE05AF800, 0xE0595C00, 0xE057C000, - 0xE0562400, 0xE0548800, 0xE052EC00, - 0xE0515000, 0xE04FB400, 0xE04E1800, - 0xE04C7C00, 0xE04AE000, 0xE0494400, - 0xE047A800, 0xE0460C00, 0xE0447000, - 0xE042D400, 0xE0413800, 0xE03F9C00, - 0xE03E0000, 0xE03C6400, 0xE03AC800, - 0xE0392C00, 0xE0379000, 0xE035F400, - 0xE0345800, 0xE032BC00, 0xE0312000, - 0xE02F8400, 0xE02DE800, 0xE02C4C00, - 0xE02AB000, 0xE0291400, 0xE0277800, - 0xE025DC00, 0xE0244000, 0xE022A400, - 0xE0210800, 0xE01F6C00, 0xE01DD000, - 0xE01C3400, 0xE01A9800, 0xE018FC00, - 0xE0176000, 0xE015C400, 0xE0142800, - 0xE0128C00, 0xE010F000, 0xE00F5400, - 0xE00DB800, 0xE00C1C00, 0xE00A8000, - 0xE008E400, 0xE0074800, 0xE005AC00, - 0xE0041000, 0xE0027400, 0xE000D800, - 0xDFFF3C00, 0xDFFDA000, 0xDFFC0400, - 0xDFFA6800, 0xDFF8CC00, 0xDFF73000, - 0xDFF59400, 0xDFF3F800, 0xDFF25C00, - 0xDFF0C000, 0xDFEF2400, 0xDFED8800, - 0xDFEBEC00, 0xDFEA5000, 0xDFE8B400, - 0xDFE71800, 0xDFE57C00, 0xDFE3E000, - 0xDFE24400, 0xDFE0A800, 0xDFDF0C00, - 0xDFDD7000, 0xDFDBD400, 0xDFDA3800, - 0xDFD89C00, 0xDFD70000, 0xDFD56400, - 0xDFD3C800, 0xDFD22C00, 0xDFD09000, - 0xDFCEF400, 0xDFCD5800, 0xDFCBBC00, - 0xDFCA2000, 0xDFC88400, 0xDFC6E800, - 0xDFC54C00, 0xDFC3B000, 0xDFC21400, - 0xDFC07800, 0xDFBEDC00, 0xDFBD4000, - 0xDFBBA400, 0xDFBA0800, 0xDFB86C00, - 0xDFB6D000, 0xDFB53400, 0xDFB39800, - 0xDFB1FC00, 0xDFB06000, 0xDFAEC400, - 0xDFAD2800, 0xDFAB8C00, 0xDFA9F000, - 0xDFA85400, 0xDFA6B800, 0xDFA51C00, - 0xDFA38000, 0xDFA1E400, 0xDFA04800, - 0xDF9EAC00, 0xDF9D1000, 0xDF9B7400, - 0xDF99D800, 0xDF983C00, 0xDF96A000, - 0xDF950400, 0xDF936800, 0xDF91CC00, - 0xDF903000, 0xDF8E9400, 0xDF8CF800, - 0xDF8B5C00, 0xDF89C000, 0xDF882400, - 0xDF868800, 0xDF84EC00, 0xDF835000, - 0xDF81B400, 0xDF801800, 0xDF7E7C00, - 0xDF7CE000, 0xDF7B4400, 0xDF79A800, - 0xDF780C00, 0xDF767000, 0xDF74D400, - 0xDF733800, 0xDF719C00, 0xDF700000, - 0xDF6E6400, 0xDF6CC800, 0xDF6B2C00, - 0xDF699000, 0xDF67F400, 0xDF665800, - 0xDF64BC00, 0xDF632000, 0xDF618400, - 0xDF5FE800, 0xDF5E4C00, 0xDF5CB000, - 0xDF5B1400, 0xDF597800, 0xDF57DC00, - 0xDF564000, 0xDF54A400, 0xDF530800, - 0xDF516C00, 0xDF4FD000, 0xDF4E3400, - 0xDF4C9800, 0xDF4AFC00, 0xDF496000, - 0xDF47C400, 0xDF462800, 0xDF448C00, - 0xDF42F000, 0xDF415400, 0xDF3FB800, - 0xDF3E1C00, 0xDF3C8000, 0xDF3AE400, - 0xDF394800, 0xDF37AC00, 0xDF361000, - 0xDF347400, 0xDF32D800, 0xDF313C00, - 0xDF2FA000, 0xDF2E0400, 0xDF2C6800, - 0xDF2ACC00, 0xDF293000, 0xDF279400, - 0xDF25F800, 0xDF245C00, 0xDF22C000, - 0xDF212400, 0xDF1F8800, 0xDF1DEC00, - 0xDF1C5000, 0xDF1AB400, 0xDF191800, - 0xDF177C00, 0xDF15E000, 0xDF144400, - 0xDF12A800, 0xDF110C00, 0xDF0F7000, - 0xDF0DD400, 0xDF0C3800, 0xDF0A9C00, - 0xDF090000, 0xDF076400, 0xDF05C800, - 0xDF042C00, 0xDF029000, 0xDF00F400, - 0xDEFF5800, 0xDEFDBC00, 0xDEFC2000, - 0xDEFA8400, 0xDEF8E800, 0xDEF74C00, - 0xDEF5B000, 0xDEF41400, 0xDEF27800, - 0xDEF0DC00, 0xDEEF4000, 0xDEEDA400, - 0xDEEC0800, 0xDEEA6C00, 0xDEE8D000, - 0xDEE73400, 0xDEE59800, 0xDEE3FC00, - 0xDEE26000, 0xDEE0C400, 0xDEDF2800, - 0xDEDD8C00, 0xDEDBF000, 0xDEDA5400, - 0xDED8B800, 0xDED71C00, 0xDED58000, - 0xDED3E400, 0xDED24800, 0xDED0AC00, - 0xDECF1000, 0xDECD7400, 0xDECBD800, - 0xDECA3C00, 0xDEC8A000, 0xDEC70400, - 0xDEC56800, 0xDEC3CC00, 0xDEC23000, - 0xDEC09400, 0xDEBEF800, 0xDEBD5C00, - 0xDEBBC000, 0xDEBA2400, 0xDEB88800, - 0xDEB6EC00, 0xDEB55000, 0xDEB3B400, - 0xDEB21800, 0xDEB07C00, 0xDEAEE000, - 0xDEAD4400, 0xDEABA800, 0xDEAA0C00, - 0xDEA87000, 0xDEA6D400, 0xDEA53800, - 0xDEA39C00, 0xDEA20000, 0xDEA06400, - 0xDE9EC800, 0xDE9D2C00, 0xDE9B9000, - 0xDE99F400, 0xDE985800, 0xDE96BC00, - 0xDE952000, 0xDE938400, 0xDE91E800, - 0xDE904C00, 0xDE8EB000, 0xDE8D1400, - 0xDE8B7800, 0xDE89DC00, 0xDE884000, - 0xDE86A400, 0xDE850800, 0xDE836C00, - 0xDE81D000, 0xDE803400, 0xDE7E9800, - 0xDE7CFC00, 0xDE7B6000, 0xDE79C400, - 0xDE782800, 0xDE768C00, 0xDE74F000, - 0xDE735400, 0xDE71B800, 0xDE701C00, - 0xDE6E8000, 0xDE6CE400, 0xDE6B4800, - 0xDE69AC00, 0xDE681000, 0xDE667400, - 0xDE64D800, 0xDE633C00, 0xDE61A000, - 0xDE600400, 0xDE5E6800, 0xDE5CCC00, - 0xDE5B3000, 0xDE599400, 0xDE57F800, - 0xDE565C00, 0xDE54C000, 0xDE532400, - 0xDE518800, 0xDE4FEC00, 0xDE4E5000, - 0xDE4CB400, 0xDE4B1800, 0xDE497C00, - 0xDE47E000, 0xDE464400, 0xDE44A800, - 0xDE430C00, 0xDE417000, 0xDE3FD400, - 0xDE3E3800, 0xDE3C9C00, 0xDE3B0000, - 0xDE396400, 0xDE37C800, 0xDE362C00, - 0xDE349000, 0xDE32F400, 0xDE315800, - 0xDE2FBC00, 0xDE2E2000, 0xDE2C8400, - 0xDE2AE800, 0xDE294C00, 0xDE27B000, - 0xDE261400, 0xDE247800, 0xDE22DC00, - 0xDE214000, 0xDE1FA400, 0xDE1E0800, - 0xDE1C6C00, 0xDE1AD000, 0xDE193400, - 0xDE179800, 0xDE15FC00, 0xDE146000, - 0xDE12C400, 0xDE112800, 0xDE0F8C00, - 0xDE0DF000, 0xDE0C5400, 0xDE0AB800, - 0xDE091C00, 0xDE078000, 0xDE05E400, - 0xDE044800, 0xDE02AC00, 0xDE011000, - 0xDDFF7400, 0xDDFDD800, 0xDDFC3C00, - 0xDDFAA000, 0xDDF90400, 0xDDF76800, - 0xDDF5CC00, 0xDDF43000, 0xDDF29400, - 0xDDF0F800, 0xDDEF5C00, 0xDDEDC000, - 0xDDEC2400, 0xDDEA8800, 0xDDE8EC00, - 0xDDE75000, 0xDDE5B400, 0xDDE41800, - 0xDDE27C00, 0xDDE0E000, 0xDDDF4400, - 0xDDDDA800, 0xDDDC0C00, 0xDDDA7000, - 0xDDD8D400, 0xDDD73800, 0xDDD59C00, - 0xDDD40000, 0xDDD26400, 0xDDD0C800, - 0xDDCF2C00, 0xDDCD9000, 0xDDCBF400, - 0xDDCA5800, 0xDDC8BC00, 0xDDC72000, - 0xDDC58400, 0xDDC3E800, 0xDDC24C00, - 0xDDC0B000, 0xDDBF1400, 0xDDBD7800, - 0xDDBBDC00, 0xDDBA4000, 0xDDB8A400, - 0xDDB70800, 0xDDB56C00, 0xDDB3D000, - 0xDDB23400, 0xDDB09800, 0xDDAEFC00, - 0xDDAD6000, 0xDDABC400, 0xDDAA2800, - 0xDDA88C00, 0xDDA6F000, 0xDDA55400, - 0xDDA3B800, 0xDDA21C00, 0xDDA08000, - 0xDD9EE400, 0xDD9D4800, 0xDD9BAC00, - 0xDD9A1000, 0xDD987400, 0xDD96D800, - 0xDD953C00, 0xDD93A000, 0xDD920400, - 0xDD906800, 0xDD8ECC00, 0xDD8D3000, - 0xDD8B9400, 0xDD89F800, 0xDD885C00, - 0xDD86C000, 0xDD852400, 0xDD838800, - 0xDD81EC00, 0xDD805000, 0xDD7EB400, - 0xDD7D1800, 0xDD7B7C00, 0xDD79E000, - 0xDD784400, 0xDD76A800, 0xDD750C00, - 0xDD737000, 0xDD71D400, 0xDD703800, - 0xDD6E9C00, 0xDD6D0000, 0xDD6B6400, - 0xDD69C800, 0xDD682C00, 0xDD669000, - 0xDD64F400, 0xDD635800, 0xDD61BC00, - 0xDD602000, 0xDD5E8400, 0xDD5CE800, - 0xDD5B4C00, 0xDD59B000, 0xDD581400, - 0xDD567800, 0xDD54DC00, 0xDD534000, - 0xDD51A400, 0xDD500800, 0xDD4E6C00, - 0xDD4CD000, 0xDD4B3400, 0xDD499800, - 0xDD47FC00, 0xDD466000, 0xDD44C400, - 0xDD432800, 0xDD418C00, 0xDD3FF000, - 0xDD3E5400, 0xDD3CB800, 0xDD3B1C00, - 0xDD398000, 0xDD37E400, 0xDD364800, - 0xDD34AC00, 0xDD331000, 0xDD317400, - 0xDD2FD800, 0xDD2E3C00, 0xDD2CA000, - 0xDD2B0400, 0xDD296800, 0xDD27CC00, - 0xDD263000, 0xDD249400, 0xDD22F800, - 0xDD215C00, 0xDD1FC000, 0xDD1E2400, - 0xDD1C8800, 0xDD1AEC00, 0xDD195000, - 0xDD17B400, 0xDD161800, 0xDD147C00, - 0xDD12E000, 0xDD114400, 0xDD0FA800, - 0xDD0E0C00, 0xDD0C7000, 0xDD0AD400, - 0xDD093800, 0xDD079C00, 0xDD060000, - 0xDD046400, 0xDD02C800, 0xDD012C00, - 0xDCFF9000, 0xDCFDF400, 0xDCFC5800, - 0xDCFABC00, 0xDCF92000, 0xDCF78400, - 0xDCF5E800, 0xDCF44C00, 0xDCF2B000, - 0xDCF11400, 0xDCEF7800, 0xDCEDDC00, - 0xDCEC4000, 0xDCEAA400, 0xDCE90800, - 0xDCE76C00, 0xDCE5D000, 0xDCE43400, - 0xDCE29800, 0xDCE0FC00, 0xDCDF6000, - 0xDCDDC400, 0xDCDC2800, 0xDCDA8C00, - 0xDCD8F000, 0xDCD75400, 0xDCD5B800, - 0xDCD41C00, 0xDCD28000, 0xDCD0E400, - 0xDCCF4800, 0xDCCDAC00, 0xDCCC1000, - 0xDCCA7400, 0xDCC8D800, 0xDCC73C00, - 0xDCC5A000, 0xDCC40400, 0xDCC26800, - 0xDCC0CC00, 0xDCBF3000, 0xDCBD9400, - 0xDCBBF800, 0xDCBA5C00, 0xDCB8C000, - 0xDCB72400, 0xDCB58800, 0xDCB3EC00, - 0xDCB25000, 0xDCB0B400, 0xDCAF1800, - 0xDCAD7C00, 0xDCABE000, 0xDCAA4400, - 0xDCA8A800, 0xDCA70C00, 0xDCA57000, - 0xDCA3D400, 0xDCA23800, 0xDCA09C00, - 0xDC9F0000, 0xDC9D6400, 0xDC9BC800, - 0xDC9A2C00, 0xDC989000, 0xDC96F400, - 0xDC955800, 0xDC93BC00, 0xDC922000, - 0xDC908400, 0xDC8EE800, 0xDC8D4C00, - 0xDC8BB000, 0xDC8A1400, 0xDC887800, - 0xDC86DC00, 0xDC854000, 0xDC83A400, - 0xDC820800, 0xDC806C00, 0xDC7ED000, - 0xDC7D3400, 0xDC7B9800, 0xDC79FC00, - 0xDC786000, 0xDC76C400, 0xDC752800, - 0xDC738C00, 0xDC71F000, 0xDC705400, - 0xDC6EB800, 0xDC6D1C00, 0xDC6B8000, - 0xDC69E400, 0xDC684800, 0xDC66AC00, - 0xDC651000, 0xDC637400, 0xDC61D800, - 0xDC603C00, 0xDC5EA000, 0xDC5D0400, - 0xDC5B6800, 0xDC59CC00, 0xDC583000, - 0xDC569400, 0xDC54F800, 0xDC535C00, - 0xDC51C000, 0xDC502400, 0xDC4E8800, - 0xDC4CEC00, 0xDC4B5000, 0xDC49B400, - 0xDC481800, 0xDC467C00, 0xDC44E000, - 0xDC434400, 0xDC41A800, 0xDC400C00, - 0xDC3E7000, 0xDC3CD400, 0xDC3B3800, - 0xDC399C00, 0xDC380000, 0xDC366400, - 0xDC34C800, 0xDC332C00, 0xDC319000, - 0xDC2FF400, 0xDC2E5800, 0xDC2CBC00, - 0xDC2B2000, 0xDC298400, 0xDC27E800, - 0xDC264C00, 0xDC24B000, 0xDC231400, - 0xDC217800, 0xDC1FDC00, 0xDC1E4000, - 0xDC1CA400, 0xDC1B0800, 0xDC196C00, - 0xDC17D000, 0xDC163400, 0xDC149800, - 0xDC12FC00, 0xDC116000, 0xDC0FC400, - 0xDC0E2800, 0xDC0C8C00, 0xDC0AF000, - 0xDC095400, 0xDC07B800, 0xDC061C00, - 0xDC048000, 0xDC02E400, 0xDC014800, - 0xDBFFAC00, 0xDBFE1000, 0xDBFC7400, - 0xDBFAD800, 0xDBF93C00, 0xDBF7A000, - 0xDBF60400, 0xDBF46800, 0xDBF2CC00, - 0xDBF13000, 0xDBEF9400, 0xDBEDF800, - 0xDBEC5C00, 0xDBEAC000, 0xDBE92400, - 0xDBE78800, 0xDBE5EC00, 0xDBE45000, - 0xDBE2B400, 0xDBE11800, 0xDBDF7C00, - 0xDBDDE000, 0xDBDC4400, 0xDBDAA800, - 0xDBD90C00, 0xDBD77000, 0xDBD5D400, - 0xDBD43800, 0xDBD29C00, 0xDBD10000, - 0xDBCF6400, 0xDBCDC800, 0xDBCC2C00, - 0xDBCA9000, 0xDBC8F400, 0xDBC75800, - 0xDBC5BC00, 0xDBC42000, 0xDBC28400, - 0xDBC0E800, 0xDBBF4C00, 0xDBBDB000, - 0xDBBC1400, 0xDBBA7800, 0xDBB8DC00, - 0xDBB74000, 0xDBB5A400, 0xDBB40800, - 0xDBB26C00, 0xDBB0D000, 0xDBAF3400, - 0xDBAD9800, 0xDBABFC00, 0xDBAA6000, - 0xDBA8C400, 0xDBA72800, 0xDBA58C00, - 0xDBA3F000, 0xDBA25400, 0xDBA0B800, - 0xDB9F1C00, 0xDB9D8000, 0xDB9BE400, - 0xDB9A4800, 0xDB98AC00, 0xDB971000, - 0xDB957400, 0xDB93D800, 0xDB923C00, - 0xDB90A000, 0xDB8F0400, 0xDB8D6800, - 0xDB8BCC00, 0xDB8A3000, 0xDB889400, - 0xDB86F800, 0xDB855C00, 0xDB83C000, - 0xDB822400, 0xDB808800, 0xDB7EEC00, - 0xDB7D5000, 0xDB7BB400, 0xDB7A1800, - 0xDB787C00, 0xDB76E000, 0xDB754400, - 0xDB73A800, 0xDB720C00, 0xDB707000, - 0xDB6ED400, 0xDB6D3800, 0xDB6B9C00, - 0xDB6A0000, 0xDB686400, 0xDB66C800, - 0xDB652C00, 0xDB639000, 0xDB61F400, - 0xDB605800, 0xDB5EBC00, 0xDB5D2000, - 0xDB5B8400, 0xDB59E800, 0xDB584C00, - 0xDB56B000, 0xDB551400, 0xDB537800, - 0xDB51DC00, 0xDB504000, 0xDB4EA400, - 0xDB4D0800, 0xDB4B6C00, 0xDB49D000, - 0xDB483400, 0xDB469800, 0xDB44FC00, - 0xDB436000, 0xDB41C400, 0xDB402800, - 0xDB3E8C00, 0xDB3CF000, 0xDB3B5400, - 0xDB39B800, 0xDB381C00, 0xDB368000, - 0xDB34E400, 0xDB334800, 0xDB31AC00, - 0xDB301000, 0xDB2E7400, 0xDB2CD800, - 0xDB2B3C00, 0xDB29A000, 0xDB280400, - 0xDB266800, 0xDB24CC00, 0xDB233000, - 0xDB219400, 0xDB1FF800, 0xDB1E5C00, - 0xDB1CC000, 0xDB1B2400, 0xDB198800, - 0xDB17EC00, 0xDB165000, 0xDB14B400, - 0xDB131800, 0xDB117C00, 0xDB0FE000, - 0xDB0E4400, 0xDB0CA800, 0xDB0B0C00, - 0xDB097000, 0xDB07D400, 0xDB063800, - 0xDB049C00, 0xDB030000, 0xDB016400, - 0xDAFFC800, 0xDAFE2C00, 0xDAFC9000, - 0xDAFAF400, 0xDAF95800, 0xDAF7BC00, - 0xDAF62000, 0xDAF48400, 0xDAF2E800, - 0xDAF14C00, 0xDAEFB000, 0xDAEE1400, - 0xDAEC7800, 0xDAEADC00, 0xDAE94000, - 0xDAE7A400, 0xDAE60800, 0xDAE46C00, - 0xDAE2D000, 0xDAE13400, 0xDADF9800, - 0xDADDFC00, 0xDADC6000, 0xDADAC400, - 0xDAD92800, 0xDAD78C00, 0xDAD5F000, - 0xDAD45400, 0xDAD2B800, 0xDAD11C00, - 0xDACF8000, 0xDACDE400, 0xDACC4800, - 0xDACAAC00, 0xDAC91000, 0xDAC77400, - 0xDAC5D800, 0xDAC43C00, 0xDAC2A000, - 0xDAC10400, 0xDABF6800, 0xDABDCC00, - 0xDABC3000, 0xDABA9400, 0xDAB8F800, - 0xDAB75C00, 0xDAB5C000, 0xDAB42400, - 0xDAB28800, 0xDAB0EC00, 0xDAAF5000, - 0xDAADB400, 0xDAAC1800, 0xDAAA7C00, - 0xDAA8E000, 0xDAA74400, 0xDAA5A800, - 0xDAA40C00, 0xDAA27000, 0xDAA0D400, - 0xDA9F3800, 0xDA9D9C00, 0xDA9C0000, - 0xDA9A6400, 0xDA98C800, 0xDA972C00, - 0xDA959000, 0xDA93F400, 0xDA925800, - 0xDA90BC00, 0xDA8F2000, 0xDA8D8400, - 0xDA8BE800, 0xDA8A4C00, 0xDA88B000, - 0xDA871400, 0xDA857800, 0xDA83DC00, - 0xDA824000, 0xDA80A400, 0xDA7F0800, - 0xDA7D6C00, 0xDA7BD000, 0xDA7A3400, - 0xDA789800, 0xDA76FC00, 0xDA756000, - 0xDA73C400, 0xDA722800, 0xDA708C00, - 0xDA6EF000, 0xDA6D5400, 0xDA6BB800, - 0xDA6A1C00, 0xDA688000, 0xDA66E400, - 0xDA654800, 0xDA63AC00, 0xDA621000, - 0xDA607400, 0xDA5ED800, 0xDA5D3C00, - 0xDA5BA000, 0xDA5A0400, 0xDA586800, - 0xDA56CC00, 0xDA553000, 0xDA539400, - 0xDA51F800, 0xDA505C00, 0xDA4EC000, - 0xDA4D2400, 0xDA4B8800, 0xDA49EC00, - 0xDA485000, 0xDA46B400, 0xDA451800, - 0xDA437C00, 0xDA41E000, 0xDA404400, - 0xDA3EA800, 0xDA3D0C00, 0xDA3B7000, - 0xDA39D400, 0xDA383800, 0xDA369C00, - 0xDA350000, 0xDA336400, 0xDA31C800, - 0xDA302C00, 0xDA2E9000, 0xDA2CF400, - 0xDA2B5800, 0xDA29BC00, 0xDA282000, - 0xDA268400, 0xDA24E800, 0xDA234C00, - 0xDA21B000, 0xDA201400, 0xDA1E7800, - 0xDA1CDC00, 0xDA1B4000, 0xDA19A400, - 0xDA180800, 0xDA166C00, 0xDA14D000, - 0xDA133400, 0xDA119800, 0xDA0FFC00, - 0xDA0E6000, 0xDA0CC400, 0xDA0B2800, - 0xDA098C00, 0xDA07F000, 0xDA065400, - 0xDA04B800, 0xDA031C00, 0xDA018000, - 0xD9FFE400, 0xD9FE4800, 0xD9FCAC00, - 0xD9FB1000, 0xD9F97400, 0xD9F7D800, - 0xD9F63C00, 0xD9F4A000, 0xD9F30400, - 0xD9F16800, 0xD9EFCC00, 0xD9EE3000, - 0xD9EC9400, 0xD9EAF800, 0xD9E95C00, - 0xD9E7C000, 0xD9E62400, 0xD9E48800, - 0xD9E2EC00, 0xD9E15000, 0xD9DFB400, - 0xD9DE1800, 0xD9DC7C00, 0xD9DAE000, - 0xD9D94400, 0xD9D7A800, 0xD9D60C00, - 0xD9D47000, 0xD9D2D400, 0xD9D13800, - 0xD9CF9C00, 0xD9CE0000, 0xD9CC6400, - 0xD9CAC800, 0xD9C92C00, 0xD9C79000, - 0xD9C5F400, 0xD9C45800, 0xD9C2BC00, - 0xD9C12000, 0xD9BF8400, 0xD9BDE800, - 0xD9BC4C00, 0xD9BAB000, 0xD9B91400, - 0xD9B77800, 0xD9B5DC00, 0xD9B44000, - 0xD9B2A400, 0xD9B10800, 0xD9AF6C00, - 0xD9ADD000, 0xD9AC3400, 0xD9AA9800, - 0xD9A8FC00, 0xD9A76000, 0xD9A5C400, - 0xD9A42800, 0xD9A28C00, 0xD9A0F000, - 0xD99F5400, 0xD99DB800, 0xD99C1C00, - 0xD99A8000, 0xD998E400, 0xD9974800, - 0xD995AC00, 0xD9941000, 0xD9927400, - 0xD990D800, 0xD98F3C00, 0xD98DA000, - 0xD98C0400, 0xD98A6800, 0xD988CC00, - 0xD9873000, 0xD9859400, 0xD983F800, - 0xD9825C00, 0xD980C000, 0xD97F2400, - 0xD97D8800, 0xD97BEC00, 0xD97A5000, - 0xD978B400, 0xD9771800, 0xD9757C00, - 0xD973E000, 0xD9724400, 0xD970A800, - 0xD96F0C00, 0xD96D7000, 0xD96BD400, - 0xD96A3800, 0xD9689C00, 0xD9670000, - 0xD9656400, 0xD963C800, 0xD9622C00, - 0xD9609000, 0xD95EF400, 0xD95D5800, - 0xD95BBC00, 0xD95A2000, 0xD9588400, - 0xD956E800, 0xD9554C00, 0xD953B000, - 0xD9521400, 0xD9507800, 0xD94EDC00, - 0xD94D4000, 0xD94BA400, 0xD94A0800, - 0xD9486C00, 0xD946D000, 0xD9453400, - 0xD9439800, 0xD941FC00, 0xD9406000, - 0xD93EC400, 0xD93D2800, 0xD93B8C00, - 0xD939F000, 0xD9385400, 0xD936B800, - 0xD9351C00, 0xD9338000, 0xD931E400, - 0xD9304800, 0xD92EAC00, 0xD92D1000, - 0xD92B7400, 0xD929D800, 0xD9283C00, - 0xD926A000, 0xD9250400, 0xD9236800, - 0xD921CC00, 0xD9203000, 0xD91E9400, - 0xD91CF800, 0xD91B5C00, 0xD919C000, - 0xD9182400, 0xD9168800, 0xD914EC00, - 0xD9135000, 0xD911B400, 0xD9101800, - 0xD90E7C00, 0xD90CE000, 0xD90B4400, - 0xD909A800, 0xD9080C00, 0xD9067000, - 0xD904D400, 0xD9033800, 0xD9019C00, - 0xD9000000, 0xD8FE6400, 0xD8FCC800, - 0xD8FB2C00, 0xD8F99000, 0xD8F7F400, - 0xD8F65800, 0xD8F4BC00, 0xD8F32000, - 0xD8F18400, 0xD8EFE800, 0xD8EE4C00, - 0xD8ECB000, 0xD8EB1400, 0xD8E97800, - 0xD8E7DC00, 0xD8E64000, 0xD8E4A400, - 0xD8E30800, 0xD8E16C00, 0xD8DFD000, - 0xD8DE3400, 0xD8DC9800, 0xD8DAFC00, - 0xD8D96000, 0xD8D7C400, 0xD8D62800, - 0xD8D48C00, 0xD8D2F000, 0xD8D15400, - 0xD8CFB800, 0xD8CE1C00, 0xD8CC8000, - 0xD8CAE400, 0xD8C94800, 0xD8C7AC00, - 0xD8C61000, 0xD8C47400, 0xD8C2D800, - 0xD8C13C00, 0xD8BFA000, 0xD8BE0400, - 0xD8BC6800, 0xD8BACC00, 0xD8B93000, - 0xD8B79400, 0xD8B5F800, 0xD8B45C00, - 0xD8B2C000, 0xD8B12400, 0xD8AF8800, - 0xD8ADEC00, 0xD8AC5000, 0xD8AAB400, - 0xD8A91800, 0xD8A77C00, 0xD8A5E000, - 0xD8A44400, 0xD8A2A800, 0xD8A10C00, - 0xD89F7000, 0xD89DD400, 0xD89C3800, - 0xD89A9C00, 0xD8990000, 0xD8976400, - 0xD895C800, 0xD8942C00, 0xD8929000, - 0xD890F400, 0xD88F5800, 0xD88DBC00, - 0xD88C2000, 0xD88A8400, 0xD888E800, - 0xD8874C00, 0xD885B000, 0xD8841400, - 0xD8827800, 0xD880DC00, 0xD87F4000, - 0xD87DA400, 0xD87C0800, 0xD87A6C00, - 0xD878D000, 0xD8773400, 0xD8759800, - 0xD873FC00, 0xD8726000, 0xD870C400, - 0xD86F2800, 0xD86D8C00, 0xD86BF000, - 0xD86A5400, 0xD868B800, 0xD8671C00, - 0xD8658000, 0xD863E400, 0xD8624800, - 0xD860AC00, 0xD85F1000, 0xD85D7400, - 0xD85BD800, 0xD85A3C00, 0xD858A000, - 0xD8570400, 0xD8556800, 0xD853CC00, - 0xD8523000, 0xD8509400, 0xD84EF800, - 0xD84D5C00, 0xD84BC000, 0xD84A2400, - 0xD8488800, 0xD846EC00, 0xD8455000, - 0xD843B400, 0xD8421800, 0xD8407C00, - 0xD83EE000, 0xD83D4400, 0xD83BA800, - 0xD83A0C00, 0xD8387000, 0xD836D400, - 0xD8353800, 0xD8339C00, 0xD8320000, - 0xD8306400, 0xD82EC800, 0xD82D2C00, - 0xD82B9000, 0xD829F400, 0xD8285800, - 0xD826BC00, 0xD8252000, 0xD8238400, - 0xD821E800, 0xD8204C00, 0xD81EB000, - 0xD81D1400, 0xD81B7800, 0xD819DC00, - 0xD8184000, 0xD816A400, 0xD8150800, - 0xD8136C00, 0xD811D000, 0xD8103400, - 0xD80E9800, 0xD80CFC00, 0xD80B6000, - 0xD809C400, 0xD8082800, 0xD8068C00, - 0xD804F000, 0xD8035400, 0xD801B800, - 0xD8001C00, 0xD7FE8000, 0xD7FCE400, - 0xD7FB4800, 0xD7F9AC00, 0xD7F81000, - 0xD7F67400, 0xD7F4D800, 0xD7F33C00, - 0xD7F1A000, 0xD7F00400, 0xD7EE6800, - 0xD7ECCC00, 0xD7EB3000, 0xD7E99400, - 0xD7E7F800, 0xD7E65C00, 0xD7E4C000, - 0xD7E32400, 0xD7E18800, 0xD7DFEC00, - 0xD7DE5000, 0xD7DCB400, 0xD7DB1800, - 0xD7D97C00, 0xD7D7E000, 0xD7D64400, - 0xD7D4A800, 0xD7D30C00, 0xD7D17000, - 0xD7CFD400, 0xD7CE3800, 0xD7CC9C00, - 0xD7CB0000, 0xD7C96400, 0xD7C7C800, - 0xD7C62C00, 0xD7C49000, 0xD7C2F400, - 0xD7C15800, 0xD7BFBC00, 0xD7BE2000, - 0xD7BC8400, 0xD7BAE800, 0xD7B94C00, - 0xD7B7B000, 0xD7B61400, 0xD7B47800, - 0xD7B2DC00, 0xD7B14000, 0xD7AFA400, - 0xD7AE0800, 0xD7AC6C00, 0xD7AAD000, - 0xD7A93400, 0xD7A79800, 0xD7A5FC00, - 0xD7A46000, 0xD7A2C400, 0xD7A12800, - 0xD79F8C00, 0xD79DF000, 0xD79C5400, - 0xD79AB800, 0xD7991C00, 0xD7978000, - 0xD795E400, 0xD7944800, 0xD792AC00, - 0xD7911000, 0xD78F7400, 0xD78DD800, - 0xD78C3C00, 0xD78AA000, 0xD7890400, - 0xD7876800, 0xD785CC00, 0xD7843000, - 0xD7829400, 0xD780F800, 0xD77F5C00, - 0xD77DC000, 0xD77C2400, 0xD77A8800, - 0xD778EC00, 0xD7775000, 0xD775B400, - 0xD7741800, 0xD7727C00, 0xD770E000, - 0xD76F4400, 0xD76DA800, 0xD76C0C00, - 0xD76A7000, 0xD768D400, 0xD7673800, - 0xD7659C00, 0xD7640000, 0xD7626400, - 0xD760C800, 0xD75F2C00, 0xD75D9000, - 0xD75BF400, 0xD75A5800, 0xD758BC00, - 0xD7572000, 0xD7558400, 0xD753E800, - 0xD7524C00, 0xD750B000, 0xD74F1400, - 0xD74D7800, 0xD74BDC00, 0xD74A4000, - 0xD748A400, 0xD7470800, 0xD7456C00, - 0xD743D000, 0xD7423400, 0xD7409800, - 0xD73EFC00, 0xD73D6000, 0xD73BC400, - 0xD73A2800, 0xD7388C00, 0xD736F000, - 0xD7355400, 0xD733B800, 0xD7321C00, - 0xD7308000, 0xD72EE400, 0xD72D4800, - 0xD72BAC00, 0xD72A1000, 0xD7287400, - 0xD726D800, 0xD7253C00, 0xD723A000, - 0xD7220400, 0xD7206800, 0xD71ECC00, - 0xD71D3000, 0xD71B9400, 0xD719F800, - 0xD7185C00, 0xD716C000, 0xD7152400, - 0xD7138800, 0xD711EC00, 0xD7105000, - 0xD70EB400, 0xD70D1800, 0xD70B7C00, - 0xD709E000, 0xD7084400, 0xD706A800, - 0xD7050C00, 0xD7037000, 0xD701D400, - 0xD7003800, 0xD6FE9C00, 0xD6FD0000, - 0xD6FB6400, 0xD6F9C800, 0xD6F82C00, - 0xD6F69000, 0xD6F4F400, 0xD6F35800, - 0xD6F1BC00, 0xD6F02000, 0xD6EE8400, - 0xD6ECE800, 0xD6EB4C00, 0xD6E9B000, - 0xD6E81400, 0xD6E67800, 0xD6E4DC00, - 0xD6E34000, 0xD6E1A400, 0xD6E00800, - 0xD6DE6C00, 0xD6DCD000, 0xD6DB3400, - 0xD6D99800, 0xD6D7FC00, 0xD6D66000, - 0xD6D4C400, 0xD6D32800, 0xD6D18C00, - 0xD6CFF000, 0xD6CE5400, 0xD6CCB800, - 0xD6CB1C00, 0xD6C98000, 0xD6C7E400, - 0xD6C64800, 0xD6C4AC00, 0xD6C31000, - 0xD6C17400, 0xD6BFD800, 0xD6BE3C00, - 0xD6BCA000, 0xD6BB0400, 0xD6B96800, - 0xD6B7CC00, 0xD6B63000, 0xD6B49400, - 0xD6B2F800, 0xD6B15C00, 0xD6AFC000, - 0xD6AE2400, 0xD6AC8800, 0xD6AAEC00, - 0xD6A95000, 0xD6A7B400, 0xD6A61800, - 0xD6A47C00, 0xD6A2E000, 0xD6A14400, - 0xD69FA800, 0xD69E0C00, 0xD69C7000, - 0xD69AD400, 0xD6993800, 0xD6979C00, - 0xD6960000, 0xD6946400, 0xD692C800, - 0xD6912C00, 0xD68F9000, 0xD68DF400, - 0xD68C5800, 0xD68ABC00, 0xD6892000, - 0xD6878400, 0xD685E800, 0xD6844C00, - 0xD682B000, 0xD6811400, 0xD67F7800, - 0xD67DDC00, 0xD67C4000, 0xD67AA400, - 0xD6790800, 0xD6776C00, 0xD675D000, - 0xD6743400, 0xD6729800, 0xD670FC00, - 0xD66F6000, 0xD66DC400, 0xD66C2800, - 0xD66A8C00, 0xD668F000, 0xD6675400, - 0xD665B800, 0xD6641C00, 0xD6628000, - 0xD660E400, 0xD65F4800, 0xD65DAC00, - 0xD65C1000, 0xD65A7400, 0xD658D800, - 0xD6573C00, 0xD655A000, 0xD6540400, - 0xD6526800, 0xD650CC00, 0xD64F3000, - 0xD64D9400, 0xD64BF800, 0xD64A5C00, - 0xD648C000, 0xD6472400, 0xD6458800, - 0xD643EC00, 0xD6425000, 0xD640B400, - 0xD63F1800, 0xD63D7C00, 0xD63BE000, - 0xD63A4400, 0xD638A800, 0xD6370C00, - 0xD6357000, 0xD633D400, 0xD6323800, - 0xD6309C00, 0xD62F0000, 0xD62D6400, - 0xD62BC800, 0xD62A2C00, 0xD6289000, - 0xD626F400, 0xD6255800, 0xD623BC00, - 0xD6222000, 0xD6208400, 0xD61EE800, - 0xD61D4C00, 0xD61BB000, 0xD61A1400, - 0xD6187800, 0xD616DC00, 0xD6154000, - 0xD613A400, 0xD6120800, 0xD6106C00, - 0xD60ED000, 0xD60D3400, 0xD60B9800, - 0xD609FC00, 0xD6086000, 0xD606C400, - 0xD6052800, 0xD6038C00, 0xD601F000, - 0xD6005400, 0xD5FEB800, 0xD5FD1C00, - 0xD5FB8000, 0xD5F9E400, 0xD5F84800, - 0xD5F6AC00, 0xD5F51000, 0xD5F37400, - 0xD5F1D800, 0xD5F03C00, 0xD5EEA000, - 0xD5ED0400, 0xD5EB6800, 0xD5E9CC00, - 0xD5E83000, 0xD5E69400, 0xD5E4F800, - 0xD5E35C00, 0xD5E1C000, 0xD5E02400, - 0xD5DE8800, 0xD5DCEC00, 0xD5DB5000, - 0xD5D9B400, 0xD5D81800, 0xD5D67C00, - 0xD5D4E000, 0xD5D34400, 0xD5D1A800, - 0xD5D00C00, 0xD5CE7000, 0xD5CCD400, - 0xD5CB3800, 0xD5C99C00, 0xD5C80000, - 0xD5C68380, 0xD5C50700, 0xD5C38A80, - 0xD5C20E00, 0xD5C09180, 0xD5BF1500, - 0xD5BD9880, 0xD5BC1C00, 0xD5BA9F80, - 0xD5B92300, 0xD5B7A680, 0xD5B62A00, - 0xD5B4AD80, 0xD5B33100, 0xD5B1B480, - 0xD5B03800, 0xD5AEBB80, 0xD5AD3F00, - 0xD5ABC280, 0xD5AA4600, 0xD5A8C980, - 0xD5A74D00, 0xD5A5D080, 0xD5A45400, - 0xD5A2D780, 0xD5A15B00, 0xD59FDE80, - 0xD59E6200, 0xD59CE580, 0xD59B6900, - 0xD599EC80, 0xD5987000, 0xD596F380, - 0xD5957700, 0xD593FA80, 0xD5927E00, - 0xD5910180, 0xD58F8500, 0xD58E0880, - 0xD58C8C00, 0xD58B0F80, 0xD5899300, - 0xD5881680, 0xD5869A00, 0xD5851D80, - 0xD583A100, 0xD5822480, 0xD580A800, - 0xD57F2B80, 0xD57DAF00, 0xD57C3280, - 0xD57AB600, 0xD5793980, 0xD577BD00, - 0xD5764080, 0xD574C400, 0xD5734780, - 0xD571CB00, 0xD5704E80, 0xD56ED200, - 0xD56D5580, 0xD56BD900, 0xD56A5C80, - 0xD568E000, 0xD5676380, 0xD565E700, - 0xD5646A80, 0xD562EE00, 0xD5617180, - 0xD55FF500, 0xD55E7880, 0xD55CFC00, - 0xD55B7F80, 0xD55A0300, 0xD5588680, - 0xD5570A00, 0xD5558D80, 0xD5541100, - 0xD5529480, 0xD5511800, 0xD54F9B80, - 0xD54E1F00, 0xD54CA280, 0xD54B2600, - 0xD549A980, 0xD5482D00, 0xD546B080, - 0xD5453400, 0xD543B780, 0xD5423B00, - 0xD540BE80, 0xD53F4200, 0xD53DC580, - 0xD53C4900, 0xD53ACC80, 0xD5395000, - 0xD537D380, 0xD5365700, 0xD534DA80, - 0xD5335E00, 0xD531E180, 0xD5306500, - 0xD52EE880, 0xD52D6C00, 0xD52BEF80, - 0xD52A7300, 0xD528F680, 0xD5277A00, - 0xD525FD80, 0xD5248100, 0xD5230480, - 0xD5218800, 0xD5200B80, 0xD51E8F00, - 0xD51D1280, 0xD51B9600, 0xD51A1980, - 0xD5189D00, 0xD5172080, 0xD515A400, - 0xD5142780, 0xD512AB00, 0xD5112E80, - 0xD50FB200, 0xD50E3580, 0xD50CB900, - 0xD50B3C80, 0xD509C000, 0xD5084380, - 0xD506C700, 0xD5054A80, 0xD503CE00, - 0xD5025180, 0xD500D500, 0xD4FF5880, - 0xD4FDDC00, 0xD4FC5F80, 0xD4FAE300, - 0xD4F96680, 0xD4F7EA00, 0xD4F66D80, - 0xD4F4F100, 0xD4F37480, 0xD4F1F800, - 0xD4F07B80, 0xD4EEFF00, 0xD4ED8280, - 0xD4EC0600, 0xD4EA8980, 0xD4E90D00, - 0xD4E79080, 0xD4E61400, 0xD4E49780, - 0xD4E31B00, 0xD4E19E80, 0xD4E02200, - 0xD4DEA580, 0xD4DD2900, 0xD4DBAC80, - 0xD4DA3000, 0xD4D8B380, 0xD4D73700, - 0xD4D5BA80, 0xD4D43E00, 0xD4D2C180, - 0xD4D14500, 0xD4CFC880, 0xD4CE4C00, - 0xD4CCCF80, 0xD4CB5300, 0xD4C9D680, - 0xD4C85A00, 0xD4C6DD80, 0xD4C56100, - 0xD4C3E480, 0xD4C26800, 0xD4C0EB80, - 0xD4BF6F00, 0xD4BDF280, 0xD4BC7600, - 0xD4BAF980, 0xD4B97D00, 0xD4B80080, - 0xD4B68400, 0xD4B50780, 0xD4B38B00, - 0xD4B20E80, 0xD4B09200, 0xD4AF1580, - 0xD4AD9900, 0xD4AC1C80, 0xD4AAA000, - 0xD4A92380, 0xD4A7A700, 0xD4A62A80, - 0xD4A4AE00, 0xD4A33180, 0xD4A1B500, - 0xD4A03880, 0xD49EBC00, 0xD49D3F80, - 0xD49BC300, 0xD49A4680, 0xD498CA00, - 0xD4974D80, 0xD495D100, 0xD4945480, - 0xD492D800, 0xD4915B80, 0xD48FDF00, - 0xD48E6280, 0xD48CE600, 0xD48B6980, - 0xD489ED00, 0xD4887080, 0xD486F400, - 0xD4857780, 0xD483FB00, 0xD4827E80, - 0xD4810200, 0xD47F8580, 0xD47E0900, - 0xD47C8C80, 0xD47B1000, 0xD4799380, - 0xD4781700, 0xD4769A80, 0xD4751E00, - 0xD473A180, 0xD4722500, 0xD470A880, - 0xD46F2C00, 0xD46DAF80, 0xD46C3300, - 0xD46AB680, 0xD4693A00, 0xD467BD80, - 0xD4664100, 0xD464C480, 0xD4634800, - 0xD461CB80, 0xD4604F00, 0xD45ED280, - 0xD45D5600, 0xD45BD980, 0xD45A5D00, - 0xD458E080, 0xD4576400, 0xD455E780, - 0xD4546B00, 0xD452EE80, 0xD4517200, - 0xD44FF580, 0xD44E7900, 0xD44CFC80, - 0xD44B8000, 0xD44A0380, 0xD4488700, - 0xD4470A80, 0xD4458E00, 0xD4441180, - 0xD4429500, 0xD4411880, 0xD43F9C00, - 0xD43E1F80, 0xD43CA300, 0xD43B2680, - 0xD439AA00, 0xD4382D80, 0xD436B100, - 0xD4353480, 0xD433B800, 0xD4323B80, - 0xD430BF00, 0xD42F4280, 0xD42DC600, - 0xD42C4980, 0xD42ACD00, 0xD4295080, - 0xD427D400, 0xD4265780, 0xD424DB00, - 0xD4235E80, 0xD421E200, 0xD4206580, - 0xD41EE900, 0xD41D6C80, 0xD41BF000, - 0xD41A7380, 0xD418F700, 0xD4177A80, - 0xD415FE00, 0xD4148180, 0xD4130500, - 0xD4118880, 0xD4100C00, 0xD40E8F80, - 0xD40D1300, 0xD40B9680, 0xD40A1A00, - 0xD4089D80, 0xD4072100, 0xD405A480, - 0xD4042800, 0xD402AB80, 0xD4012F00, - 0xD3FFB280, 0xD3FE3600, 0xD3FCB980, - 0xD3FB3D00, 0xD3F9C080, 0xD3F84400, - 0xD3F6C780, 0xD3F54B00, 0xD3F3CE80, - 0xD3F25200, 0xD3F0D580, 0xD3EF5900, - 0xD3EDDC80, 0xD3EC6000, 0xD3EAE380, - 0xD3E96700, 0xD3E7EA80, 0xD3E66E00, - 0xD3E4F180, 0xD3E37500, 0xD3E1F880, - 0xD3E07C00, 0xD3DEFF80, 0xD3DD8300, - 0xD3DC0680, 0xD3DA8A00, 0xD3D90D80, - 0xD3D79100, 0xD3D61480, 0xD3D49800, - 0xD3D31B80, 0xD3D19F00, 0xD3D02280, - 0xD3CEA600, 0xD3CD2980, 0xD3CBAD00, - 0xD3CA3080, 0xD3C8B400, 0xD3C73780, - 0xD3C5BB00, 0xD3C43E80, 0xD3C2C200, - 0xD3C14580, 0xD3BFC900, 0xD3BE4C80, - 0xD3BCD000, 0xD3BB5380, 0xD3B9D700, - 0xD3B85A80, 0xD3B6DE00, 0xD3B56180, - 0xD3B3E500, 0xD3B26880, 0xD3B0EC00, - 0xD3AF6F80, 0xD3ADF300, 0xD3AC7680, - 0xD3AAFA00, 0xD3A97D80, 0xD3A80100, - 0xD3A68480, 0xD3A50800, 0xD3A38B80, - 0xD3A20F00, 0xD3A09280, 0xD39F1600, - 0xD39D9980, 0xD39C1D00, 0xD39AA080, - 0xD3992400, 0xD397A780, 0xD3962B00, - 0xD394AE80, 0xD3933200, 0xD391B580, - 0xD3903900, 0xD38EBC80, 0xD38D4000, - 0xD38BC380, 0xD38A4700, 0xD388CA80, - 0xD3874E00, 0xD385D180, 0xD3845500, - 0xD382D880, 0xD3815C00, 0xD37FDF80, - 0xD37E6300, 0xD37CE680, 0xD37B6A00, - 0xD379ED80, 0xD3787100, 0xD376F480, - 0xD3757800, 0xD373FB80, 0xD3727F00, - 0xD3710280, 0xD36F8600, 0xD36E0980, - 0xD36C8D00, 0xD36B1080, 0xD3699400, - 0xD3681780, 0xD3669B00, 0xD3651E80, - 0xD363A200, 0xD3622580, 0xD360A900, - 0xD35F2C80, 0xD35DB000, 0xD35C3380, - 0xD35AB700, 0xD3593A80, 0xD357BE00, - 0xD3564180, 0xD354C500, 0xD3534880, - 0xD351CC00, 0xD3504F80, 0xD34ED300, - 0xD34D5680, 0xD34BDA00, 0xD34A5D80, - 0xD348E100, 0xD3476480, 0xD345E800, - 0xD3446B80, 0xD342EF00, 0xD3417280, - 0xD33FF600, 0xD33E7980, 0xD33CFD00, - 0xD33B8080, 0xD33A0400, 0xD3388780, - 0xD3370B00, 0xD3358E80, 0xD3341200, - 0xD3329580, 0xD3311900, 0xD32F9C80, - 0xD32E2000, 0xD32CA380, 0xD32B2700, - 0xD329AA80, 0xD3282E00, 0xD326B180, - 0xD3253500, 0xD323B880, 0xD3223C00, - 0xD320BF80, 0xD31F4300, 0xD31DC680, - 0xD31C4A00, 0xD31ACD80, 0xD3195100, - 0xD317D480, 0xD3165800, 0xD314DB80, - 0xD3135F00, 0xD311E280, 0xD3106600, - 0xD30EE980, 0xD30D6D00, 0xD30BF080, - 0xD30A7400, 0xD308F780, 0xD3077B00, - 0xD305FE80, 0xD3048200, 0xD3030580, - 0xD3018900, 0xD3000C80, 0xD2FE9000, - 0xD2FD1380, 0xD2FB9700, 0xD2FA1A80, - 0xD2F89E00, 0xD2F72180, 0xD2F5A500, - 0xD2F42880, 0xD2F2AC00, 0xD2F12F80, - 0xD2EFB300, 0xD2EE3680, 0xD2ECBA00, - 0xD2EB3D80, 0xD2E9C100, 0xD2E84480, - 0xD2E6C800, 0xD2E54B80, 0xD2E3CF00, - 0xD2E25280, 0xD2E0D600, 0xD2DF5980, - 0xD2DDDD00, 0xD2DC6080, 0xD2DAE400, - 0xD2D96780, 0xD2D7EB00, 0xD2D66E80, - 0xD2D4F200, 0xD2D37580, 0xD2D1F900, - 0xD2D07C80, 0xD2CF0000, 0xD2CD8380, - 0xD2CC0700, 0xD2CA8A80, 0xD2C90E00, - 0xD2C79180, 0xD2C61500, 0xD2C49880, - 0xD2C31C00, 0xD2C19F80, 0xD2C02300, - 0xD2BEA680, 0xD2BD2A00, 0xD2BBAD80, - 0xD2BA3100, 0xD2B8B480, 0xD2B73800, - 0xD2B5BB80, 0xD2B43F00, 0xD2B2C280, - 0xD2B14600, 0xD2AFC980, 0xD2AE4D00, - 0xD2ACD080, 0xD2AB5400, 0xD2A9D780, - 0xD2A85B00, 0xD2A6DE80, 0xD2A56200, - 0xD2A3E580, 0xD2A26900, 0xD2A0EC80, - 0xD29F7000, 0xD29DF380, 0xD29C7700, - 0xD29AFA80, 0xD2997E00, 0xD2980180, - 0xD2968500, 0xD2950880, 0xD2938C00, - 0xD2920F80, 0xD2909300, 0xD28F1680, - 0xD28D9A00, 0xD28C1D80, 0xD28AA100, - 0xD2892480, 0xD287A800, 0xD2862B80, - 0xD284AF00, 0xD2833280, 0xD281B600, - 0xD2803980, 0xD27EBD00, 0xD27D4080, - 0xD27BC400, 0xD27A4780, 0xD278CB00, - 0xD2774E80, 0xD275D200, 0xD2745580, - 0xD272D900, 0xD2715C80, 0xD26FE000, - 0xD26E6380, 0xD26CE700, 0xD26B6A80, - 0xD269EE00, 0xD2687180, 0xD266F500, - 0xD2657880, 0xD263FC00, 0xD2627F80, - 0xD2610300, 0xD25F8680, 0xD25E0A00, - 0xD25C8D80, 0xD25B1100, 0xD2599480, - 0xD2581800, 0xD2569B80, 0xD2551F00, - 0xD253A280, 0xD2522600, 0xD250A980, - 0xD24F2D00, 0xD24DB080, 0xD24C3400, - 0xD24AB780, 0xD2493B00, 0xD247BE80, - 0xD2464200, 0xD244C580, 0xD2434900, - 0xD241CC80, 0xD2405000, 0xD23ED380, - 0xD23D5700, 0xD23BDA80, 0xD23A5E00, - 0xD238E180, 0xD2376500, 0xD235E880, - 0xD2346C00, 0xD232EF80, 0xD2317300, - 0xD22FF680, 0xD22E7A00, 0xD22CFD80, - 0xD22B8100, 0xD22A0480, 0xD2288800, - 0xD2270B80, 0xD2258F00, 0xD2241280, - 0xD2229600, 0xD2211980, 0xD21F9D00, - 0xD21E2080, 0xD21CA400, 0xD21B2780, - 0xD219AB00, 0xD2182E80, 0xD216B200, - 0xD2153580, 0xD213B900, 0xD2123C80, - 0xD210C000, 0xD20F4380, 0xD20DC700, - 0xD20C4A80, 0xD20ACE00, 0xD2095180, - 0xD207D500, 0xD2065880, 0xD204DC00, - 0xD2035F80, 0xD201E300, 0xD2006680, - 0xD1FEEA00, 0xD1FD6D80, 0xD1FBF100, - 0xD1FA7480, 0xD1F8F800, 0xD1F77B80, - 0xD1F5FF00, 0xD1F48280, 0xD1F30600, - 0xD1F18980, 0xD1F00D00, 0xD1EE9080, - 0xD1ED1400, 0xD1EB9780, 0xD1EA1B00, - 0xD1E89E80, 0xD1E72200, 0xD1E5A580, - 0xD1E42900, 0xD1E2AC80, 0xD1E13000, - 0xD1DFB380, 0xD1DE3700, 0xD1DCBA80, - 0xD1DB3E00, 0xD1D9C180, 0xD1D84500, - 0xD1D6C880, 0xD1D54C00, 0xD1D3CF80, - 0xD1D25300, 0xD1D0D680, 0xD1CF5A00, - 0xD1CDDD80, 0xD1CC6100, 0xD1CAE480, - 0xD1C96800, 0xD1C7EB80, 0xD1C66F00, - 0xD1C4F280, 0xD1C37600, 0xD1C1F980, - 0xD1C07D00, 0xD1BF0080, 0xD1BD8400, - 0xD1BC0780, 0xD1BA8B00, 0xD1B90E80, - 0xD1B79200, 0xD1B61580, 0xD1B49900, - 0xD1B31C80, 0xD1B1A000, 0xD1B02380, - 0xD1AEA700, 0xD1AD2A80, 0xD1ABAE00, - 0xD1AA3180, 0xD1A8B500, 0xD1A73880, - 0xD1A5BC00, 0xD1A43F80, 0xD1A2C300, - 0xD1A14680, 0xD19FCA00, 0xD19E4D80, - 0xD19CD100, 0xD19B5480, 0xD199D800, - 0xD1985B80, 0xD196DF00, 0xD1956280, - 0xD193E600, 0xD1926980, 0xD190ED00, - 0xD18F7080, 0xD18DF400, 0xD18C7780, - 0xD18AFB00, 0xD1897E80, 0xD1880200, - 0xD1868580, 0xD1850900, 0xD1838C80, - 0xD1821000, 0xD1809380, 0xD17F1700, - 0xD17D9A80, 0xD17C1E00, 0xD17AA180, - 0xD1792500, 0xD177A880, 0xD1762C00, - 0xD174AF80, 0xD1733300, 0xD171B680, - 0xD1703A00, 0xD16EBD80, 0xD16D4100, - 0xD16BC480, 0xD16A4800, 0xD168CB80, - 0xD1674F00, 0xD165D280, 0xD1645600, - 0xD162D980, 0xD1615D00, 0xD15FE080, - 0xD15E6400, 0xD15CE780, 0xD15B6B00, - 0xD159EE80, 0xD1587200, 0xD156F580, - 0xD1557900, 0xD153FC80, 0xD1528000, - 0xD1510380, 0xD14F8700, 0xD14E0A80, - 0xD14C8E00, 0xD14B1180, 0xD1499500, - 0xD1481880, 0xD1469C00, 0xD1451F80, - 0xD143A300, 0xD1422680, 0xD140AA00, - 0xD13F2D80, 0xD13DB100, 0xD13C3480, - 0xD13AB800, 0xD1393B80, 0xD137BF00, - 0xD1364280, 0xD134C600, 0xD1334980, - 0xD131CD00, 0xD1305080, 0xD12ED400, - 0xD12D5780, 0xD12BDB00, 0xD12A5E80, - 0xD128E200, 0xD1276580, 0xD125E900, - 0xD1246C80, 0xD122F000, 0xD1217380, - 0xD11FF700, 0xD11E7A80, 0xD11CFE00, - 0xD11B8180, 0xD11A0500, 0xD1188880, - 0xD1170C00, 0xD1158F80, 0xD1141300, - 0xD1129680, 0xD1111A00, 0xD10F9D80, - 0xD10E2100, 0xD10CA480, 0xD10B2800, - 0xD109AB80, 0xD1082F00, 0xD106B280, - 0xD1053600, 0xD103B980, 0xD1023D00, - 0xD100C080, 0xD0FF4400, 0xD0FDC780, - 0xD0FC4B00, 0xD0FACE80, 0xD0F95200, - 0xD0F7D580, 0xD0F65900, 0xD0F4DC80, - 0xD0F36000, 0xD0F1E380, 0xD0F06700, - 0xD0EEEA80, 0xD0ED6E00, 0xD0EBF180, - 0xD0EA7500, 0xD0E8F880, 0xD0E77C00, - 0xD0E5FF80, 0xD0E48300, 0xD0E30680, - 0xD0E18A00, 0xD0E00D80, 0xD0DE9100, - 0xD0DD1480, 0xD0DB9800, 0xD0DA1B80, - 0xD0D89F00, 0xD0D72280, 0xD0D5A600, - 0xD0D42980, 0xD0D2AD00, 0xD0D13080, - 0xD0CFB400, 0xD0CE3780, 0xD0CCBB00, - 0xD0CB3E80, 0xD0C9C200, 0xD0C84580, - 0xD0C6C900, 0xD0C54C80, 0xD0C3D000, - 0xD0C25380, 0xD0C0D700, 0xD0BF5A80, - 0xD0BDDE00, 0xD0BC6180, 0xD0BAE500, - 0xD0B96880, 0xD0B7EC00, 0xD0B66F80, - 0xD0B4F300, 0xD0B37680, 0xD0B1FA00, - 0xD0B07D80, 0xD0AF0100, 0xD0AD8480, - 0xD0AC0800, 0xD0AA8B80, 0xD0A90F00, - 0xD0A79280, 0xD0A61600, 0xD0A49980, - 0xD0A31D00, 0xD0A1A080, 0xD0A02400, - 0xD09EA780, 0xD09D2B00, 0xD09BAE80, - 0xD09A3200, 0xD098B580, 0xD0973900, - 0xD095BC80, 0xD0944000, 0xD092C380, - 0xD0914700, 0xD08FCA80, 0xD08E4E00, - 0xD08CD180, 0xD08B5500, 0xD089D880, - 0xD0885C00, 0xD086DF80, 0xD0856300, - 0xD083E680, 0xD0826A00, 0xD080ED80, - 0xD07F7100, 0xD07DF480, 0xD07C7800, - 0xD07AFB80, 0xD0797F00, 0xD0780280, - 0xD0768600, 0xD0750980, 0xD0738D00, - 0xD0721080, 0xD0709400, 0xD06F1780, - 0xD06D9B00, 0xD06C1E80, 0xD06AA200, - 0xD0692580, 0xD067A900, 0xD0662C80, - 0xD064B000, 0xD0633380, 0xD061B700, - 0xD0603A80, 0xD05EBE00, 0xD05D4180, - 0xD05BC500, 0xD05A4880, 0xD058CC00, - 0xD0574F80, 0xD055D300, 0xD0545680, - 0xD052DA00, 0xD0515D80, 0xD04FE100, - 0xD04E6480, 0xD04CE800, 0xD04B6B80, - 0xD049EF00, 0xD0487280, 0xD046F600, - 0xD0457980, 0xD043FD00, 0xD0428080, - 0xD0410400, 0xD03F8780, 0xD03E0B00, - 0xD03C8E80, 0xD03B1200, 0xD0399580, - 0xD0381900, 0xD0369C80, 0xD0352000, - 0xD033A380, 0xD0322700, 0xD030AA80, - 0xD02F2E00, 0xD02DB180, 0xD02C3500, - 0xD02AB880, 0xD0293C00, 0xD027BF80, - 0xD0264300, 0xD024C680, 0xD0234A00, - 0xD021CD80, 0xD0205100, 0xD01ED480, - 0xD01D5800, 0xD01BDB80, 0xD01A5F00, - 0xD018E280, 0xD0176600, 0xD015E980, - 0xD0146D00, 0xD012F080, 0xD0117400, - 0xD00FF780, 0xD00E7B00, 0xD00CFE80, - 0xD00B8200, 0xD00A0580, 0xD0088900, - 0xD0070C80, 0xD0059000, 0xD0041380, - 0xD0029700, 0xD0011A80, 0xCFFF9E00, - 0xCFFE2180, 0xCFFCA500, 0xCFFB2880, - 0xCFF9AC00, 0xCFF82F80, 0xCFF6B300, - 0xCFF53680, 0xCFF3BA00, 0xCFF23D80, - 0xCFF0C100, 0xCFEF4480, 0xCFEDC800, - 0xCFEC4B80, 0xCFEACF00, 0xCFE95280, - 0xCFE7D600, 0xCFE65980, 0xCFE4DD00, - 0xCFE36080, 0xCFE1E400, 0xCFE06780, - 0xCFDEEB00, 0xCFDD6E80, 0xCFDBF200, - 0xCFDA7580, 0xCFD8F900, 0xCFD77C80, - 0xCFD60000, 0xCFD48380, 0xCFD30700, - 0xCFD18A80, 0xCFD00E00, 0xCFCE9180, - 0xCFCD1500, 0xCFCB9880, 0xCFCA1C00, - 0xCFC89F80, 0xCFC72300, 0xCFC5A680, - 0xCFC42A00, 0xCFC2AD80, 0xCFC13100, - 0xCFBFB480, 0xCFBE3800, 0xCFBCBB80, - 0xCFBB3F00, 0xCFB9C280, 0xCFB84600, - 0xCFB6C980, 0xCFB54D00, 0xCFB3D080, - 0xCFB25400, 0xCFB0D780, 0xCFAF5B00, - 0xCFADDE80, 0xCFAC6200, 0xCFAAE580, - 0xCFA96900, 0xCFA7EC80, 0xCFA67000, - 0xCFA4F380, 0xCFA37700, 0xCFA1FA80, - 0xCFA07E00, 0xCF9F0180, 0xCF9D8500, - 0xCF9C0880, 0xCF9A8C00, 0xCF990F80, - 0xCF979300, 0xCF961680, 0xCF949A00, - 0xCF931D80, 0xCF91A100, 0xCF902480, - 0xCF8EA800, 0xCF8D2B80, 0xCF8BAF00, - 0xCF8A3280, 0xCF88B600, 0xCF873980, - 0xCF85BD00, 0xCF844080, 0xCF82C400, - 0xCF814780, 0xCF7FCB00, 0xCF7E4E80, - 0xCF7CD200, 0xCF7B5580, 0xCF79D900, - 0xCF785C80, 0xCF76E000, 0xCF756380, - 0xCF73E700, 0xCF726A80, 0xCF70EE00, - 0xCF6F7180, 0xCF6DF500, 0xCF6C7880, - 0xCF6AFC00, 0xCF697F80, 0xCF680300, - 0xCF668680, 0xCF650A00, 0xCF638D80, - 0xCF621100, 0xCF609480, 0xCF5F1800, - 0xCF5D9B80, 0xCF5C1F00, 0xCF5AA280, - 0xCF592600, 0xCF57A980, 0xCF562D00, - 0xCF54B080, 0xCF533400, 0xCF51B780, - 0xCF503B00, 0xCF4EBE80, 0xCF4D4200, - 0xCF4BC580, 0xCF4A4900, 0xCF48CC80, - 0xCF475000, 0xCF45D380, 0xCF445700, - 0xCF42DA80, 0xCF415E00, 0xCF3FE180, - 0xCF3E6500, 0xCF3CE880, 0xCF3B6C00, - 0xCF39EF80, 0xCF387300, 0xCF36F680, - 0xCF357A00, 0xCF33FD80, 0xCF328100, - 0xCF310480, 0xCF2F8800, 0xCF2E0B80, - 0xCF2C8F00, 0xCF2B1280, 0xCF299600, - 0xCF281980, 0xCF269D00, 0xCF252080, - 0xCF23A400, 0xCF222780, 0xCF20AB00, - 0xCF1F2E80, 0xCF1DB200, 0xCF1C3580, - 0xCF1AB900, 0xCF193C80, 0xCF17C000, - 0xCF164380, 0xCF14C700, 0xCF134A80, - 0xCF11CE00, 0xCF105180, 0xCF0ED500, - 0xCF0D5880, 0xCF0BDC00, 0xCF0A5F80, - 0xCF08E300, 0xCF076680, 0xCF05EA00, - 0xCF046D80, 0xCF02F100, 0xCF017480, - 0xCEFFF800, 0xCEFE7B80, 0xCEFCFF00, - 0xCEFB8280, 0xCEFA0600, 0xCEF88980, - 0xCEF70D00, 0xCEF59080, 0xCEF41400, - 0xCEF29780, 0xCEF11B00, 0xCEEF9E80, - 0xCEEE2200, 0xCEECA580, 0xCEEB2900, - 0xCEE9AC80, 0xCEE83000, 0xCEE6B380, - 0xCEE53700, 0xCEE3BA80, 0xCEE23E00, - 0xCEE0C180, 0xCEDF4500, 0xCEDDC880, - 0xCEDC4C00, 0xCEDACF80, 0xCED95300, - 0xCED7D680, 0xCED65A00, 0xCED4DD80, - 0xCED36100, 0xCED1E480, 0xCED06800, - 0xCECEEB80, 0xCECD6F00, 0xCECBF280, - 0xCECA7600, 0xCEC8F980, 0xCEC77D00, - 0xCEC60080, 0xCEC48400, 0xCEC30780, - 0xCEC18B00, 0xCEC00E80, 0xCEBE9200, - 0xCEBD1580, 0xCEBB9900, 0xCEBA1C80, - 0xCEB8A000, 0xCEB72380, 0xCEB5A700, - 0xCEB42A80, 0xCEB2AE00, 0xCEB13180, - 0xCEAFB500, 0xCEAE3880, 0xCEACBC00, - 0xCEAB3F80, 0xCEA9C300, 0xCEA84680, - 0xCEA6CA00, 0xCEA54D80, 0xCEA3D100, - 0xCEA25480, 0xCEA0D800, 0xCE9F5B80, - 0xCE9DDF00, 0xCE9C6280, 0xCE9AE600, - 0xCE996980, 0xCE97ED00, 0xCE967080, - 0xCE94F400, 0xCE937780, 0xCE91FB00, - 0xCE907E80, 0xCE8F0200, 0xCE8D8580, - 0xCE8C0900, 0xCE8A8C80, 0xCE891000, - 0xCE879380, 0xCE861700, 0xCE849A80, - 0xCE831E00, 0xCE81A180, 0xCE802500, - 0xCE7EA880, 0xCE7D2C00, 0xCE7BAF80, - 0xCE7A3300, 0xCE78B680, 0xCE773A00, - 0xCE75BD80, 0xCE744100, 0xCE72C480, - 0xCE714800, 0xCE6FCB80, 0xCE6E4F00, - 0xCE6CD280, 0xCE6B5600, 0xCE69D980, - 0xCE685D00, 0xCE66E080, 0xCE656400, - 0xCE63E780, 0xCE626B00, 0xCE60EE80, - 0xCE5F7200, 0xCE5DF580, 0xCE5C7900, - 0xCE5AFC80, 0xCE598000, 0xCE580380, - 0xCE568700, 0xCE550A80, 0xCE538E00, - 0xCE521180, 0xCE509500, 0xCE4F1880, - 0xCE4D9C00, 0xCE4C1F80, 0xCE4AA300, - 0xCE492680, 0xCE47AA00, 0xCE462D80, - 0xCE44B100, 0xCE433480, 0xCE41B800, - 0xCE403B80, 0xCE3EBF00, 0xCE3D4280, - 0xCE3BC600, 0xCE3A4980, 0xCE38CD00, - 0xCE375080, 0xCE35D400, 0xCE345780, - 0xCE32DB00, 0xCE315E80, 0xCE2FE200, - 0xCE2E6580, 0xCE2CE900, 0xCE2B6C80, - 0xCE29F000, 0xCE287380, 0xCE26F700, - 0xCE257A80, 0xCE23FE00, 0xCE228180, - 0xCE210500, 0xCE1F8880, 0xCE1E0C00, - 0xCE1C8F80, 0xCE1B1300, 0xCE199680, - 0xCE181A00, 0xCE169D80, 0xCE152100, - 0xCE13A480, 0xCE122800, 0xCE10AB80, - 0xCE0F2F00, 0xCE0DB280, 0xCE0C3600, - 0xCE0AB980, 0xCE093D00, 0xCE07C080, - 0xCE064400, 0xCE04C780, 0xCE034B00, - 0xCE01CE80, 0xCE005200, 0xCDFED580, - 0xCDFD5900, 0xCDFBDC80, 0xCDFA6000, - 0xCDF8E380, 0xCDF76700, 0xCDF5EA80, - 0xCDF46E00, 0xCDF2F180, 0xCDF17500, - 0xCDEFF880, 0xCDEE7C00, 0xCDECFF80, - 0xCDEB8300, 0xCDEA0680, 0xCDE88A00, - 0xCDE70D80, 0xCDE59100, 0xCDE41480, - 0xCDE29800, 0xCDE11B80, 0xCDDF9F00, - 0xCDDE2280, 0xCDDCA600, 0xCDDB2980, - 0xCDD9AD00, 0xCDD83080, 0xCDD6B400, - 0xCDD53780, 0xCDD3BB00, 0xCDD23E80, - 0xCDD0C200, 0xCDCF4580, 0xCDCDC900, - 0xCDCC4C80, 0xCDCAD000, 0xCDC95380, - 0xCDC7D700, 0xCDC65A80, 0xCDC4DE00, - 0xCDC36180, 0xCDC1E500, 0xCDC06880, - 0xCDBEEC00, 0xCDBD6F80, 0xCDBBF300, - 0xCDBA7680, 0xCDB8FA00, 0xCDB77D80, - 0xCDB60100, 0xCDB48480, 0xCDB30800, - 0xCDB18B80, 0xCDB00F00, 0xCDAE9280, - 0xCDAD1600, 0xCDAB9980, 0xCDAA1D00, - 0xCDA8A080, 0xCDA72400, 0xCDA5A780, - 0xCDA42B00, 0xCDA2AE80, 0xCDA13200, - 0xCD9FB580, 0xCD9E3900, 0xCD9CBC80, - 0xCD9B4000, 0xCD99C380, 0xCD984700, - 0xCD96CA80, 0xCD954E00, 0xCD93D180, - 0xCD925500, 0xCD90D880, 0xCD8F5C00, - 0xCD8DDF80, 0xCD8C6300, 0xCD8AE680, - 0xCD896A00, 0xCD87ED80, 0xCD867100, - 0xCD84F480, 0xCD837800, 0xCD81FB80, - 0xCD807F00, 0xCD7F0280, 0xCD7D8600, - 0xCD7C0980, 0xCD7A8D00, 0xCD791080, - 0xCD779400, 0xCD761780, 0xCD749B00, - 0xCD731E80, 0xCD71A200, 0xCD702580, - 0xCD6EA900, 0xCD6D2C80, 0xCD6BB000, - 0xCD6A3380, 0xCD68B700, 0xCD673A80, - 0xCD65BE00, 0xCD644180, 0xCD62C500, - 0xCD614880, 0xCD5FCC00, 0xCD5E4F80, - 0xCD5CD300, 0xCD5B5680, 0xCD59DA00, - 0xCD585D80, 0xCD56E100, 0xCD556480, - 0xCD53E800, 0xCD526B80, 0xCD50EF00, - 0xCD4F7280, 0xCD4DF600, 0xCD4C7980, - 0xCD4AFD00, 0xCD498080, 0xCD480400, - 0xCD468780, 0xCD450B00, 0xCD438E80, - 0xCD421200, 0xCD409580, 0xCD3F1900, - 0xCD3D9C80, 0xCD3C2000, 0xCD3AA380, - 0xCD392700, 0xCD37AA80, 0xCD362E00, - 0xCD34B180, 0xCD333500, 0xCD31B880, - 0xCD303C00, 0xCD2EBF80, 0xCD2D4300, - 0xCD2BC680, 0xCD2A4A00, 0xCD28CD80, - 0xCD275100, 0xCD25D480, 0xCD245800, - 0xCD22DB80, 0xCD215F00, 0xCD1FE280, - 0xCD1E6600, 0xCD1CE980, 0xCD1B6D00, - 0xCD19F080, 0xCD187400, 0xCD16F780, - 0xCD157B00, 0xCD13FE80, 0xCD128200, - 0xCD110580, 0xCD0F8900, 0xCD0E0C80, - 0xCD0C9000, 0xCD0B1380, 0xCD099700, - 0xCD081A80, 0xCD069E00, 0xCD052180, - 0xCD03A500, 0xCD022880, 0xCD00AC00, - 0xCCFF2F80, 0xCCFDB300, 0xCCFC3680, - 0xCCFABA00, 0xCCF93D80, 0xCCF7C100, - 0xCCF64480, 0xCCF4C800, 0xCCF34B80, - 0xCCF1CF00, 0xCCF05280, 0xCCEED600, - 0xCCED5980, 0xCCEBDD00, 0xCCEA6080, - 0xCCE8E400, 0xCCE76780, 0xCCE5EB00, - 0xCCE46E80, 0xCCE2F200, 0xCCE17580, - 0xCCDFF900, 0xCCDE7C80, 0xCCDD0000, - 0xCCDB8380, 0xCCDA0700, 0xCCD88A80, - 0xCCD70E00, 0xCCD59180, 0xCCD41500, - 0xCCD29880, 0xCCD11C00, 0xCCCF9F80, - 0xCCCE2300, 0xCCCCA680, 0xCCCB2A00, - 0xCCC9AD80, 0xCCC83100, 0xCCC6B480, - 0xCCC53800, 0xCCC3BB80, 0xCCC23F00, - 0xCCC0C280, 0xCCBF4600, 0xCCBDC980, - 0xCCBC4D00, 0xCCBAD080, 0xCCB95400, - 0xCCB7D780, 0xCCB65B00, 0xCCB4DE80, - 0xCCB36200, 0xCCB1E580, 0xCCB06900, - 0xCCAEEC80, 0xCCAD7000, 0xCCABF380, - 0xCCAA7700, 0xCCA8FA80, 0xCCA77E00, - 0xCCA60180, 0xCCA48500, 0xCCA30880, - 0xCCA18C00, 0xCCA00F80, 0xCC9E9300, - 0xCC9D1680, 0xCC9B9A00, 0xCC9A1D80, - 0xCC98A100, 0xCC972480, 0xCC95A800, - 0xCC942B80, 0xCC92AF00, 0xCC913280, - 0xCC8FB600, 0xCC8E3980, 0xCC8CBD00, - 0xCC8B4080, 0xCC89C400, 0xCC884780, - 0xCC86CB00, 0xCC854E80, 0xCC83D200, - 0xCC825580, 0xCC80D900, 0xCC7F5C80, - 0xCC7DE000, 0xCC7C6380, 0xCC7AE700, - 0xCC796A80, 0xCC77EE00, 0xCC767180, - 0xCC74F500, 0xCC737880, 0xCC71FC00, - 0xCC707F80, 0xCC6F0300, 0xCC6D8680, - 0xCC6C0A00, 0xCC6A8D80, 0xCC691100, - 0xCC679480, 0xCC661800, 0xCC649B80, - 0xCC631F00, 0xCC61A280, 0xCC602600, - 0xCC5EA980, 0xCC5D2D00, 0xCC5BB080, - 0xCC5A3400, 0xCC58B780, 0xCC573B00, - 0xCC55BE80, 0xCC544200, 0xCC52C580, - 0xCC514900, 0xCC4FCC80, 0xCC4E5000, - 0xCC4CD380, 0xCC4B5700, 0xCC49DA80, - 0xCC485E00, 0xCC46E180, 0xCC456500, - 0xCC43E880, 0xCC426C00, 0xCC40EF80, - 0xCC3F7300, 0xCC3DF680, 0xCC3C7A00, - 0xCC3AFD80, 0xCC398100, 0xCC380480, - 0xCC368800, 0xCC350B80, 0xCC338F00, - 0xCC321280, 0xCC309600, 0xCC2F1980, - 0xCC2D9D00, 0xCC2C2080, 0xCC2AA400, - 0xCC292780, 0xCC27AB00, 0xCC262E80, - 0xCC24B200, 0xCC233580, 0xCC21B900, - 0xCC203C80, 0xCC1EC000, 0xCC1D4380, - 0xCC1BC700, 0xCC1A4A80, 0xCC18CE00, - 0xCC175180, 0xCC15D500, 0xCC145880, - 0xCC12DC00, 0xCC115F80, 0xCC0FE300, - 0xCC0E6680, 0xCC0CEA00, 0xCC0B6D80, - 0xCC09F100, 0xCC087480, 0xCC06F800, - 0xCC057B80, 0xCC03FF00, 0xCC028280, - 0xCC010600, 0xCBFF8980, 0xCBFE0D00, - 0xCBFC9080, 0xCBFB1400, 0xCBF99780, - 0xCBF81B00, 0xCBF69E80, 0xCBF52200, - 0xCBF3A580, 0xCBF22900, 0xCBF0AC80, - 0xCBEF3000, 0xCBEDB380, 0xCBEC3700, - 0xCBEABA80, 0xCBE93E00, 0xCBE7C180, - 0xCBE64500, 0xCBE4C880, 0xCBE34C00, - 0xCBE1CF80, 0xCBE05300, 0xCBDED680, - 0xCBDD5A00, 0xCBDBDD80, 0xCBDA6100, - 0xCBD8E480, 0xCBD76800, 0xCBD5EB80, - 0xCBD46F00, 0xCBD2F280, 0xCBD17600, - 0xCBCFF980, 0xCBCE7D00, 0xCBCD0080, - 0xCBCB8400, 0xCBCA0780, 0xCBC88B00, - 0xCBC70E80, 0xCBC59200, 0xCBC41580, - 0xCBC29900, 0xCBC11C80, 0xCBBFA000, - 0xCBBE2380, 0xCBBCA700, 0xCBBB2A80, - 0xCBB9AE00, 0xCBB83180, 0xCBB6B500, - 0xCBB53880, 0xCBB3BC00, 0xCBB23F80, - 0xCBB0C300, 0xCBAF4680, 0xCBADCA00, - 0xCBAC4D80, 0xCBAAD100, 0xCBA95480, - 0xCBA7D800, 0xCBA65B80, 0xCBA4DF00, - 0xCBA36280, 0xCBA1E600, 0xCBA06980, - 0xCB9EED00, 0xCB9D7080, 0xCB9BF400, - 0xCB9A7780, 0xCB98FB00, 0xCB977E80, - 0xCB960200, 0xCB948580, 0xCB930900, - 0xCB918C80, 0xCB901000, 0xCB8E9380, - 0xCB8D1700, 0xCB8B9A80, 0xCB8A1E00, - 0xCB88A180, 0xCB872500, 0xCB85A880, - 0xCB842C00, 0xCB82AF80, 0xCB813300, - 0xCB7FB680, 0xCB7E3A00, 0xCB7CBD80, - 0xCB7B4100, 0xCB79C480, 0xCB784800, - 0xCB76CB80, 0xCB754F00, 0xCB73D280, - 0xCB725600, 0xCB70D980, 0xCB6F5D00, - 0xCB6DE080, 0xCB6C6400, 0xCB6AE780, - 0xCB696B00, 0xCB67EE80, 0xCB667200, - 0xCB64F580, 0xCB637900, 0xCB61FC80, - 0xCB608000, 0xCB5F0380, 0xCB5D8700, - 0xCB5C0A80, 0xCB5A8E00, 0xCB591180, - 0xCB579500, 0xCB561880, 0xCB549C00, - 0xCB531F80, 0xCB51A300, 0xCB502680, - 0xCB4EAA00, 0xCB4D2D80, 0xCB4BB100, - 0xCB4A3480, 0xCB48B800, 0xCB473B80, - 0xCB45BF00, 0xCB444280, 0xCB42C600, - 0xCB414980, 0xCB3FCD00, 0xCB3E5080, - 0xCB3CD400, 0xCB3B5780, 0xCB39DB00, - 0xCB385E80, 0xCB36E200, 0xCB356580, - 0xCB33E900, 0xCB326C80, 0xCB30F000, - 0xCB2F7380, 0xCB2DF700, 0xCB2C7A80, - 0xCB2AFE00, 0xCB298180, 0xCB280500, - 0xCB268880, 0xCB250C00, 0xCB238F80, - 0xCB221300, 0xCB209680, 0xCB1F1A00, - 0xCB1D9D80, 0xCB1C2100, 0xCB1AA480, - 0xCB192800, 0xCB17AB80, 0xCB162F00, - 0xCB14B280, 0xCB133600, 0xCB11B980, - 0xCB103D00, 0xCB0EC080, 0xCB0D4400, - 0xCB0BC780, 0xCB0A4B00, 0xCB08CE80, - 0xCB075200, 0xCB05D580, 0xCB045900, - 0xCB02DC80, 0xCB016000, 0xCAFFE380, - 0xCAFE6700, 0xCAFCEA80, 0xCAFB6E00, - 0xCAF9F180, 0xCAF87500, 0xCAF6F880, - 0xCAF57C00, 0xCAF3FF80, 0xCAF28300, - 0xCAF10680, 0xCAEF8A00, 0xCAEE0D80, - 0xCAEC9100, 0xCAEB1480, 0xCAE99800, - 0xCAE81B80, 0xCAE69F00, 0xCAE52280, - 0xCAE3A600, 0xCAE22980, 0xCAE0AD00, - 0xCADF3080, 0xCADDB400, 0xCADC3780, - 0xCADABB00, 0xCAD93E80, 0xCAD7C200, - 0xCAD64580, 0xCAD4C900, 0xCAD34C80, - 0xCAD1D000, 0xCAD05380, 0xCACED700, - 0xCACD5A80, 0xCACBDE00, 0xCACA6180, - 0xCAC8E500, 0xCAC76880, 0xCAC5EC00, - 0xCAC46F80, 0xCAC2F300, 0xCAC17680, - 0xCABFFA00, 0xCABE7D80, 0xCABD0100, - 0xCABB8480, 0xCABA0800, 0xCAB88B80, - 0xCAB70F00, 0xCAB59280, 0xCAB41600, - 0xCAB29980, 0xCAB11D00, 0xCAAFA080, - 0xCAAE2400, 0xCAACA780, 0xCAAB2B00, - 0xCAA9AE80, 0xCAA83200, 0xCAA6B580, - 0xCAA53900, 0xCAA3BC80, 0xCAA24000, - 0xCAA0C380, 0xCA9F4700, 0xCA9DCA80, - 0xCA9C4E00, 0xCA9AD180, 0xCA995500, - 0xCA97D880, 0xCA965C00, 0xCA94DF80, - 0xCA936300, 0xCA91E680, 0xCA906A00, - 0xCA8EED80, 0xCA8D7100, 0xCA8BF480, - 0xCA8A7800, 0xCA88FB80, 0xCA877F00, - 0xCA860280, 0xCA848600, 0xCA830980, - 0xCA818D00, 0xCA801080, 0xCA7E9400, - 0xCA7D1780, 0xCA7B9B00, 0xCA7A1E80, - 0xCA78A200, 0xCA772580, 0xCA75A900, - 0xCA742C80, 0xCA72B000, 0xCA713380, - 0xCA6FB700, 0xCA6E3A80, 0xCA6CBE00, - 0xCA6B4180, 0xCA69C500, 0xCA684880, - 0xCA66CC00, 0xCA654F80, 0xCA63D300, - 0xCA625680, 0xCA60DA00, 0xCA5F5D80, - 0xCA5DE100, 0xCA5C6480, 0xCA5AE800, - 0xCA596B80, 0xCA57EF00, 0xCA567280, - 0xCA54F600, 0xCA537980, 0xCA51FD00, - 0xCA508080, 0xCA4F0400, 0xCA4D8780, - 0xCA4C0B00, 0xCA4A8E80, 0xCA491200, - 0xCA479580, 0xCA461900, 0xCA449C80, - 0xCA432000, 0xCA41A380, 0xCA402700, - 0xCA3EAA80, 0xCA3D2E00, 0xCA3BB180, - 0xCA3A3500, 0xCA38B880, 0xCA373C00, - 0xCA35BF80, 0xCA344300, 0xCA32C680, - 0xCA314A00, 0xCA2FCD80, 0xCA2E5100, - 0xCA2CD480, 0xCA2B5800, 0xCA29DB80, - 0xCA285F00, 0xCA26E280, 0xCA256600, - 0xCA23E980, 0xCA226D00, 0xCA20F080, - 0xCA1F7400, 0xCA1DF780, 0xCA1C7B00, - 0xCA1AFE80, 0xCA198200, 0xCA180580, - 0xCA168900, 0xCA150C80, 0xCA139000, - 0xCA121380, 0xCA109700, 0xCA0F1A80, - 0xCA0D9E00, 0xCA0C2180, 0xCA0AA500, - 0xCA092880, 0xCA07AC00, 0xCA062F80, - 0xCA04B300, 0xCA033680, 0xCA01BA00, - 0xCA003D80, 0xC9FEC100, 0xC9FD4480, - 0xC9FBC800, 0xC9FA4B80, 0xC9F8CF00, - 0xC9F75280, 0xC9F5D600, 0xC9F45980, - 0xC9F2DD00, 0xC9F16080, 0xC9EFE400, - 0xC9EE6780, 0xC9ECEB00, 0xC9EB6E80, - 0xC9E9F200, 0xC9E87580, 0xC9E6F900, - 0xC9E57C80, 0xC9E40000, 0xC9E29F00, - 0xC9E13E00, 0xC9DFDD00, 0xC9DE7C00, - 0xC9DD1B00, 0xC9DBBA00, 0xC9DA5900, - 0xC9D8F800, 0xC9D79700, 0xC9D63600, - 0xC9D4D500, 0xC9D37400, 0xC9D21300, - 0xC9D0B200, 0xC9CF5100, 0xC9CDF000, - 0xC9CC8F00, 0xC9CB2E00, 0xC9C9CD00, - 0xC9C86C00, 0xC9C70B00, 0xC9C5AA00, - 0xC9C44900, 0xC9C2E800, 0xC9C18700, - 0xC9C02600, 0xC9BEC500, 0xC9BD6400, - 0xC9BC0300, 0xC9BAA200, 0xC9B94100, - 0xC9B7E000, 0xC9B67F00, 0xC9B51E00, - 0xC9B3BD00, 0xC9B25C00, 0xC9B0FB00, - 0xC9AF9A00, 0xC9AE3900, 0xC9ACD800, - 0xC9AB7700, 0xC9AA1600, 0xC9A8B500, - 0xC9A75400, 0xC9A5F300, 0xC9A49200, - 0xC9A33100, 0xC9A1D000, 0xC9A06F00, - 0xC99F0E00, 0xC99DAD00, 0xC99C4C00, - 0xC99AEB00, 0xC9998A00, 0xC9982900, - 0xC996C800, 0xC9956700, 0xC9940600, - 0xC992A500, 0xC9914400, 0xC98FE300, - 0xC98E8200, 0xC98D2100, 0xC98BC000, - 0xC98A5F00, 0xC988FE00, 0xC9879D00, - 0xC9863C00, 0xC984DB00, 0xC9837A00, - 0xC9821900, 0xC980B800, 0xC97F5700, - 0xC97DF600, 0xC97C9500, 0xC97B3400, - 0xC979D300, 0xC9787200, 0xC9771100, - 0xC975B000, 0xC9744F00, 0xC972EE00, - 0xC9718D00, 0xC9702C00, 0xC96ECB00, - 0xC96D6A00, 0xC96C0900, 0xC96AA800, - 0xC9694700, 0xC967E600, 0xC9668500, - 0xC9652400, 0xC963C300, 0xC9626200, - 0xC9610100, 0xC95FA000, 0xC95E3F00, - 0xC95CDE00, 0xC95B7D00, 0xC95A1C00, - 0xC958BB00, 0xC9575A00, 0xC955F900, - 0xC9549800, 0xC9533700, 0xC951D600, - 0xC9507500, 0xC94F1400, 0xC94DB300, - 0xC94C5200, 0xC94AF100, 0xC9499000, - 0xC9482F00, 0xC946CE00, 0xC9456D00, - 0xC9440C00, 0xC942AB00, 0xC9414A00, - 0xC93FE900, 0xC93E8800, 0xC93D2700, - 0xC93BC600, 0xC93A6500, 0xC9390400, - 0xC937A300, 0xC9364200, 0xC934E100, - 0xC9338000, 0xC9321F00, 0xC930BE00, - 0xC92F5D00, 0xC92DFC00, 0xC92C9B00, - 0xC92B3A00, 0xC929D900, 0xC9287800, - 0xC9271700, 0xC925B600, 0xC9245500, - 0xC922F400, 0xC9219300, 0xC9203200, - 0xC91ED100, 0xC91D7000, 0xC91C0F00, - 0xC91AAE00, 0xC9194D00, 0xC917EC00, - 0xC9168B00, 0xC9152A00, 0xC913C900, - 0xC9126800, 0xC9110700, 0xC90FA600, - 0xC90E4500, 0xC90CE400, 0xC90B8300, - 0xC90A2200, 0xC908C100, 0xC9076000, - 0xC905FF00, 0xC9049E00, 0xC9033D00, - 0xC901DC00, 0xC9007B00, 0xC8FF1A00, - 0xC8FDB900, 0xC8FC5800, 0xC8FAF700, - 0xC8F99600, 0xC8F83500, 0xC8F6D400, - 0xC8F57300, 0xC8F41200, 0xC8F2B100, - 0xC8F15000, 0xC8EFEF00, 0xC8EE8E00, - 0xC8ED2D00, 0xC8EBCC00, 0xC8EA6B00, - 0xC8E90A00, 0xC8E7A900, 0xC8E64800, - 0xC8E4E700, 0xC8E38600, 0xC8E22500, - 0xC8E0C400, 0xC8DF6300, 0xC8DE0200, - 0xC8DCA100, 0xC8DB4000, 0xC8D9DF00, - 0xC8D87E00, 0xC8D71D00, 0xC8D5BC00, - 0xC8D45B00, 0xC8D2FA00, 0xC8D19900, - 0xC8D03800, 0xC8CED700, 0xC8CD7600, - 0xC8CC1500, 0xC8CAB400, 0xC8C95300, - 0xC8C7F200, 0xC8C69100, 0xC8C53000, - 0xC8C3CF00, 0xC8C26E00, 0xC8C10D00, - 0xC8BFAC00, 0xC8BE4B00, 0xC8BCEA00, - 0xC8BB8900, 0xC8BA2800, 0xC8B8C700, - 0xC8B76600, 0xC8B60500, 0xC8B4A400, - 0xC8B34300, 0xC8B1E200, 0xC8B08100, - 0xC8AF2000, 0xC8ADBF00, 0xC8AC5E00, - 0xC8AAFD00, 0xC8A99C00, 0xC8A83B00, - 0xC8A6DA00, 0xC8A57900, 0xC8A41800, - 0xC8A2B700, 0xC8A15600, 0xC89FF500, - 0xC89E9400, 0xC89D3300, 0xC89BD200, - 0xC89A7100, 0xC8991000, 0xC897AF00, - 0xC8964E00, 0xC894ED00, 0xC8938C00, - 0xC8922B00, 0xC890CA00, 0xC88F6900, - 0xC88E0800, 0xC88CA700, 0xC88B4600, - 0xC889E500, 0xC8888400, 0xC8872300, - 0xC885C200, 0xC8846100, 0xC8830000, - 0xC8819F00, 0xC8803E00, 0xC87EDD00, - 0xC87D7C00, 0xC87C1B00, 0xC87ABA00, - 0xC8795900, 0xC877F800, 0xC8769700, - 0xC8753600, 0xC873D500, 0xC8727400, - 0xC8711300, 0xC86FB200, 0xC86E5100, - 0xC86CF000, 0xC86B8F00, 0xC86A2E00, - 0xC868CD00, 0xC8676C00, 0xC8660B00, - 0xC864AA00, 0xC8634900, 0xC861E800, - 0xC8608700, 0xC85F2600, 0xC85DC500, - 0xC85C6400, 0xC85B0300, 0xC859A200, - 0xC8584100, 0xC856E000, 0xC8557F00, - 0xC8541E00, 0xC852BD00, 0xC8515C00, - 0xC84FFB00, 0xC84E9A00, 0xC84D3900, - 0xC84BD800, 0xC84A7700, 0xC8491600, - 0xC847B500, 0xC8465400, 0xC844F300, - 0xC8439200, 0xC8423100, 0xC840D000, - 0xC83F6F00, 0xC83E0E00, 0xC83CAD00, - 0xC83B4C00, 0xC839EB00, 0xC8388A00, - 0xC8372900, 0xC835C800, 0xC8346700, - 0xC8330600, 0xC831A500, 0xC8304400, - 0xC82EE300, 0xC82D8200, 0xC82C2100, - 0xC82AC000, 0xC8295F00, 0xC827FE00, - 0xC8269D00, 0xC8253C00, 0xC823DB00, - 0xC8227A00, 0xC8211900, 0xC81FB800, - 0xC81E5700, 0xC81CF600, 0xC81B9500, - 0xC81A3400, 0xC818D300, 0xC8177200, - 0xC8161100, 0xC814B000, 0xC8134F00, - 0xC811EE00, 0xC8108D00, 0xC80F2C00, - 0xC80DCB00, 0xC80C6A00, 0xC80B0900, - 0xC809A800, 0xC8084700, 0xC806E600, - 0xC8058500, 0xC8042400, 0xC802C300, - 0xC8016200, 0xC8000100, 0xC7FEA000, - 0xC7FD3F00, 0xC7FBDE00, 0xC7FA7D00, - 0xC7F91C00, 0xC7F7BB00, 0xC7F65A00, - 0xC7F4F900, 0xC7F39800, 0xC7F23700, - 0xC7F0D600, 0xC7EF7500, 0xC7EE1400, - 0xC7ECB300, 0xC7EB5200, 0xC7E9F100, - 0xC7E89000, 0xC7E72F00, 0xC7E5CE00, - 0xC7E46D00, 0xC7E30C00, 0xC7E1AB00, - 0xC7E04A00, 0xC7DEE900, 0xC7DD8800, - 0xC7DC2700, 0xC7DAC600, 0xC7D96500, - 0xC7D80400, 0xC7D6A300, 0xC7D54200, - 0xC7D3E100, 0xC7D28000, 0xC7D11F00, - 0xC7CFBE00, 0xC7CE5D00, 0xC7CCFC00, - 0xC7CB9B00, 0xC7CA3A00, 0xC7C8D900, - 0xC7C77800, 0xC7C61700, 0xC7C4B600, - 0xC7C35500, 0xC7C1F400, 0xC7C09300, - 0xC7BF3200, 0xC7BDD100, 0xC7BC7000, - 0xC7BB0F00, 0xC7B9AE00, 0xC7B84D00, - 0xC7B6EC00, 0xC7B58B00, 0xC7B42A00, - 0xC7B2C900, 0xC7B16800, 0xC7B00700, - 0xC7AEA600, 0xC7AD4500, 0xC7ABE400, - 0xC7AA8300, 0xC7A92200, 0xC7A7C100, - 0xC7A66000, 0xC7A4FF00, 0xC7A39E00, - 0xC7A23D00, 0xC7A0DC00, 0xC79F7B00, - 0xC79E1A00, 0xC79CB900, 0xC79B5800, - 0xC799F700, 0xC7989600, 0xC7973500, - 0xC795D400, 0xC7947300, 0xC7931200, - 0xC791B100, 0xC7905000, 0xC78EEF00, - 0xC78D8E00, 0xC78C2D00, 0xC78ACC00, - 0xC7896B00, 0xC7880A00, 0xC786A900, - 0xC7854800, 0xC783E700, 0xC7828600, - 0xC7812500, 0xC77FC400, 0xC77E6300, - 0xC77D0200, 0xC77BA100, 0xC77A4000, - 0xC778DF00, 0xC7777E00, 0xC7761D00, - 0xC774BC00, 0xC7735B00, 0xC771FA00, - 0xC7709900, 0xC76F3800, 0xC76DD700, - 0xC76C7600, 0xC76B1500, 0xC769B400, - 0xC7685300, 0xC766F200, 0xC7659100, - 0xC7643000, 0xC762CF00, 0xC7616E00, - 0xC7600D00, 0xC75EAC00, 0xC75D4B00, - 0xC75BEA00, 0xC75A8900, 0xC7592800, - 0xC757C700, 0xC7566600, 0xC7550500, - 0xC753A400, 0xC7524300, 0xC750E200, - 0xC74F8100, 0xC74E2000, 0xC74CBF00, - 0xC74B5E00, 0xC749FD00, 0xC7489C00, - 0xC7473B00, 0xC745DA00, 0xC7447900, - 0xC7431800, 0xC741B700, 0xC7405600, - 0xC73EF500, 0xC73D9400, 0xC73C3300, - 0xC73AD200, 0xC7397100, 0xC7381000, - 0xC736AF00, 0xC7354E00, 0xC733ED00, - 0xC7328C00, 0xC7312B00, 0xC72FCA00, - 0xC72E6900, 0xC72D0800, 0xC72BA700, - 0xC72A4600, 0xC728E500, 0xC7278400, - 0xC7262300, 0xC724C200, 0xC7236100, - 0xC7220000, 0xC7209F00, 0xC71F3E00, - 0xC71DDD00, 0xC71C7C00, 0xC71B1B00, - 0xC719BA00, 0xC7185900, 0xC716F800, - 0xC7159700, 0xC7143600, 0xC712D500, - 0xC7117400, 0xC7101300, 0xC70EB200, - 0xC70D5100, 0xC70BF000, 0xC70A8F00, - 0xC7092E00, 0xC707CD00, 0xC7066C00, - 0xC7050B00, 0xC703AA00, 0xC7024900, - 0xC700E800, 0xC6FF8700, 0xC6FE2600, - 0xC6FCC500, 0xC6FB6400, 0xC6FA0300, - 0xC6F8A200, 0xC6F74100, 0xC6F5E000, - 0xC6F47F00, 0xC6F31E00, 0xC6F1BD00, - 0xC6F05C00, 0xC6EEFB00, 0xC6ED9A00, - 0xC6EC3900, 0xC6EAD800, 0xC6E97700, - 0xC6E81600, 0xC6E6B500, 0xC6E55400, - 0xC6E3F300, 0xC6E29200, 0xC6E13100, - 0xC6DFD000, 0xC6DE6F00, 0xC6DD0E00, - 0xC6DBAD00, 0xC6DA4C00, 0xC6D8EB00, - 0xC6D78A00, 0xC6D62900, 0xC6D4C800, - 0xC6D36700, 0xC6D20600, 0xC6D0A500, - 0xC6CF4400, 0xC6CDE300, 0xC6CC8200, - 0xC6CB2100, 0xC6C9C000, 0xC6C85F00, - 0xC6C6FE00, 0xC6C59D00, 0xC6C43C00, - 0xC6C2DB00, 0xC6C17A00, 0xC6C01900, - 0xC6BEB800, 0xC6BD5700, 0xC6BBF600, - 0xC6BA9500, 0xC6B93400, 0xC6B7D300, - 0xC6B67200, 0xC6B51100, 0xC6B3B000, - 0xC6B24F00, 0xC6B0EE00, 0xC6AF8D00, - 0xC6AE2C00, 0xC6ACCB00, 0xC6AB6A00, - 0xC6AA0900, 0xC6A8A800, 0xC6A74700, - 0xC6A5E600, 0xC6A48500, 0xC6A32400, - 0xC6A1C300, 0xC6A06200, 0xC69F0100, - 0xC69DA000, 0xC69C3F00, 0xC69ADE00, - 0xC6997D00, 0xC6981C00, 0xC696BB00, - 0xC6955A00, 0xC693F900, 0xC6929800, - 0xC6913700, 0xC68FD600, 0xC68E7500, - 0xC68D1400, 0xC68BB300, 0xC68A5200, - 0xC688F100, 0xC6879000, 0xC6862F00, - 0xC684CE00, 0xC6836D00, 0xC6820C00, - 0xC680AB00, 0xC67F4A00, 0xC67DE900, - 0xC67C8800, 0xC67B2700, 0xC679C600, - 0xC6786500, 0xC6770400, 0xC675A300, - 0xC6744200, 0xC672E100, 0xC6718000, - 0xC6701F00, 0xC66EBE00, 0xC66D5D00, - 0xC66BFC00, 0xC66A9B00, 0xC6693A00, - 0xC667D900, 0xC6667800, 0xC6651700, - 0xC663B600, 0xC6625500, 0xC660F400, - 0xC65F9300, 0xC65E3200, 0xC65CD100, - 0xC65B7000, 0xC65A0F00, 0xC658AE00, - 0xC6574D00, 0xC655EC00, 0xC6548B00, - 0xC6532A00, 0xC651C900, 0xC6506800, - 0xC64F0700, 0xC64DA600, 0xC64C4500, - 0xC64AE400, 0xC6498300, 0xC6482200, - 0xC646C100, 0xC6456000, 0xC643FF00, - 0xC6429E00, 0xC6413D00, 0xC63FDC00, - 0xC63E7B00, 0xC63D1A00, 0xC63BB900, - 0xC63A5800, 0xC638F700, 0xC6379600, - 0xC6363500, 0xC634D400, 0xC6337300, - 0xC6321200, 0xC630B100, 0xC62F5000, - 0xC62DEF00, 0xC62C8E00, 0xC62B2D00, - 0xC629CC00, 0xC6286B00, 0xC6270A00, - 0xC625A900, 0xC6244800, 0xC622E700, - 0xC6218600, 0xC6202500, 0xC61EC400, - 0xC61D6300, 0xC61C0200, 0xC61AA100, - 0xC6194000, 0xC617DF00, 0xC6167E00, - 0xC6151D00, 0xC613BC00, 0xC6125B00, - 0xC610FA00, 0xC60F9900, 0xC60E3800, - 0xC60CD700, 0xC60B7600, 0xC60A1500, - 0xC608B400, 0xC6075300, 0xC605F200, - 0xC6049100, 0xC6033000, 0xC601CF00, - 0xC6006E00, 0xC5FF0D00, 0xC5FDAC00, - 0xC5FC4B00, 0xC5FAEA00, 0xC5F98900, - 0xC5F82800, 0xC5F6C700, 0xC5F56600, - 0xC5F40500, 0xC5F2A400, 0xC5F14300, - 0xC5EFE200, 0xC5EE8100, 0xC5ED2000, - 0xC5EBBF00, 0xC5EA5E00, 0xC5E8FD00, - 0xC5E79C00, 0xC5E63B00, 0xC5E4DA00, - 0xC5E37900, 0xC5E21800, 0xC5E0B700, - 0xC5DF5600, 0xC5DDF500, 0xC5DC9400, - 0xC5DB3300, 0xC5D9D200, 0xC5D87100, - 0xC5D71000, 0xC5D5AF00, 0xC5D44E00, - 0xC5D2ED00, 0xC5D18C00, 0xC5D02B00, - 0xC5CECA00, 0xC5CD6900, 0xC5CC0800, - 0xC5CAA700, 0xC5C94600, 0xC5C7E500, - 0xC5C68400, 0xC5C52300, 0xC5C3C200, - 0xC5C26100, 0xC5C10000, 0xC5BF9F00, - 0xC5BE3E00, 0xC5BCDD00, 0xC5BB7C00, - 0xC5BA1B00, 0xC5B8BA00, 0xC5B75900, - 0xC5B5F800, 0xC5B49700, 0xC5B33600, - 0xC5B1D500, 0xC5B07400, 0xC5AF1300, - 0xC5ADB200, 0xC5AC5100, 0xC5AAF000, - 0xC5A98F00, 0xC5A82E00, 0xC5A6CD00, - 0xC5A56C00, 0xC5A40B00, 0xC5A2AA00, - 0xC5A14900, 0xC59FE800, 0xC59E8700, - 0xC59D2600, 0xC59BC500, 0xC59A6400, - 0xC5990300, 0xC597A200, 0xC5964100, - 0xC594E000, 0xC5937F00, 0xC5921E00, - 0xC590BD00, 0xC58F5C00, 0xC58DFB00, - 0xC58C9A00, 0xC58B3900, 0xC589D800, - 0xC5887700, 0xC5871600, 0xC585B500, - 0xC5845400, 0xC582F300, 0xC5819200, - 0xC5803100, 0xC57ED000, 0xC57D6F00, - 0xC57C0E00, 0xC57AAD00, 0xC5794C00, - 0xC577EB00, 0xC5768A00, 0xC5752900, - 0xC573C800, 0xC5726700, 0xC5710600, - 0xC56FA500, 0xC56E4400, 0xC56CE300, - 0xC56B8200, 0xC56A2100, 0xC568C000, - 0xC5675F00, 0xC565FE00, 0xC5649D00, - 0xC5633C00, 0xC561DB00, 0xC5607A00, - 0xC55F1900, 0xC55DB800, 0xC55C5700, - 0xC55AF600, 0xC5599500, 0xC5583400, - 0xC556D300, 0xC5557200, 0xC5541100, - 0xC552B000, 0xC5514F00, 0xC54FEE00, - 0xC54E8D00, 0xC54D2C00, 0xC54BCB00, - 0xC54A6A00, 0xC5490900, 0xC547A800, - 0xC5464700, 0xC544E600, 0xC5438500, - 0xC5422400, 0xC540C300, 0xC53F6200, - 0xC53E0100, 0xC53CA000, 0xC53B3F00, - 0xC539DE00, 0xC5387D00, 0xC5371C00, - 0xC535BB00, 0xC5345A00, 0xC532F900, - 0xC5319800, 0xC5303700, 0xC52ED600, - 0xC52D7500, 0xC52C1400, 0xC52AB300, - 0xC5295200, 0xC527F100, 0xC5269000, - 0xC5252F00, 0xC523CE00, 0xC5226D00, - 0xC5210C00, 0xC51FAB00, 0xC51E4A00, - 0xC51CE900, 0xC51B8800, 0xC51A2700, - 0xC518C600, 0xC5176500, 0xC5160400, - 0xC514A300, 0xC5134200, 0xC511E100, - 0xC5108000, 0xC50F1F00, 0xC50DBE00, - 0xC50C5D00, 0xC50AFC00, 0xC5099B00, - 0xC5083A00, 0xC506D900, 0xC5057800, - 0xC5041700, 0xC502B600, 0xC5015500, - 0xC4FFF400, 0xC4FE9300, 0xC4FD3200, - 0xC4FBD100, 0xC4FA7000, 0xC4F90F00, - 0xC4F7AE00, 0xC4F64D00, 0xC4F4EC00, - 0xC4F38B00, 0xC4F22A00, 0xC4F0C900, - 0xC4EF6800, 0xC4EE0700, 0xC4ECA600, - 0xC4EB4500, 0xC4E9E400, 0xC4E88300, - 0xC4E72200, 0xC4E5C100, 0xC4E46000, - 0xC4E2FF00, 0xC4E19E00, 0xC4E03D00, - 0xC4DEDC00, 0xC4DD7B00, 0xC4DC1A00, - 0xC4DAB900, 0xC4D95800, 0xC4D7F700, - 0xC4D69600, 0xC4D53500, 0xC4D3D400, - 0xC4D27300, 0xC4D11200, 0xC4CFB100, - 0xC4CE5000, 0xC4CCEF00, 0xC4CB8E00, - 0xC4CA2D00, 0xC4C8CC00, 0xC4C76B00, - 0xC4C60A00, 0xC4C4A900, 0xC4C34800, - 0xC4C1E700, 0xC4C08600, 0xC4BF2500, - 0xC4BDC400, 0xC4BC6300, 0xC4BB0200, - 0xC4B9A100, 0xC4B84000, 0xC4B6DF00, - 0xC4B57E00, 0xC4B41D00, 0xC4B2BC00, - 0xC4B15B00, 0xC4AFFA00, 0xC4AE9900, - 0xC4AD3800, 0xC4ABD700, 0xC4AA7600, - 0xC4A91500, 0xC4A7B400, 0xC4A65300, - 0xC4A4F200, 0xC4A39100, 0xC4A23000, - 0xC4A0CF00, 0xC49F6E00, 0xC49E0D00, - 0xC49CAC00, 0xC49B4B00, 0xC499EA00, - 0xC4988900, 0xC4972800, 0xC495C700, - 0xC4946600, 0xC4930500, 0xC491A400, - 0xC4904300, 0xC48EE200, 0xC48D8100, - 0xC48C2000, 0xC48ABF00, 0xC4895E00, - 0xC487FD00, 0xC4869C00, 0xC4853B00, - 0xC483DA00, 0xC4827900, 0xC4811800, - 0xC47FB700, 0xC47E5600, 0xC47CF500, - 0xC47B9400, 0xC47A3300, 0xC478D200, - 0xC4777100, 0xC4761000, 0xC474AF00, - 0xC4734E00, 0xC471ED00, 0xC4708C00, - 0xC46F2B00, 0xC46DCA00, 0xC46C6900, - 0xC46B0800, 0xC469A700, 0xC4684600, - 0xC466E500, 0xC4658400, 0xC4642300, - 0xC462C200, 0xC4616100, 0xC4600000, - 0xC45E9F00, 0xC45D3E00, 0xC45BDD00, - 0xC45A7C00, 0xC4591B00, 0xC457BA00, - 0xC4565900, 0xC454F800, 0xC4539700, - 0xC4523600, 0xC450D500, 0xC44F7400, - 0xC44E1300, 0xC44CB200, 0xC44B5100, - 0xC449F000, 0xC4488F00, 0xC4472E00, - 0xC445CD00, 0xC4446C00, 0xC4430B00, - 0xC441AA00, 0xC4404900, 0xC43EE800, - 0xC43D8700, 0xC43C2600, 0xC43AC500, - 0xC4396400, 0xC4380300, 0xC436A200, - 0xC4354100, 0xC433E000, 0xC4327F00, - 0xC4311E00, 0xC42FBD00, 0xC42E5C00, - 0xC42CFB00, 0xC42B9A00, 0xC42A3900, - 0xC428D800, 0xC4277700, 0xC4261600, - 0xC424B500, 0xC4235400, 0xC421F300, - 0xC4209200, 0xC41F3100, 0xC41DD000, - 0xC41C6F00, 0xC41B0E00, 0xC419AD00, - 0xC4184C00, 0xC416EB00, 0xC4158A00, - 0xC4142900, 0xC412C800, 0xC4116700, - 0xC4100600, 0xC40EA500, 0xC40D4400, - 0xC40BE300, 0xC40A8200, 0xC4092100, - 0xC407C000, 0xC4065F00, 0xC404FE00, - 0xC4039D00, 0xC4023C00, 0xC400DB00, - 0xC3FF7A00, 0xC3FE1900, 0xC3FCB800, - 0xC3FB5700, 0xC3F9F600, 0xC3F89500, - 0xC3F73400, 0xC3F5D300, 0xC3F47200, - 0xC3F31100, 0xC3F1B000, 0xC3F04F00, - 0xC3EEEE00, 0xC3ED8D00, 0xC3EC2C00, - 0xC3EACB00, 0xC3E96A00, 0xC3E80900, - 0xC3E6A800, 0xC3E54700, 0xC3E3E600, - 0xC3E28500, 0xC3E12400, 0xC3DFC300, - 0xC3DE6200, 0xC3DD0100, 0xC3DBA000, - 0xC3DA3F00, 0xC3D8DE00, 0xC3D77D00, - 0xC3D61C00, 0xC3D4BB00, 0xC3D35A00, - 0xC3D1F900, 0xC3D09800, 0xC3CF3700, - 0xC3CDD600, 0xC3CC7500, 0xC3CB1400, - 0xC3C9B300, 0xC3C85200, 0xC3C6F100, - 0xC3C59000, 0xC3C42F00, 0xC3C2CE00, - 0xC3C16D00, 0xC3C00C00, 0xC3BEAB00, - 0xC3BD4A00, 0xC3BBE900, 0xC3BA8800, - 0xC3B92700, 0xC3B7C600, 0xC3B66500, - 0xC3B50400, 0xC3B3A300, 0xC3B24200, - 0xC3B0E100, 0xC3AF8000, 0xC3AE1F00, - 0xC3ACBE00, 0xC3AB5D00, 0xC3A9FC00, - 0xC3A89B00, 0xC3A73A00, 0xC3A5D900, - 0xC3A47800, 0xC3A31700, 0xC3A1B600, - 0xC3A05500, 0xC39EF400, 0xC39D9300, - 0xC39C3200, 0xC39AD100, 0xC3997000, - 0xC3980F00, 0xC396AE00, 0xC3954D00, - 0xC393EC00, 0xC3928B00, 0xC3912A00, - 0xC38FC900, 0xC38E6800, 0xC38D0700, - 0xC38BA600, 0xC38A4500, 0xC388E400, - 0xC3878300, 0xC3862200, 0xC384C100, - 0xC3836000, 0xC381FF00, 0xC3809E00, - 0xC37F3D00, 0xC37DDC00, 0xC37C7B00, - 0xC37B1A00, 0xC379B900, 0xC3785800, - 0xC376F700, 0xC3759600, 0xC3743500, - 0xC372D400, 0xC3717300, 0xC3701200, - 0xC36EB100, 0xC36D5000, 0xC36BEF00, - 0xC36A8E00, 0xC3692D00, 0xC367CC00, - 0xC3666B00, 0xC3650A00, 0xC363A900, - 0xC3624800, 0xC360E700, 0xC35F8600, - 0xC35E2500, 0xC35CC400, 0xC35B6300, - 0xC35A0200, 0xC358A100, 0xC3574000, - 0xC355DF00, 0xC3547E00, 0xC3531D00, - 0xC351BC00, 0xC3505B00, 0xC34EFA00, - 0xC34D9900, 0xC34C3800, 0xC34AD700, - 0xC3497600, 0xC3481500, 0xC346B400, - 0xC3455300, 0xC343F200, 0xC3429100, - 0xC3413000, 0xC33FCF00, 0xC33E6E00, - 0xC33D0D00, 0xC33BAC00, 0xC33A4B00, - 0xC338EA00, 0xC3378900, 0xC3362800, - 0xC334C700, 0xC3336600, 0xC3320500, - 0xC330A400, 0xC32F4300, 0xC32DE200, - 0xC32C8100, 0xC32B2000, 0xC329BF00, - 0xC3285E00, 0xC326FD00, 0xC3259C00, - 0xC3243B00, 0xC322DA00, 0xC3217900, - 0xC3201800, 0xC31EB700, 0xC31D5600, - 0xC31BF500, 0xC31A9400, 0xC3193300, - 0xC317D200, 0xC3167100, 0xC3151000, - 0xC313AF00, 0xC3124E00, 0xC310ED00, - 0xC30F8C00, 0xC30E2B00, 0xC30CCA00, - 0xC30B6900, 0xC30A0800, 0xC308A700, - 0xC3074600, 0xC305E500, 0xC3048400, - 0xC3032300, 0xC301C200, 0xC3006100, - 0xC2FF0000, 0xC2FD9F00, 0xC2FC3E00, - 0xC2FADD00, 0xC2F97C00, 0xC2F81B00, - 0xC2F6BA00, 0xC2F55900, 0xC2F3F800, - 0xC2F29700, 0xC2F13600, 0xC2EFD500, - 0xC2EE7400, 0xC2ED1300, 0xC2EBB200, - 0xC2EA5100, 0xC2E8F000, 0xC2E78F00, - 0xC2E62E00, 0xC2E4CD00, 0xC2E36C00, - 0xC2E20B00, 0xC2E0AA00, 0xC2DF4900, - 0xC2DDE800, 0xC2DC8700, 0xC2DB2600, - 0xC2D9C500, 0xC2D86400, 0xC2D70300, - 0xC2D5A200, 0xC2D44100, 0xC2D2E000, - 0xC2D17F00, 0xC2D01E00, 0xC2CEBD00, - 0xC2CD5C00, 0xC2CBFB00, 0xC2CA9A00, - 0xC2C93900, 0xC2C7D800, 0xC2C67700, - 0xC2C51600, 0xC2C3B500, 0xC2C25400, - 0xC2C0F300, 0xC2BF9200, 0xC2BE3100, - 0xC2BCD000, 0xC2BB6F00, 0xC2BA0E00, - 0xC2B8AD00, 0xC2B74C00, 0xC2B5EB00, - 0xC2B48A00, 0xC2B32900, 0xC2B1C800, - 0xC2B06700, 0xC2AF0600, 0xC2ADA500, - 0xC2AC4400, 0xC2AAE300, 0xC2A98200, - 0xC2A82100, 0xC2A6C000, 0xC2A55F00, - 0xC2A3FE00, 0xC2A29D00, 0xC2A13C00, - 0xC29FDB00, 0xC29E7A00, 0xC29D1900, - 0xC29BB800, 0xC29A5700, 0xC298F600, - 0xC2979500, 0xC2963400, 0xC294D300, - 0xC2937200, 0xC2921100, 0xC290B000, - 0xC28F4F00, 0xC28DEE00, 0xC28C8D00, - 0xC28B2C00, 0xC289CB00, 0xC2886A00, - 0xC2870900, 0xC285A800, 0xC2844700, - 0xC282E600, 0xC2818500, 0xC2802400, - 0xC27EC300, 0xC27D6200, 0xC27C0100, - 0xC27AA000, 0xC2793F00, 0xC277DE00, - 0xC2767D00, 0xC2751C00, 0xC273BB00, - 0xC2725A00, 0xC270F900, 0xC26F9800, - 0xC26E3700, 0xC26CD600, 0xC26B7500, - 0xC26A1400, 0xC268B300, 0xC2675200, - 0xC265F100, 0xC2649000, 0xC2632F00, - 0xC261CE00, 0xC2606D00, 0xC25F0C00, - 0xC25DAB00, 0xC25C4A00, 0xC25AE900, - 0xC2598800, 0xC2582700, 0xC256C600, - 0xC2556500, 0xC2540400, 0xC252A300, - 0xC2514200, 0xC24FE100, 0xC24E8000, - 0xC24D1F00, 0xC24BBE00, 0xC24A5D00, - 0xC248FC00, 0xC2479B00, 0xC2463A00, - 0xC244D900, 0xC2437800, 0xC2421700, - 0xC240B600, 0xC23F5500, 0xC23DF400, - 0xC23C9300, 0xC23B3200, 0xC239D100, - 0xC2387000, 0xC2370F00, 0xC235AE00, - 0xC2344D00, 0xC232EC00, 0xC2318B00, - 0xC2302A00, 0xC22EC900, 0xC22D6800, - 0xC22C0700, 0xC22AA600, 0xC2294500, - 0xC227E400, 0xC2268300, 0xC2252200, - 0xC223C100, 0xC2226000, 0xC220FF00, - 0xC21F9E00, 0xC21E3D00, 0xC21CDC00, - 0xC21B7B00, 0xC21A1A00, 0xC218B900, - 0xC2175800, 0xC215F700, 0xC2149600, - 0xC2133500, 0xC211D400, 0xC2107300, - 0xC20F1200, 0xC20DB100, 0xC20C5000, - 0xC20AEF00, 0xC2098E00, 0xC2082D00, - 0xC206CC00, 0xC2056B00, 0xC2040A00, - 0xC202A900, 0xC2014800, 0xC1FFE700, - 0xC1FE8600, 0xC1FD2500, 0xC1FBC400, - 0xC1FA6300, 0xC1F90200, 0xC1F7A100, - 0xC1F64000, 0xC1F4DF00, 0xC1F37E00, - 0xC1F21D00, 0xC1F0BC00, 0xC1EF5B00, - 0xC1EDFA00, 0xC1EC9900, 0xC1EB3800, - 0xC1E9D700, 0xC1E87600, 0xC1E71500, - 0xC1E5B400, 0xC1E45300, 0xC1E2F200, - 0xC1E19100, 0xC1E03000, 0xC1DECF00, - 0xC1DD6E00, 0xC1DC0D00, 0xC1DAAC00, - 0xC1D94B00, 0xC1D7EA00, 0xC1D68900, - 0xC1D52800, 0xC1D3C700, 0xC1D26600, - 0xC1D10500, 0xC1CFA400, 0xC1CE4300, - 0xC1CCE200, 0xC1CB8100, 0xC1CA2000, - 0xC1C8BF00, 0xC1C75E00, 0xC1C5FD00, - 0xC1C49C00, 0xC1C33B00, 0xC1C1DA00, - 0xC1C07900, 0xC1BF1800, 0xC1BDB700, - 0xC1BC5600, 0xC1BAF500, 0xC1B99400, - 0xC1B83300, 0xC1B6D200, 0xC1B57100, - 0xC1B41000, 0xC1B2AF00, 0xC1B14E00, - 0xC1AFED00, 0xC1AE8C00, 0xC1AD2B00, - 0xC1ABCA00, 0xC1AA6900, 0xC1A90800, - 0xC1A7A700, 0xC1A64600, 0xC1A4E500, - 0xC1A38400, 0xC1A22300, 0xC1A0C200, - 0xC19F6100, 0xC19E0000, 0xC19C9F00, - 0xC19B3E00, 0xC199DD00, 0xC1987C00, - 0xC1971B00, 0xC195BA00, 0xC1945900, - 0xC192F800, 0xC1919700, 0xC1903600, - 0xC18ED500, 0xC18D7400, 0xC18C1300, - 0xC18AB200, 0xC1895100, 0xC187F000, - 0xC1868F00, 0xC1852E00, 0xC183CD00, - 0xC1826C00, 0xC1810B00, 0xC17FAA00, - 0xC17E4900, 0xC17CE800, 0xC17B8700, - 0xC17A2600, 0xC178C500, 0xC1776400, - 0xC1760300, 0xC174A200, 0xC1734100, - 0xC171E000, 0xC1707F00, 0xC16F1E00, - 0xC16DBD00, 0xC16C5C00, 0xC16AFB00, - 0xC1699A00, 0xC1683900, 0xC166D800, - 0xC1657700, 0xC1641600, 0xC162B500, - 0xC1615400, 0xC15FF300, 0xC15E9200, - 0xC15D3100, 0xC15BD000, 0xC15A6F00, - 0xC1590E00, 0xC157AD00, 0xC1564C00, - 0xC154EB00, 0xC1538A00, 0xC1522900, - 0xC150C800, 0xC14F6700, 0xC14E0600, - 0xC14CA500, 0xC14B4400, 0xC149E300, - 0xC1488200, 0xC1472100, 0xC145C000, - 0xC1445F00, 0xC142FE00, 0xC1419D00, - 0xC1403C00, 0xC13EDB00, 0xC13D7A00, - 0xC13C1900, 0xC13AB800, 0xC1395700, - 0xC137F600, 0xC1369500, 0xC1353400, - 0xC133D300, 0xC1327200, 0xC1311100, - 0xC12FB000, 0xC12E4F00, 0xC12CEE00, - 0xC12B8D00, 0xC12A2C00, 0xC128CB00, - 0xC1276A00, 0xC1260900, 0xC124A800, - 0xC1234700, 0xC121E600, 0xC1208500, - 0xC11F2400, 0xC11DC300, 0xC11C6200, - 0xC11B0100, 0xC119A000, 0xC1183F00, - 0xC116DE00, 0xC1157D00, 0xC1141C00, - 0xC112BB00, 0xC1115A00, 0xC10FF900, - 0xC10E9800, 0xC10D3700, 0xC10BD600, - 0xC10A7500, 0xC1091400, 0xC107B300, - 0xC1065200, 0xC104F100, 0xC1039000, - 0xC1022F00, 0xC100CE00, 0xC0FF6D00, - 0xC0FE0C00, 0xC0FCAB00, 0xC0FB4A00, - 0xC0F9E900, 0xC0F88800, 0xC0F72700, - 0xC0F5C600, 0xC0F46500, 0xC0F30400, - 0xC0F1A300, 0xC0F04200, 0xC0EEE100, - 0xC0ED8000, 0xC0EC1F00, 0xC0EABE00, - 0xC0E95D00, 0xC0E7FC00, 0xC0E69B00, - 0xC0E53A00, 0xC0E3D900, 0xC0E27800, - 0xC0E11700, 0xC0DFB600, 0xC0DE5500, - 0xC0DCF400, 0xC0DB9300, 0xC0DA3200, - 0xC0D8D100, 0xC0D77000, 0xC0D60F00, - 0xC0D4AE00, 0xC0D34D00, 0xC0D1EC00, - 0xC0D08B00, 0xC0CF2A00, 0xC0CDC900, - 0xC0CC6800, 0xC0CB0700, 0xC0C9A600, - 0xC0C84500, 0xC0C6E400, 0xC0C58300, - 0xC0C42200, 0xC0C2C100, 0xC0C16000, - 0xC0BFFF00, 0xC0BE9E00, 0xC0BD3D00, - 0xC0BBDC00, 0xC0BA7B00, 0xC0B91A00, - 0xC0B7B900, 0xC0B65800, 0xC0B4F700, - 0xC0B39600, 0xC0B23500, 0xC0B0D400, - 0xC0AF7300, 0xC0AE1200, 0xC0ACB100, - 0xC0AB5000, 0xC0A9EF00, 0xC0A88E00, - 0xC0A72D00, 0xC0A5CC00, 0xC0A46B00, - 0xC0A30A00, 0xC0A1A900, 0xC0A04800, - 0xC09EE700, 0xC09D8600, 0xC09C2500, - 0xC09AC400, 0xC0996300, 0xC0980200, - 0xC096A100, 0xC0954000, 0xC093DF00, - 0xC0927E00, 0xC0911D00, 0xC08FBC00, - 0xC08E5B00, 0xC08CFA00, 0xC08B9900, - 0xC08A3800, 0xC088D700, 0xC0877600, - 0xC0861500, 0xC084B400, 0xC0835300, - 0xC081F200, 0xC0809100, 0xC07F3000, - 0xC07DCF00, 0xC07C6E00, 0xC07B0D00, - 0xC079AC00, 0xC0784B00, 0xC076EA00, - 0xC0758900, 0xC0742800, 0xC072C700, - 0xC0716600, 0xC0700500, 0xC06EA400, - 0xC06D4300, 0xC06BE200, 0xC06A8100, - 0xC0692000, 0xC067BF00, 0xC0665E00, - 0xC064FD00, 0xC0639C00, 0xC0623B00, - 0xC060DA00, 0xC05F7900, 0xC05E1800, - 0xC05CB700, 0xC05B5600, 0xC059F500, - 0xC0589400, 0xC0573300, 0xC055D200, - 0xC0547100, 0xC0531000, 0xC051AF00, - 0xC0504E00, 0xC04EED00, 0xC04D8C00, - 0xC04C2B00, 0xC04ACA00, 0xC0496900, - 0xC0480800, 0xC046A700, 0xC0454600, - 0xC043E500, 0xC0428400, 0xC0412300, - 0xC03FC200, 0xC03E6100, 0xC03D0000, - 0xC03B9F00, 0xC03A3E00, 0xC038DD00, - 0xC0377C00, 0xC0361B00, 0xC034BA00, - 0xC0335900, 0xC031F800, 0xC0309700, - 0xC02F3600, 0xC02DD500, 0xC02C7400, - 0xC02B1300, 0xC029B200, 0xC0285100, - 0xC026F000, 0xC0258F00, 0xC0242E00, - 0xC022CD00, 0xC0216C00, 0xC0200B00, - 0xC01EAA00, 0xC01D4900, 0xC01BE800, - 0xC01A8700, 0xC0192600, 0xC017C500, - 0xC0166400, 0xC0150300, 0xC013A200, - 0xC0124100, 0xC010E000, 0xC00F7F00, - 0xC00E1E00, 0xC00CBD00, 0xC00B5C00, - 0xC009FB00, 0xC0089A00, 0xC0073900, - 0xC005D800, 0xC0047700, 0xC0031600, - 0xC001B500, 0xC0005400, 0xBFFEF300, - 0xBFFD9200, 0xBFFC3100, 0xBFFAD000, - 0xBFF96F00, 0xBFF80E00, 0xBFF6AD00, - 0xBFF54C00, 0xBFF3EB00, 0xBFF28A00, - 0xBFF12900, 0xBFEFC800, 0xBFEE6700, - 0xBFED0600, 0xBFEBA500, 0xBFEA4400, - 0xBFE8E300, 0xBFE78200, 0xBFE62100, - 0xBFE4C000, 0xBFE35F00, 0xBFE1FE00, - 0xBFE09D00, 0xBFDF3C00, 0xBFDDDB00, - 0xBFDC7A00, 0xBFDB1900, 0xBFD9B800, - 0xBFD85700, 0xBFD6F600, 0xBFD59500, - 0xBFD43400, 0xBFD2D300, 0xBFD17200, - 0xBFD01100, 0xBFCEB000, 0xBFCD4F00, - 0xBFCBEE00, 0xBFCA8D00, 0xBFC92C00, - 0xBFC7CB00, 0xBFC66A00, 0xBFC50900, - 0xBFC3A800, 0xBFC24700, 0xBFC0E600, - 0xBFBF8500, 0xBFBE2400, 0xBFBCC300, - 0xBFBB6200, 0xBFBA0100, 0xBFB8A000, - 0xBFB73F00, 0xBFB5DE00, 0xBFB47D00, - 0xBFB31C00, 0xBFB1BB00, 0xBFB05A00, - 0xBFAEF900, 0xBFAD9800, 0xBFAC3700, - 0xBFAAD600, 0xBFA97500, 0xBFA81400, - 0xBFA6B300, 0xBFA55200, 0xBFA3F100, - 0xBFA29000, 0xBFA12F00, 0xBF9FCE00, - 0xBF9E6D00, 0xBF9D0C00, 0xBF9BAB00, - 0xBF9A4A00, 0xBF98E900, 0xBF978800, - 0xBF962700, 0xBF94C600, 0xBF936500, - 0xBF920400, 0xBF90A300, 0xBF8F4200, - 0xBF8DE100, 0xBF8C8000, 0xBF8B1F00, - 0xBF89BE00, 0xBF885D00, 0xBF86FC00, - 0xBF859B00, 0xBF843A00, 0xBF82D900, - 0xBF817800, 0xBF801700, 0xBF7EB600, - 0xBF7D5500, 0xBF7BF400, 0xBF7A9300, - 0xBF793200, 0xBF77D100, 0xBF767000, - 0xBF750F00, 0xBF73AE00, 0xBF724D00, - 0xBF70EC00, 0xBF6F8B00, 0xBF6E2A00, - 0xBF6CC900, 0xBF6B6800, 0xBF6A0700, - 0xBF68A600, 0xBF674500, 0xBF65E400, - 0xBF648300, 0xBF632200, 0xBF61C100, - 0xBF606000, 0xBF5EFF00, 0xBF5D9E00, - 0xBF5C3D00, 0xBF5ADC00, 0xBF597B00, - 0xBF581A00, 0xBF56B900, 0xBF555800, - 0xBF53F700, 0xBF529600, 0xBF513500, - 0xBF4FD400, 0xBF4E7300, 0xBF4D1200, - 0xBF4BB100, 0xBF4A5000, 0xBF48EF00, - 0xBF478E00, 0xBF462D00, 0xBF44CC00, - 0xBF436B00, 0xBF420A00, 0xBF40A900, - 0xBF3F4800, 0xBF3DE700, 0xBF3C8600, - 0xBF3B2500, 0xBF39C400, 0xBF386300, - 0xBF370200, 0xBF35A100, 0xBF344000, - 0xBF32DF00, 0xBF317E00, 0xBF301D00, - 0xBF2EBC00, 0xBF2D5B00, 0xBF2BFA00, - 0xBF2A9900, 0xBF293800, 0xBF27D700, - 0xBF267600, 0xBF251500, 0xBF23B400, - 0xBF225300, 0xBF20F200, 0xBF1F9100, - 0xBF1E3000, 0xBF1CCF00, 0xBF1B6E00, - 0xBF1A0D00, 0xBF18AC00, 0xBF174B00, - 0xBF15EA00, 0xBF148900, 0xBF132800, - 0xBF11C700, 0xBF106600, 0xBF0F0500, - 0xBF0DA400, 0xBF0C4300, 0xBF0AE200, - 0xBF098100, 0xBF082000, 0xBF06BF00, - 0xBF055E00, 0xBF03FD00, 0xBF029C00, - 0xBF013B00, 0xBEFFDA00, 0xBEFE7900, - 0xBEFD1800, 0xBEFBB700, 0xBEFA5600, - 0xBEF8F500, 0xBEF79400, 0xBEF63300, - 0xBEF4D200, 0xBEF37100, 0xBEF21000, - 0xBEF0AF00, 0xBEEF4E00, 0xBEEDED00, - 0xBEEC8C00, 0xBEEB2B00, 0xBEE9CA00, - 0xBEE86900, 0xBEE70800, 0xBEE5A700, - 0xBEE44600, 0xBEE2E500, 0xBEE18400, - 0xBEE02300, 0xBEDEC200, 0xBEDD6100, - 0xBEDC0000, 0xBEDAB700, 0xBED96E00, - 0xBED82500, 0xBED6DC00, 0xBED59300, - 0xBED44A00, 0xBED30100, 0xBED1B800, - 0xBED06F00, 0xBECF2600, 0xBECDDD00, - 0xBECC9400, 0xBECB4B00, 0xBECA0200, - 0xBEC8B900, 0xBEC77000, 0xBEC62700, - 0xBEC4DE00, 0xBEC39500, 0xBEC24C00, - 0xBEC10300, 0xBEBFBA00, 0xBEBE7100, - 0xBEBD2800, 0xBEBBDF00, 0xBEBA9600, - 0xBEB94D00, 0xBEB80400, 0xBEB6BB00, - 0xBEB57200, 0xBEB42900, 0xBEB2E000, - 0xBEB19700, 0xBEB04E00, 0xBEAF0500, - 0xBEADBC00, 0xBEAC7300, 0xBEAB2A00, - 0xBEA9E100, 0xBEA89800, 0xBEA74F00, - 0xBEA60600, 0xBEA4BD00, 0xBEA37400, - 0xBEA22B00, 0xBEA0E200, 0xBE9F9900, - 0xBE9E5000, 0xBE9D0700, 0xBE9BBE00, - 0xBE9A7500, 0xBE992C00, 0xBE97E300, - 0xBE969A00, 0xBE955100, 0xBE940800, - 0xBE92BF00, 0xBE917600, 0xBE902D00, - 0xBE8EE400, 0xBE8D9B00, 0xBE8C5200, - 0xBE8B0900, 0xBE89C000, 0xBE887700, - 0xBE872E00, 0xBE85E500, 0xBE849C00, - 0xBE835300, 0xBE820A00, 0xBE80C100, - 0xBE7F7800, 0xBE7E2F00, 0xBE7CE600, - 0xBE7B9D00, 0xBE7A5400, 0xBE790B00, - 0xBE77C200, 0xBE767900, 0xBE753000, - 0xBE73E700, 0xBE729E00, 0xBE715500, - 0xBE700C00, 0xBE6EC300, 0xBE6D7A00, - 0xBE6C3100, 0xBE6AE800, 0xBE699F00, - 0xBE685600, 0xBE670D00, 0xBE65C400, - 0xBE647B00, 0xBE633200, 0xBE61E900, - 0xBE60A000, 0xBE5F5700, 0xBE5E0E00, - 0xBE5CC500, 0xBE5B7C00, 0xBE5A3300, - 0xBE58EA00, 0xBE57A100, 0xBE565800, - 0xBE550F00, 0xBE53C600, 0xBE527D00, - 0xBE513400, 0xBE4FEB00, 0xBE4EA200, - 0xBE4D5900, 0xBE4C1000, 0xBE4AC700, - 0xBE497E00, 0xBE483500, 0xBE46EC00, - 0xBE45A300, 0xBE445A00, 0xBE431100, - 0xBE41C800, 0xBE407F00, 0xBE3F3600, - 0xBE3DED00, 0xBE3CA400, 0xBE3B5B00, - 0xBE3A1200, 0xBE38C900, 0xBE378000, - 0xBE363700, 0xBE34EE00, 0xBE33A500, - 0xBE325C00, 0xBE311300, 0xBE2FCA00, - 0xBE2E8100, 0xBE2D3800, 0xBE2BEF00, - 0xBE2AA600, 0xBE295D00, 0xBE281400, - 0xBE26CB00, 0xBE258200, 0xBE243900, - 0xBE22F000, 0xBE21A700, 0xBE205E00, - 0xBE1F1500, 0xBE1DCC00, 0xBE1C8300, - 0xBE1B3A00, 0xBE19F100, 0xBE18A800, - 0xBE175F00, 0xBE161600, 0xBE14CD00, - 0xBE138400, 0xBE123B00, 0xBE10F200, - 0xBE0FA900, 0xBE0E6000, 0xBE0D1700, - 0xBE0BCE00, 0xBE0A8500, 0xBE093C00, - 0xBE07F300, 0xBE06AA00, 0xBE056100, - 0xBE041800, 0xBE02CF00, 0xBE018600, - 0xBE003D00, 0xBDFEF400, 0xBDFDAB00, - 0xBDFC6200, 0xBDFB1900, 0xBDF9D000, - 0xBDF88700, 0xBDF73E00, 0xBDF5F500, - 0xBDF4AC00, 0xBDF36300, 0xBDF21A00, - 0xBDF0D100, 0xBDEF8800, 0xBDEE3F00, - 0xBDECF600, 0xBDEBAD00, 0xBDEA6400, - 0xBDE91B00, 0xBDE7D200, 0xBDE68900, - 0xBDE54000, 0xBDE3F700, 0xBDE2AE00, - 0xBDE16500, 0xBDE01C00, 0xBDDED300, - 0xBDDD8A00, 0xBDDC4100, 0xBDDAF800, - 0xBDD9AF00, 0xBDD86600, 0xBDD71D00, - 0xBDD5D400, 0xBDD48B00, 0xBDD34200, - 0xBDD1F900, 0xBDD0B000, 0xBDCF6700, - 0xBDCE1E00, 0xBDCCD500, 0xBDCB8C00, - 0xBDCA4300, 0xBDC8FA00, 0xBDC7B100, - 0xBDC66800, 0xBDC51F00, 0xBDC3D600, - 0xBDC28D00, 0xBDC14400, 0xBDBFFB00, - 0xBDBEB200, 0xBDBD6900, 0xBDBC2000, - 0xBDBAD700, 0xBDB98E00, 0xBDB84500, - 0xBDB6FC00, 0xBDB5B300, 0xBDB46A00, - 0xBDB32100, 0xBDB1D800, 0xBDB08F00, - 0xBDAF4600, 0xBDADFD00, 0xBDACB400, - 0xBDAB6B00, 0xBDAA2200, 0xBDA8D900, - 0xBDA79000, 0xBDA64700, 0xBDA4FE00, - 0xBDA3B500, 0xBDA26C00, 0xBDA12300, - 0xBD9FDA00, 0xBD9E9100, 0xBD9D4800, - 0xBD9BFF00, 0xBD9AB600, 0xBD996D00, - 0xBD982400, 0xBD96DB00, 0xBD959200, - 0xBD944900, 0xBD930000, 0xBD91B700, - 0xBD906E00, 0xBD8F2500, 0xBD8DDC00, - 0xBD8C9300, 0xBD8B4A00, 0xBD8A0100, - 0xBD88B800, 0xBD876F00, 0xBD862600, - 0xBD84DD00, 0xBD839400, 0xBD824B00, - 0xBD810200, 0xBD7FB900, 0xBD7E7000, - 0xBD7D2700, 0xBD7BDE00, 0xBD7A9500, - 0xBD794C00, 0xBD780300, 0xBD76BA00, - 0xBD757100, 0xBD742800, 0xBD72DF00, - 0xBD719600, 0xBD704D00, 0xBD6F0400, - 0xBD6DBB00, 0xBD6C7200, 0xBD6B2900, - 0xBD69E000, 0xBD689700, 0xBD674E00, - 0xBD660500, 0xBD64BC00, 0xBD637300, - 0xBD622A00, 0xBD60E100, 0xBD5F9800, - 0xBD5E4F00, 0xBD5D0600, 0xBD5BBD00, - 0xBD5A7400, 0xBD592B00, 0xBD57E200, - 0xBD569900, 0xBD555000, 0xBD540700, - 0xBD52BE00, 0xBD517500, 0xBD502C00, - 0xBD4EE300, 0xBD4D9A00, 0xBD4C5100, - 0xBD4B0800, 0xBD49BF00, 0xBD487600, - 0xBD472D00, 0xBD45E400, 0xBD449B00, - 0xBD435200, 0xBD420900, 0xBD40C000, - 0xBD3F7700, 0xBD3E2E00, 0xBD3CE500, - 0xBD3B9C00, 0xBD3A5300, 0xBD390A00, - 0xBD37C100, 0xBD367800, 0xBD352F00, - 0xBD33E600, 0xBD329D00, 0xBD315400, - 0xBD300B00, 0xBD2EC200, 0xBD2D7900, - 0xBD2C3000, 0xBD2AE700, 0xBD299E00, - 0xBD285500, 0xBD270C00, 0xBD25C300, - 0xBD247A00, 0xBD233100, 0xBD21E800, - 0xBD209F00, 0xBD1F5600, 0xBD1E0D00, - 0xBD1CC400, 0xBD1B7B00, 0xBD1A3200, - 0xBD18E900, 0xBD17A000, 0xBD165700, - 0xBD150E00, 0xBD13C500, 0xBD127C00, - 0xBD113300, 0xBD0FEA00, 0xBD0EA100, - 0xBD0D5800, 0xBD0C0F00, 0xBD0AC600, - 0xBD097D00, 0xBD083400, 0xBD06EB00, - 0xBD05A200, 0xBD045900, 0xBD031000, - 0xBD01C700, 0xBD007E00, 0xBCFF3500, - 0xBCFDEC00, 0xBCFCA300, 0xBCFB5A00, - 0xBCFA1100, 0xBCF8C800, 0xBCF77F00, - 0xBCF63600, 0xBCF4ED00, 0xBCF3A400, - 0xBCF25B00, 0xBCF11200, 0xBCEFC900, - 0xBCEE8000, 0xBCED3700, 0xBCEBEE00, - 0xBCEAA500, 0xBCE95C00, 0xBCE81300, - 0xBCE6CA00, 0xBCE58100, 0xBCE43800, - 0xBCE2EF00, 0xBCE1A600, 0xBCE05D00, - 0xBCDF1400, 0xBCDDCB00, 0xBCDC8200, - 0xBCDB3900, 0xBCD9F000, 0xBCD8A700, - 0xBCD75E00, 0xBCD61500, 0xBCD4CC00, - 0xBCD38300, 0xBCD23A00, 0xBCD0F100, - 0xBCCFA800, 0xBCCE5F00, 0xBCCD1600, - 0xBCCBCD00, 0xBCCA8400, 0xBCC93B00, - 0xBCC7F200, 0xBCC6A900, 0xBCC56000, - 0xBCC41700, 0xBCC2CE00, 0xBCC18500, - 0xBCC03C00, 0xBCBEF300, 0xBCBDAA00, - 0xBCBC6100, 0xBCBB1800, 0xBCB9CF00, - 0xBCB88600, 0xBCB73D00, 0xBCB5F400, - 0xBCB4AB00, 0xBCB36200, 0xBCB21900, - 0xBCB0D000, 0xBCAF8700, 0xBCAE3E00, - 0xBCACF500, 0xBCABAC00, 0xBCAA6300, - 0xBCA91A00, 0xBCA7D100, 0xBCA68800, - 0xBCA53F00, 0xBCA3F600, 0xBCA2AD00, - 0xBCA16400, 0xBCA01B00, 0xBC9ED200, - 0xBC9D8900, 0xBC9C4000, 0xBC9AF700, - 0xBC99AE00, 0xBC986500, 0xBC971C00, - 0xBC95D300, 0xBC948A00, 0xBC934100, - 0xBC91F800, 0xBC90AF00, 0xBC8F6600, - 0xBC8E1D00, 0xBC8CD400, 0xBC8B8B00, - 0xBC8A4200, 0xBC88F900, 0xBC87B000, - 0xBC866700, 0xBC851E00, 0xBC83D500, - 0xBC828C00, 0xBC814300, 0xBC7FFA00, - 0xBC7EB100, 0xBC7D6800, 0xBC7C1F00, - 0xBC7AD600, 0xBC798D00, 0xBC784400, - 0xBC76FB00, 0xBC75B200, 0xBC746900, - 0xBC732000, 0xBC71D700, 0xBC708E00, - 0xBC6F4500, 0xBC6DFC00, 0xBC6CB300, - 0xBC6B6A00, 0xBC6A2100, 0xBC68D800, - 0xBC678F00, 0xBC664600, 0xBC64FD00, - 0xBC63B400, 0xBC626B00, 0xBC612200, - 0xBC5FD900, 0xBC5E9000, 0xBC5D4700, - 0xBC5BFE00, 0xBC5AB500, 0xBC596C00, - 0xBC582300, 0xBC56DA00, 0xBC559100, - 0xBC544800, 0xBC52FF00, 0xBC51B600, - 0xBC506D00, 0xBC4F2400, 0xBC4DDB00, - 0xBC4C9200, 0xBC4B4900, 0xBC4A0000, - 0xBC48B700, 0xBC476E00, 0xBC462500, - 0xBC44DC00, 0xBC439300, 0xBC424A00, - 0xBC410100, 0xBC3FB800, 0xBC3E6F00, - 0xBC3D2600, 0xBC3BDD00, 0xBC3A9400, - 0xBC394B00, 0xBC380200, 0xBC36B900, - 0xBC357000, 0xBC342700, 0xBC32DE00, - 0xBC319500, 0xBC304C00, 0xBC2F0300, - 0xBC2DBA00, 0xBC2C7100, 0xBC2B2800, - 0xBC29DF00, 0xBC289600, 0xBC274D00, - 0xBC260400, 0xBC24BB00, 0xBC237200, - 0xBC222900, 0xBC20E000, 0xBC1F9700, - 0xBC1E4E00, 0xBC1D0500, 0xBC1BBC00, - 0xBC1A7300, 0xBC192A00, 0xBC17E100, - 0xBC169800, 0xBC154F00, 0xBC140600, - 0xBC12BD00, 0xBC117400, 0xBC102B00, - 0xBC0EE200, 0xBC0D9900, 0xBC0C5000, - 0xBC0B0700, 0xBC09BE00, 0xBC087500, - 0xBC072C00, 0xBC05E300, 0xBC049A00, - 0xBC035100, 0xBC020800, 0xBC00BF00, - 0xBBFF7600, 0xBBFE2D00, 0xBBFCE400, - 0xBBFB9B00, 0xBBFA5200, 0xBBF90900, - 0xBBF7C000, 0xBBF67700, 0xBBF52E00, - 0xBBF3E500, 0xBBF29C00, 0xBBF15300, - 0xBBF00A00, 0xBBEEC100, 0xBBED7800, - 0xBBEC2F00, 0xBBEAE600, 0xBBE99D00, - 0xBBE85400, 0xBBE70B00, 0xBBE5C200, - 0xBBE47900, 0xBBE33000, 0xBBE1E700, - 0xBBE09E00, 0xBBDF5500, 0xBBDE0C00, - 0xBBDCC300, 0xBBDB7A00, 0xBBDA3100, - 0xBBD8E800, 0xBBD79F00, 0xBBD65600, - 0xBBD50D00, 0xBBD3C400, 0xBBD27B00, - 0xBBD13200, 0xBBCFE900, 0xBBCEA000, - 0xBBCD5700, 0xBBCC0E00, 0xBBCAC500, - 0xBBC97C00, 0xBBC83300, 0xBBC6EA00, - 0xBBC5A100, 0xBBC45800, 0xBBC30F00, - 0xBBC1C600, 0xBBC07D00, 0xBBBF3400, - 0xBBBDEB00, 0xBBBCA200, 0xBBBB5900, - 0xBBBA1000, 0xBBB8C700, 0xBBB77E00, - 0xBBB63500, 0xBBB4EC00, 0xBBB3A300, - 0xBBB25A00, 0xBBB11100, 0xBBAFC800, - 0xBBAE7F00, 0xBBAD3600, 0xBBABED00, - 0xBBAAA400, 0xBBA95B00, 0xBBA81200, - 0xBBA6C900, 0xBBA58000, 0xBBA43700, - 0xBBA2EE00, 0xBBA1A500, 0xBBA05C00, - 0xBB9F1300, 0xBB9DCA00, 0xBB9C8100, - 0xBB9B3800, 0xBB99EF00, 0xBB98A600, - 0xBB975D00, 0xBB961400, 0xBB94CB00, - 0xBB938200, 0xBB923900, 0xBB90F000, - 0xBB8FA700, 0xBB8E5E00, 0xBB8D1500, - 0xBB8BCC00, 0xBB8A8300, 0xBB893A00, - 0xBB87F100, 0xBB86A800, 0xBB855F00, - 0xBB841600, 0xBB82CD00, 0xBB818400, - 0xBB803B00, 0xBB7EF200, 0xBB7DA900, - 0xBB7C6000, 0xBB7B1700, 0xBB79CE00, - 0xBB788500, 0xBB773C00, 0xBB75F300, - 0xBB74AA00, 0xBB736100, 0xBB721800, - 0xBB70CF00, 0xBB6F8600, 0xBB6E3D00, - 0xBB6CF400, 0xBB6BAB00, 0xBB6A6200, - 0xBB691900, 0xBB67D000, 0xBB668700, - 0xBB653E00, 0xBB63F500, 0xBB62AC00, - 0xBB616300, 0xBB601A00, 0xBB5ED100, - 0xBB5D8800, 0xBB5C3F00, 0xBB5AF600, - 0xBB59AD00, 0xBB586400, 0xBB571B00, - 0xBB55D200, 0xBB548900, 0xBB534000, - 0xBB51F700, 0xBB50AE00, 0xBB4F6500, - 0xBB4E1C00, 0xBB4CD300, 0xBB4B8A00, - 0xBB4A4100, 0xBB48F800, 0xBB47AF00, - 0xBB466600, 0xBB451D00, 0xBB43D400, - 0xBB428B00, 0xBB414200, 0xBB3FF900, - 0xBB3EB000, 0xBB3D6700, 0xBB3C1E00, - 0xBB3AD500, 0xBB398C00, 0xBB384300, - 0xBB36FA00, 0xBB35B100, 0xBB346800, - 0xBB331F00, 0xBB31D600, 0xBB308D00, - 0xBB2F4400, 0xBB2DFB00, 0xBB2CB200, - 0xBB2B6900, 0xBB2A2000, 0xBB28D700, - 0xBB278E00, 0xBB264500, 0xBB24FC00, - 0xBB23B300, 0xBB226A00, 0xBB212100, - 0xBB1FD800, 0xBB1E8F00, 0xBB1D4600, - 0xBB1BFD00, 0xBB1AB400, 0xBB196B00, - 0xBB182200, 0xBB16D900, 0xBB159000, - 0xBB144700, 0xBB12FE00, 0xBB11B500, - 0xBB106C00, 0xBB0F2300, 0xBB0DDA00, - 0xBB0C9100, 0xBB0B4800, 0xBB09FF00, - 0xBB08B600, 0xBB076D00, 0xBB062400, - 0xBB04DB00, 0xBB039200, 0xBB024900, - 0xBB010000, 0xBAFFB700, 0xBAFE6E00, - 0xBAFD2500, 0xBAFBDC00, 0xBAFA9300, - 0xBAF94A00, 0xBAF80100, 0xBAF6B800, - 0xBAF56F00, 0xBAF42600, 0xBAF2DD00, - 0xBAF19400, 0xBAF04B00, 0xBAEF0200, - 0xBAEDB900, 0xBAEC7000, 0xBAEB2700, - 0xBAE9DE00, 0xBAE89500, 0xBAE74C00, - 0xBAE60300, 0xBAE4BA00, 0xBAE37100, - 0xBAE22800, 0xBAE0DF00, 0xBADF9600, - 0xBADE4D00, 0xBADD0400, 0xBADBBB00, - 0xBADA7200, 0xBAD92900, 0xBAD7E000, - 0xBAD69700, 0xBAD54E00, 0xBAD40500, - 0xBAD2BC00, 0xBAD17300, 0xBAD02A00, - 0xBACEE100, 0xBACD9800, 0xBACC4F00, - 0xBACB0600, 0xBAC9BD00, 0xBAC87400, - 0xBAC72B00, 0xBAC5E200, 0xBAC49900, - 0xBAC35000, 0xBAC20700, 0xBAC0BE00, - 0xBABF7500, 0xBABE2C00, 0xBABCE300, - 0xBABB9A00, 0xBABA5100, 0xBAB90800, - 0xBAB7BF00, 0xBAB67600, 0xBAB52D00, - 0xBAB3E400, 0xBAB29B00, 0xBAB15200, - 0xBAB00900, 0xBAAEC000, 0xBAAD7700, - 0xBAAC2E00, 0xBAAAE500, 0xBAA99C00, - 0xBAA85300, 0xBAA70A00, 0xBAA5C100, - 0xBAA47800, 0xBAA32F00, 0xBAA1E600, - 0xBAA09D00, 0xBA9F5400, 0xBA9E0B00, - 0xBA9CC200, 0xBA9B7900, 0xBA9A3000, - 0xBA98E700, 0xBA979E00, 0xBA965500, - 0xBA950C00, 0xBA93C300, 0xBA927A00, - 0xBA913100, 0xBA8FE800, 0xBA8E9F00, - 0xBA8D5600, 0xBA8C0D00, 0xBA8AC400, - 0xBA897B00, 0xBA883200, 0xBA86E900, - 0xBA85A000, 0xBA845700, 0xBA830E00, - 0xBA81C500, 0xBA807C00, 0xBA7F3300, - 0xBA7DEA00, 0xBA7CA100, 0xBA7B5800, - 0xBA7A0F00, 0xBA78C600, 0xBA777D00, - 0xBA763400, 0xBA74EB00, 0xBA73A200, - 0xBA725900, 0xBA711000, 0xBA6FC700, - 0xBA6E7E00, 0xBA6D3500, 0xBA6BEC00, - 0xBA6AA300, 0xBA695A00, 0xBA681100, - 0xBA66C800, 0xBA657F00, 0xBA643600, - 0xBA62ED00, 0xBA61A400, 0xBA605B00, - 0xBA5F1200, 0xBA5DC900, 0xBA5C8000, - 0xBA5B3700, 0xBA59EE00, 0xBA58A500, - 0xBA575C00, 0xBA561300, 0xBA54CA00, - 0xBA538100, 0xBA523800, 0xBA50EF00, - 0xBA4FA600, 0xBA4E5D00, 0xBA4D1400, - 0xBA4BCB00, 0xBA4A8200, 0xBA493900, - 0xBA47F000, 0xBA46A700, 0xBA455E00, - 0xBA441500, 0xBA42CC00, 0xBA418300, - 0xBA403A00, 0xBA3EF100, 0xBA3DA800, - 0xBA3C5F00, 0xBA3B1600, 0xBA39CD00, - 0xBA388400, 0xBA373B00, 0xBA35F200, - 0xBA34A900, 0xBA336000, 0xBA321700, - 0xBA30CE00, 0xBA2F8500, 0xBA2E3C00, - 0xBA2CF300, 0xBA2BAA00, 0xBA2A6100, - 0xBA291800, 0xBA27CF00, 0xBA268600, - 0xBA253D00, 0xBA23F400, 0xBA22AB00, - 0xBA216200, 0xBA201900, 0xBA1ED000, - 0xBA1D8700, 0xBA1C3E00, 0xBA1AF500, - 0xBA19AC00, 0xBA186300, 0xBA171A00, - 0xBA15D100, 0xBA148800, 0xBA133F00, - 0xBA11F600, 0xBA10AD00, 0xBA0F6400, - 0xBA0E1B00, 0xBA0CD200, 0xBA0B8900, - 0xBA0A4000, 0xBA08F700, 0xBA07AE00, - 0xBA066500, 0xBA051C00, 0xBA03D300, - 0xBA028A00, 0xBA014100, 0xB9FFF800, - 0xB9FEAF00, 0xB9FD6600, 0xB9FC1D00, - 0xB9FAD400, 0xB9F98B00, 0xB9F84200, - 0xB9F6F900, 0xB9F5B000, 0xB9F46700, - 0xB9F31E00, 0xB9F1D500, 0xB9F08C00, - 0xB9EF4300, 0xB9EDFA00, 0xB9ECB100, - 0xB9EB6800, 0xB9EA1F00, 0xB9E8D600, - 0xB9E78D00, 0xB9E64400, 0xB9E4FB00, - 0xB9E3B200, 0xB9E26900, 0xB9E12000, - 0xB9DFD700, 0xB9DE8E00, 0xB9DD4500, - 0xB9DBFC00, 0xB9DAB300, 0xB9D96A00, - 0xB9D82100, 0xB9D6D800, 0xB9D58F00, - 0xB9D44600, 0xB9D2FD00, 0xB9D1B400, - 0xB9D06B00, 0xB9CF2200, 0xB9CDD900, - 0xB9CC9000, 0xB9CB4700, 0xB9C9FE00, - 0xB9C8B500, 0xB9C76C00, 0xB9C62300, - 0xB9C4DA00, 0xB9C39100, 0xB9C24800, - 0xB9C0FF00, 0xB9BFB600, 0xB9BE6D00, - 0xB9BD2400, 0xB9BBDB00, 0xB9BA9200, - 0xB9B94900, 0xB9B80000, 0xB9B6B700, - 0xB9B56E00, 0xB9B42500, 0xB9B2DC00, - 0xB9B19300, 0xB9B04A00, 0xB9AF0100, - 0xB9ADB800, 0xB9AC6F00, 0xB9AB2600, - 0xB9A9DD00, 0xB9A89400, 0xB9A74B00, - 0xB9A60200, 0xB9A4B900, 0xB9A37000, - 0xB9A22700, 0xB9A0DE00, 0xB99F9500, - 0xB99E4C00, 0xB99D0300, 0xB99BBA00, - 0xB99A7100, 0xB9992800, 0xB997DF00, - 0xB9969600, 0xB9954D00, 0xB9940400, - 0xB992BB00, 0xB9917200, 0xB9902900, - 0xB98EE000, 0xB98D9700, 0xB98C4E00, - 0xB98B0500, 0xB989BC00, 0xB9887300, - 0xB9872A00, 0xB985E100, 0xB9849800, - 0xB9834F00, 0xB9820600, 0xB980BD00, - 0xB97F7400, 0xB97E2B00, 0xB97CE200, - 0xB97B9900, 0xB97A5000, 0xB9790700, - 0xB977BE00, 0xB9767500, 0xB9752C00, - 0xB973E300, 0xB9729A00, 0xB9715100, - 0xB9700800, 0xB96EBF00, 0xB96D7600, - 0xB96C2D00, 0xB96AE400, 0xB9699B00, - 0xB9685200, 0xB9670900, 0xB965C000, - 0xB9647700, 0xB9632E00, 0xB961E500, - 0xB9609C00, 0xB95F5300, 0xB95E0A00, - 0xB95CC100, 0xB95B7800, 0xB95A2F00, - 0xB958E600, 0xB9579D00, 0xB9565400, - 0xB9550B00, 0xB953C200, 0xB9527900, - 0xB9513000, 0xB94FE700, 0xB94E9E00, - 0xB94D5500, 0xB94C0C00, 0xB94AC300, - 0xB9497A00, 0xB9483100, 0xB946E800, - 0xB9459F00, 0xB9445600, 0xB9430D00, - 0xB941C400, 0xB9407B00, 0xB93F3200, - 0xB93DE900, 0xB93CA000, 0xB93B5700, - 0xB93A0E00, 0xB938C500, 0xB9377C00, - 0xB9363300, 0xB934EA00, 0xB933A100, - 0xB9325800, 0xB9310F00, 0xB92FC600, - 0xB92E7D00, 0xB92D3400, 0xB92BEB00, - 0xB92AA200, 0xB9295900, 0xB9281000, - 0xB926C700, 0xB9257E00, 0xB9243500, - 0xB922EC00, 0xB921A300, 0xB9205A00, - 0xB91F1100, 0xB91DC800, 0xB91C7F00, - 0xB91B3600, 0xB919ED00, 0xB918A400, - 0xB9175B00, 0xB9161200, 0xB914C900, - 0xB9138000, 0xB9123700, 0xB910EE00, - 0xB90FA500, 0xB90E5C00, 0xB90D1300, - 0xB90BCA00, 0xB90A8100, 0xB9093800, - 0xB907EF00, 0xB906A600, 0xB9055D00, - 0xB9041400, 0xB902CB00, 0xB9018200, - 0xB9003900, 0xB8FEF000, 0xB8FDA700, - 0xB8FC5E00, 0xB8FB1500, 0xB8F9CC00, - 0xB8F88300, 0xB8F73A00, 0xB8F5F100, - 0xB8F4A800, 0xB8F35F00, 0xB8F21600, - 0xB8F0CD00, 0xB8EF8400, 0xB8EE3B00, - 0xB8ECF200, 0xB8EBA900, 0xB8EA6000, - 0xB8E91700, 0xB8E7CE00, 0xB8E68500, - 0xB8E53C00, 0xB8E3F300, 0xB8E2AA00, - 0xB8E16100, 0xB8E01800, 0xB8DECF00, - 0xB8DD8600, 0xB8DC3D00, 0xB8DAF400, - 0xB8D9AB00, 0xB8D86200, 0xB8D71900, - 0xB8D5D000, 0xB8D48700, 0xB8D33E00, - 0xB8D1F500, 0xB8D0AC00, 0xB8CF6300, - 0xB8CE1A00, 0xB8CCD100, 0xB8CB8800, - 0xB8CA3F00, 0xB8C8F600, 0xB8C7AD00, - 0xB8C66400, 0xB8C51B00, 0xB8C3D200, - 0xB8C28900, 0xB8C14000, 0xB8BFF700, - 0xB8BEAE00, 0xB8BD6500, 0xB8BC1C00, - 0xB8BAD300, 0xB8B98A00, 0xB8B84100, - 0xB8B6F800, 0xB8B5AF00, 0xB8B46600, - 0xB8B31D00, 0xB8B1D400, 0xB8B08B00, - 0xB8AF4200, 0xB8ADF900, 0xB8ACB000, - 0xB8AB6700, 0xB8AA1E00, 0xB8A8D500, - 0xB8A78C00, 0xB8A64300, 0xB8A4FA00, - 0xB8A3B100, 0xB8A26800, 0xB8A11F00, - 0xB89FD600, 0xB89E8D00, 0xB89D4400, - 0xB89BFB00, 0xB89AB200, 0xB8996900, - 0xB8982000, 0xB896D700, 0xB8958E00, - 0xB8944500, 0xB892FC00, 0xB891B300, - 0xB8906A00, 0xB88F2100, 0xB88DD800, - 0xB88C8F00, 0xB88B4600, 0xB889FD00, - 0xB888B400, 0xB8876B00, 0xB8862200, - 0xB884D900, 0xB8839000, 0xB8824700, - 0xB880FE00, 0xB87FB500, 0xB87E6C00, - 0xB87D2300, 0xB87BDA00, 0xB87A9100, - 0xB8794800, 0xB877FF00, 0xB876B600, - 0xB8756D00, 0xB8742400, 0xB872DB00, - 0xB8719200, 0xB8704900, 0xB86F0000, - 0xB86DB700, 0xB86C6E00, 0xB86B2500, - 0xB869DC00, 0xB8689300, 0xB8674A00, - 0xB8660100, 0xB864B800, 0xB8636F00, - 0xB8622600, 0xB860DD00, 0xB85F9400, - 0xB85E4B00, 0xB85D0200, 0xB85BB900, - 0xB85A7000, 0xB8592700, 0xB857DE00, - 0xB8569500, 0xB8554C00, 0xB8540300, - 0xB852BA00, 0xB8517100, 0xB8502800, - 0xB84EDF00, 0xB84D9600, 0xB84C4D00, - 0xB84B0400, 0xB849BB00, 0xB8487200, - 0xB8472900, 0xB845E000, 0xB8449700, - 0xB8434E00, 0xB8420500, 0xB840BC00, - 0xB83F7300, 0xB83E2A00, 0xB83CE100, - 0xB83B9800, 0xB83A4F00, 0xB8390600, - 0xB837BD00, 0xB8367400, 0xB8352B00, - 0xB833E200, 0xB8329900, 0xB8315000, - 0xB8300700, 0xB82EBE00, 0xB82D7500, - 0xB82C2C00, 0xB82AE300, 0xB8299A00, - 0xB8285100, 0xB8270800, 0xB825BF00, - 0xB8247600, 0xB8232D00, 0xB821E400, - 0xB8209B00, 0xB81F5200, 0xB81E0900, - 0xB81CC000, 0xB81B7700, 0xB81A2E00, - 0xB818E500, 0xB8179C00, 0xB8165300, - 0xB8150A00, 0xB813C100, 0xB8127800, - 0xB8112F00, 0xB80FE600, 0xB80E9D00, - 0xB80D5400, 0xB80C0B00, 0xB80AC200, - 0xB8097900, 0xB8083000, 0xB806E700, - 0xB8059E00, 0xB8045500, 0xB8030C00, - 0xB801C300, 0xB8007A00, 0xB7FF3100, - 0xB7FDE800, 0xB7FC9F00, 0xB7FB5600, - 0xB7FA0D00, 0xB7F8C400, 0xB7F77B00, - 0xB7F63200, 0xB7F4E900, 0xB7F3A000, - 0xB7F25700, 0xB7F10E00, 0xB7EFC500, - 0xB7EE7C00, 0xB7ED3300, 0xB7EBEA00, - 0xB7EAA100, 0xB7E95800, 0xB7E80F00, - 0xB7E6C600, 0xB7E57D00, 0xB7E43400, - 0xB7E2EB00, 0xB7E1A200, 0xB7E05900, - 0xB7DF1000, 0xB7DDC700, 0xB7DC7E00, - 0xB7DB3500, 0xB7D9EC00, 0xB7D8A300, - 0xB7D75A00, 0xB7D61100, 0xB7D4C800, - 0xB7D37F00, 0xB7D23600, 0xB7D0ED00, - 0xB7CFA400, 0xB7CE5B00, 0xB7CD1200, - 0xB7CBC900, 0xB7CA8000, 0xB7C93700, - 0xB7C7EE00, 0xB7C6A500, 0xB7C55C00, - 0xB7C41300, 0xB7C2CA00, 0xB7C18100, - 0xB7C03800, 0xB7BEEF00, 0xB7BDA600, - 0xB7BC5D00, 0xB7BB1400, 0xB7B9CB00, - 0xB7B88200, 0xB7B73900, 0xB7B5F000, - 0xB7B4A700, 0xB7B35E00, 0xB7B21500, - 0xB7B0CC00, 0xB7AF8300, 0xB7AE3A00, - 0xB7ACF100, 0xB7ABA800, 0xB7AA5F00, - 0xB7A91600, 0xB7A7CD00, 0xB7A68400, - 0xB7A53B00, 0xB7A3F200, 0xB7A2A900, - 0xB7A16000, 0xB7A01700, 0xB79ECE00, - 0xB79D8500, 0xB79C3C00, 0xB79AF300, - 0xB799AA00, 0xB7986100, 0xB7971800, - 0xB795CF00, 0xB7948600, 0xB7933D00, - 0xB791F400, 0xB790AB00, 0xB78F6200, - 0xB78E1900, 0xB78CD000, 0xB78B8700, - 0xB78A3E00, 0xB788F500, 0xB787AC00, - 0xB7866300, 0xB7851A00, 0xB783D100, - 0xB7828800, 0xB7813F00, 0xB77FF600, - 0xB77EAD00, 0xB77D6400, 0xB77C1B00, - 0xB77AD200, 0xB7798900, 0xB7784000, - 0xB776F700, 0xB775AE00, 0xB7746500, - 0xB7731C00, 0xB771D300, 0xB7708A00, - 0xB76F4100, 0xB76DF800, 0xB76CAF00, - 0xB76B6600, 0xB76A1D00, 0xB768D400, - 0xB7678B00, 0xB7664200, 0xB764F900, - 0xB763B000, 0xB7626700, 0xB7611E00, - 0xB75FD500, 0xB75E8C00, 0xB75D4300, - 0xB75BFA00, 0xB75AB100, 0xB7596800, - 0xB7581F00, 0xB756D600, 0xB7558D00, - 0xB7544400, 0xB752FB00, 0xB751B200, - 0xB7506900, 0xB74F2000, 0xB74DD700, - 0xB74C8E00, 0xB74B4500, 0xB749FC00, - 0xB748B300, 0xB7476A00, 0xB7462100, - 0xB744D800, 0xB7438F00, 0xB7424600, - 0xB740FD00, 0xB73FB400, 0xB73E6B00, - 0xB73D2200, 0xB73BD900, 0xB73A9000, - 0xB7394700, 0xB737FE00, 0xB736B500, - 0xB7356C00, 0xB7342300, 0xB732DA00, - 0xB7319100, 0xB7304800, 0xB72EFF00, - 0xB72DB600, 0xB72C6D00, 0xB72B2400, - 0xB729DB00, 0xB7289200, 0xB7274900, - 0xB7260000, 0xB724B700, 0xB7236E00, - 0xB7222500, 0xB720DC00, 0xB71F9300, - 0xB71E4A00, 0xB71D0100, 0xB71BB800, - 0xB71A6F00, 0xB7192600, 0xB717DD00, - 0xB7169400, 0xB7154B00, 0xB7140200, - 0xB712B900, 0xB7117000, 0xB7102700, - 0xB70EDE00, 0xB70D9500, 0xB70C4C00, - 0xB70B0300, 0xB709BA00, 0xB7087100, - 0xB7072800, 0xB705DF00, 0xB7049600, - 0xB7034D00, 0xB7020400, 0xB700BB00, - 0xB6FF7200, 0xB6FE2900, 0xB6FCE000, - 0xB6FB9700, 0xB6FA4E00, 0xB6F90500, - 0xB6F7BC00, 0xB6F67300, 0xB6F52A00, - 0xB6F3E100, 0xB6F29800, 0xB6F14F00, - 0xB6F00600, 0xB6EEBD00, 0xB6ED7400, - 0xB6EC2B00, 0xB6EAE200, 0xB6E99900, - 0xB6E85000, 0xB6E70700, 0xB6E5BE00, - 0xB6E47500, 0xB6E32C00, 0xB6E1E300, - 0xB6E09A00, 0xB6DF5100, 0xB6DE0800, - 0xB6DCBF00, 0xB6DB7600, 0xB6DA2D00, - 0xB6D8E400, 0xB6D79B00, 0xB6D65200, - 0xB6D50900, 0xB6D3C000, 0xB6D27700, - 0xB6D12E00, 0xB6CFE500, 0xB6CE9C00, - 0xB6CD5300, 0xB6CC0A00, 0xB6CAC100, - 0xB6C97800, 0xB6C82F00, 0xB6C6E600, - 0xB6C59D00, 0xB6C45400, 0xB6C30B00, - 0xB6C1C200, 0xB6C07900, 0xB6BF3000, - 0xB6BDE700, 0xB6BC9E00, 0xB6BB5500, - 0xB6BA0C00, 0xB6B8C300, 0xB6B77A00, - 0xB6B63100, 0xB6B4E800, 0xB6B39F00, - 0xB6B25600, 0xB6B10D00, 0xB6AFC400, - 0xB6AE7B00, 0xB6AD3200, 0xB6ABE900, - 0xB6AAA000, 0xB6A95700, 0xB6A80E00, - 0xB6A6C500, 0xB6A57C00, 0xB6A43300, - 0xB6A2EA00, 0xB6A1A100, 0xB6A05800, - 0xB69F0F00, 0xB69DC600, 0xB69C7D00, - 0xB69B3400, 0xB699EB00, 0xB698A200, - 0xB6975900, 0xB6961000, 0xB694C700, - 0xB6937E00, 0xB6923500, 0xB690EC00, - 0xB68FA300, 0xB68E5A00, 0xB68D1100, - 0xB68BC800, 0xB68A7F00, 0xB6893600, - 0xB687ED00, 0xB686A400, 0xB6855B00, - 0xB6841200, 0xB682C900, 0xB6818000, - 0xB6803700, 0xB67EEE00, 0xB67DA500, - 0xB67C5C00, 0xB67B1300, 0xB679CA00, - 0xB6788100, 0xB6773800, 0xB675EF00, - 0xB674A600, 0xB6735D00, 0xB6721400, - 0xB670CB00, 0xB66F8200, 0xB66E3900, - 0xB66CF000, 0xB66BA700, 0xB66A5E00, - 0xB6691500, 0xB667CC00, 0xB6668300, - 0xB6653A00, 0xB663F100, 0xB662A800, - 0xB6615F00, 0xB6601600, 0xB65ECD00, - 0xB65D8400, 0xB65C3B00, 0xB65AF200, - 0xB659A900, 0xB6586000, 0xB6571700, - 0xB655CE00, 0xB6548500, 0xB6533C00, - 0xB651F300, 0xB650AA00, 0xB64F6100, - 0xB64E1800, 0xB64CCF00, 0xB64B8600, - 0xB64A3D00, 0xB648F400, 0xB647AB00, - 0xB6466200, 0xB6451900, 0xB643D000, - 0xB6428700, 0xB6413E00, 0xB63FF500, - 0xB63EAC00, 0xB63D6300, 0xB63C1A00, - 0xB63AD100, 0xB6398800, 0xB6383F00, - 0xB636F600, 0xB635AD00, 0xB6346400, - 0xB6331B00, 0xB631D200, 0xB6308900, - 0xB62F4000, 0xB62DF700, 0xB62CAE00, - 0xB62B6500, 0xB62A1C00, 0xB628D300, - 0xB6278A00, 0xB6264100, 0xB624F800, - 0xB623AF00, 0xB6226600, 0xB6211D00, - 0xB61FD400, 0xB61E8B00, 0xB61D4200, - 0xB61BF900, 0xB61AB000, 0xB6196700, - 0xB6181E00, 0xB616D500, 0xB6158C00, - 0xB6144300, 0xB612FA00, 0xB611B100, - 0xB6106800, 0xB60F1F00, 0xB60DD600, - 0xB60C8D00, 0xB60B4400, 0xB609FB00, - 0xB608B200, 0xB6076900, 0xB6062000, - 0xB604D700, 0xB6038E00, 0xB6024500, - 0xB600FC00, 0xB5FFB300, 0xB5FE6A00, - 0xB5FD2100, 0xB5FBD800, 0xB5FA8F00, - 0xB5F94600, 0xB5F7FD00, 0xB5F6B400, - 0xB5F56B00, 0xB5F42200, 0xB5F2D900, - 0xB5F19000, 0xB5F04700, 0xB5EEFE00, - 0xB5EDB500, 0xB5EC6C00, 0xB5EB2300, - 0xB5E9DA00, 0xB5E89100, 0xB5E74800, - 0xB5E5FF00, 0xB5E4B600, 0xB5E36D00, - 0xB5E22400, 0xB5E0DB00, 0xB5DF9200, - 0xB5DE4900, 0xB5DD0000, 0xB5DBB700, - 0xB5DA6E00, 0xB5D92500, 0xB5D7DC00, - 0xB5D69300, 0xB5D54A00, 0xB5D40100, - 0xB5D2B800, 0xB5D16F00, 0xB5D02600, - 0xB5CEDD00, 0xB5CD9400, 0xB5CC4B00, - 0xB5CB0200, 0xB5C9B900, 0xB5C87000, - 0xB5C72700, 0xB5C5DE00, 0xB5C49500, - 0xB5C34C00, 0xB5C20300, 0xB5C0BA00, - 0xB5BF7100, 0xB5BE2800, 0xB5BCDF00, - 0xB5BB9600, 0xB5BA4D00, 0xB5B90400, - 0xB5B7BB00, 0xB5B67200, 0xB5B52900, - 0xB5B3E000, 0xB5B29700, 0xB5B14E00, - 0xB5B00500, 0xB5AEBC00, 0xB5AD7300, - 0xB5AC2A00, 0xB5AAE100, 0xB5A99800, - 0xB5A84F00, 0xB5A70600, 0xB5A5BD00, - 0xB5A47400, 0xB5A32B00, 0xB5A1E200, - 0xB5A09900, 0xB59F5000, 0xB59E0700, - 0xB59CBE00, 0xB59B7500, 0xB59A2C00, - 0xB598E300, 0xB5979A00, 0xB5965100, - 0xB5950800, 0xB593BF00, 0xB5927600, - 0xB5912D00, 0xB58FE400, 0xB58E9B00, - 0xB58D5200, 0xB58C0900, 0xB58AC000, - 0xB5897700, 0xB5882E00, 0xB586E500, - 0xB5859C00, 0xB5845300, 0xB5830A00, - 0xB581C100, 0xB5807800, 0xB57F2F00, - 0xB57DE600, 0xB57C9D00, 0xB57B5400, - 0xB57A0B00, 0xB578C200, 0xB5777900, - 0xB5763000, 0xB574E700, 0xB5739E00, - 0xB5725500, 0xB5710C00, 0xB56FC300, - 0xB56E7A00, 0xB56D3100, 0xB56BE800, - 0xB56A9F00, 0xB5695600, 0xB5680D00, - 0xB566C400, 0xB5657B00, 0xB5643200, - 0xB562E900, 0xB561A000, 0xB5605700, - 0xB55F0E00, 0xB55DC500, 0xB55C7C00, - 0xB55B3300, 0xB559EA00, 0xB558A100, - 0xB5575800, 0xB5560F00, 0xB554C600, - 0xB5537D00, 0xB5523400, 0xB550EB00, - 0xB54FA200, 0xB54E5900, 0xB54D1000, - 0xB54BC700, 0xB54A7E00, 0xB5493500, - 0xB547EC00, 0xB546A300, 0xB5455A00, - 0xB5441100, 0xB542C800, 0xB5417F00, - 0xB5403600, 0xB53EED00, 0xB53DA400, - 0xB53C5B00, 0xB53B1200, 0xB539C900, - 0xB5388000, 0xB5373700, 0xB535EE00, - 0xB534A500, 0xB5335C00, 0xB5321300, - 0xB530CA00, 0xB52F8100, 0xB52E3800, - 0xB52CEF00, 0xB52BA600, 0xB52A5D00, - 0xB5291400, 0xB527CB00, 0xB5268200, - 0xB5253900, 0xB523F000, 0xB522A700, - 0xB5215E00, 0xB5201500, 0xB51ECC00, - 0xB51D8300, 0xB51C3A00, 0xB51AF100, - 0xB519A800, 0xB5185F00, 0xB5171600, - 0xB515CD00, 0xB5148400, 0xB5133B00, - 0xB511F200, 0xB510A900, 0xB50F6000, - 0xB50E1700, 0xB50CCE00, 0xB50B8500, - 0xB50A3C00, 0xB508F300, 0xB507AA00, - 0xB5066100, 0xB5051800, 0xB503CF00, - 0xB5028600, 0xB5013D00, 0xB4FFF400, - 0xB4FEAB00, 0xB4FD6200, 0xB4FC1900, - 0xB4FAD000, 0xB4F98700, 0xB4F83E00, - 0xB4F6F500, 0xB4F5AC00, 0xB4F46300, - 0xB4F31A00, 0xB4F1D100, 0xB4F08800, - 0xB4EF3F00, 0xB4EDF600, 0xB4ECAD00, - 0xB4EB6400, 0xB4EA1B00, 0xB4E8D200, - 0xB4E78900, 0xB4E64000, 0xB4E4F700, - 0xB4E3AE00, 0xB4E26500, 0xB4E11C00, - 0xB4DFD300, 0xB4DE8A00, 0xB4DD4100, - 0xB4DBF800, 0xB4DAAF00, 0xB4D96600, - 0xB4D81D00, 0xB4D6D400, 0xB4D58B00, - 0xB4D44200, 0xB4D2F900, 0xB4D1B000, - 0xB4D06700, 0xB4CF1E00, 0xB4CDD500, - 0xB4CC8C00, 0xB4CB4300, 0xB4C9FA00, - 0xB4C8B100, 0xB4C76800, 0xB4C61F00, - 0xB4C4D600, 0xB4C38D00, 0xB4C24400, - 0xB4C0FB00, 0xB4BFB200, 0xB4BE6900, - 0xB4BD2000, 0xB4BBD700, 0xB4BA8E00, - 0xB4B94500, 0xB4B7FC00, 0xB4B6B300, - 0xB4B56A00, 0xB4B42100, 0xB4B2D800, - 0xB4B18F00, 0xB4B04600, 0xB4AEFD00, - 0xB4ADB400, 0xB4AC6B00, 0xB4AB2200, - 0xB4A9D900, 0xB4A89000, 0xB4A74700, - 0xB4A5FE00, 0xB4A4B500, 0xB4A36C00, - 0xB4A22300, 0xB4A0DA00, 0xB49F9100, - 0xB49E4800, 0xB49CFF00, 0xB49BB600, - 0xB49A6D00, 0xB4992400, 0xB497DB00, - 0xB4969200, 0xB4954900, 0xB4980000, - 0xB496CD00, 0xB4959A00, 0xB4946700, - 0xB4933400, 0xB4920100, 0xB490CE00, - 0xB48F9B00, 0xB48E6800, 0xB48D3500, - 0xB48C0200, 0xB48ACF00, 0xB4899C00, - 0xB4886900, 0xB4873600, 0xB4860300, - 0xB484D000, 0xB4839D00, 0xB4826A00, - 0xB4813700, 0xB4800400, 0xB47ED100, - 0xB47D9E00, 0xB47C6B00, 0xB47B3800, - 0xB47A0500, 0xB478D200, 0xB4779F00, - 0xB4766C00, 0xB4753900, 0xB4740600, - 0xB472D300, 0xB471A000, 0xB4706D00, - 0xB46F3A00, 0xB46E0700, 0xB46CD400, - 0xB46BA100, 0xB46A6E00, 0xB4693B00, - 0xB4680800, 0xB466D500, 0xB465A200, - 0xB4646F00, 0xB4633C00, 0xB4620900, - 0xB460D600, 0xB45FA300, 0xB45E7000, - 0xB45D3D00, 0xB45C0A00, 0xB45AD700, - 0xB459A400, 0xB4587100, 0xB4573E00, - 0xB4560B00, 0xB454D800, 0xB453A500, - 0xB4527200, 0xB4513F00, 0xB4500C00, - 0xB44ED900, 0xB44DA600, 0xB44C7300, - 0xB44B4000, 0xB44A0D00, 0xB448DA00, - 0xB447A700, 0xB4467400, 0xB4454100, - 0xB4440E00, 0xB442DB00, 0xB441A800, - 0xB4407500, 0xB43F4200, 0xB43E0F00, - 0xB43CDC00, 0xB43BA900, 0xB43A7600, - 0xB4394300, 0xB4381000, 0xB436DD00, - 0xB435AA00, 0xB4347700, 0xB4334400, - 0xB4321100, 0xB430DE00, 0xB42FAB00, - 0xB42E7800, 0xB42D4500, 0xB42C1200, - 0xB42ADF00, 0xB429AC00, 0xB4287900, - 0xB4274600, 0xB4261300, 0xB424E000, - 0xB423AD00, 0xB4227A00, 0xB4214700, - 0xB4201400, 0xB41EE100, 0xB41DAE00, - 0xB41C7B00, 0xB41B4800, 0xB41A1500, - 0xB418E200, 0xB417AF00, 0xB4167C00, - 0xB4154900, 0xB4141600, 0xB412E300, - 0xB411B000, 0xB4107D00, 0xB40F4A00, - 0xB40E1700, 0xB40CE400, 0xB40BB100, - 0xB40A7E00, 0xB4094B00, 0xB4081800, - 0xB406E500, 0xB405B200, 0xB4047F00, - 0xB4034C00, 0xB4021900, 0xB400E600, - 0xB3FFB300, 0xB3FE8000, 0xB3FD4D00, - 0xB3FC1A00, 0xB3FAE700, 0xB3F9B400, - 0xB3F88100, 0xB3F74E00, 0xB3F61B00, - 0xB3F4E800, 0xB3F3B500, 0xB3F28200, - 0xB3F14F00, 0xB3F01C00, 0xB3EEE900, - 0xB3EDB600, 0xB3EC8300, 0xB3EB5000, - 0xB3EA1D00, 0xB3E8EA00, 0xB3E7B700, - 0xB3E68400, 0xB3E55100, 0xB3E41E00, - 0xB3E2EB00, 0xB3E1B800, 0xB3E08500, - 0xB3DF5200, 0xB3DE1F00, 0xB3DCEC00, - 0xB3DBB900, 0xB3DA8600, 0xB3D95300, - 0xB3D82000, 0xB3D6ED00, 0xB3D5BA00, - 0xB3D48700, 0xB3D35400, 0xB3D22100, - 0xB3D0EE00, 0xB3CFBB00, 0xB3CE8800, - 0xB3CD5500, 0xB3CC2200, 0xB3CAEF00, - 0xB3C9BC00, 0xB3C88900, 0xB3C75600, - 0xB3C62300, 0xB3C4F000, 0xB3C3BD00, - 0xB3C28A00, 0xB3C15700, 0xB3C02400, - 0xB3BEF100, 0xB3BDBE00, 0xB3BC8B00, - 0xB3BB5800, 0xB3BA2500, 0xB3B8F200, - 0xB3B7BF00, 0xB3B68C00, 0xB3B55900, - 0xB3B42600, 0xB3B2F300, 0xB3B1C000, - 0xB3B08D00, 0xB3AF5A00, 0xB3AE2700, - 0xB3ACF400, 0xB3ABC100, 0xB3AA8E00, - 0xB3A95B00, 0xB3A82800, 0xB3A6F500, - 0xB3A5C200, 0xB3A48F00, 0xB3A35C00, - 0xB3A22900, 0xB3A0F600, 0xB39FC300, - 0xB39E9000, 0xB39D5D00, 0xB39C2A00, - 0xB39AF700, 0xB399C400, 0xB3989100, - 0xB3975E00, 0xB3962B00, 0xB394F800, - 0xB393C500, 0xB3929200, 0xB3915F00, - 0xB3902C00, 0xB38EF900, 0xB38DC600, - 0xB38C9300, 0xB38B6000, 0xB38A2D00, - 0xB388FA00, 0xB387C700, 0xB3869400, - 0xB3856100, 0xB3842E00, 0xB382FB00, - 0xB381C800, 0xB3809500, 0xB37F6200, - 0xB37E2F00, 0xB37CFC00, 0xB37BC900, - 0xB37A9600, 0xB3796300, 0xB3783000, - 0xB376FD00, 0xB375CA00, 0xB3749700, - 0xB3736400, 0xB3723100, 0xB370FE00, - 0xB36FCB00, 0xB36E9800, 0xB36D6500, - 0xB36C3200, 0xB36AFF00, 0xB369CC00, - 0xB3689900, 0xB3676600, 0xB3663300, - 0xB3650000, 0xB363CD00, 0xB3629A00, - 0xB3616700, 0xB3603400, 0xB35F0100, - 0xB35DCE00, 0xB35C9B00, 0xB35B6800, - 0xB35A3500, 0xB3590200, 0xB357CF00, - 0xB3569C00, 0xB3556900, 0xB3543600, - 0xB3530300, 0xB351D000, 0xB3509D00, - 0xB34F6A00, 0xB34E3700, 0xB34D0400, - 0xB34BD100, 0xB34A9E00, 0xB3496B00, - 0xB3483800, 0xB3470500, 0xB345D200, - 0xB3449F00, 0xB3436C00, 0xB3423900, - 0xB3410600, 0xB33FD300, 0xB33EA000, - 0xB33D6D00, 0xB33C3A00, 0xB33B0700, - 0xB339D400, 0xB338A100, 0xB3376E00, - 0xB3363B00, 0xB3350800, 0xB333D500, - 0xB332A200, 0xB3316F00, 0xB3303C00, - 0xB32F0900, 0xB32DD600, 0xB32CA300, - 0xB32B7000, 0xB32A3D00, 0xB3290A00, - 0xB327D700, 0xB326A400, 0xB3257100, - 0xB3243E00, 0xB3230B00, 0xB321D800, - 0xB320A500, 0xB31F7200, 0xB31E3F00, - 0xB31D0C00, 0xB31BD900, 0xB31AA600, - 0xB3197300, 0xB3184000, 0xB3170D00, - 0xB315DA00, 0xB314A700, 0xB3137400, - 0xB3124100, 0xB3110E00, 0xB30FDB00, - 0xB30EA800, 0xB30D7500, 0xB30C4200, - 0xB30B0F00, 0xB309DC00, 0xB308A900, - 0xB3077600, 0xB3064300, 0xB3051000, - 0xB303DD00, 0xB302AA00, 0xB3017700, - 0xB3004400, 0xB2FF1100, 0xB2FDDE00, - 0xB2FCAB00, 0xB2FB7800, 0xB2FA4500, - 0xB2F91200, 0xB2F7DF00, 0xB2F6AC00, - 0xB2F57900, 0xB2F44600, 0xB2F31300, - 0xB2F1E000, 0xB2F0AD00, 0xB2EF7A00, - 0xB2EE4700, 0xB2ED1400, 0xB2EBE100, - 0xB2EAAE00, 0xB2E97B00, 0xB2E84800, - 0xB2E71500, 0xB2E5E200, 0xB2E4AF00, - 0xB2E37C00, 0xB2E24900, 0xB2E11600, - 0xB2DFE300, 0xB2DEB000, 0xB2DD7D00, - 0xB2DC4A00, 0xB2DB1700, 0xB2D9E400, - 0xB2D8B100, 0xB2D77E00, 0xB2D64B00, - 0xB2D51800, 0xB2D3E500, 0xB2D2B200, - 0xB2D17F00, 0xB2D04C00, 0xB2CF1900, - 0xB2CDE600, 0xB2CCB300, 0xB2CB8000, - 0xB2CA4D00, 0xB2C91A00, 0xB2C7E700, - 0xB2C6B400, 0xB2C58100, 0xB2C44E00, - 0xB2C31B00, 0xB2C1E800, 0xB2C0B500, - 0xB2BF8200, 0xB2BE4F00, 0xB2BD1C00, - 0xB2BBE900, 0xB2BAB600, 0xB2B98300, - 0xB2B85000, 0xB2B71D00, 0xB2B5EA00, - 0xB2B4B700, 0xB2B38400, 0xB2B25100, - 0xB2B11E00, 0xB2AFEB00, 0xB2AEB800, - 0xB2AD8500, 0xB2AC5200, 0xB2AB1F00, - 0xB2A9EC00, 0xB2A8B900, 0xB2A78600, - 0xB2A65300, 0xB2A52000, 0xB2A3ED00, - 0xB2A2BA00, 0xB2A18700, 0xB2A05400, - 0xB29F2100, 0xB29DEE00, 0xB29CBB00, - 0xB29B8800, 0xB29A5500, 0xB2992200, - 0xB297EF00, 0xB296BC00, 0xB2958900, - 0xB2945600, 0xB2932300, 0xB291F000, - 0xB290BD00, 0xB28F8A00, 0xB28E5700, - 0xB28D2400, 0xB28BF100, 0xB28ABE00, - 0xB2898B00, 0xB2885800, 0xB2872500, - 0xB285F200, 0xB284BF00, 0xB2838C00, - 0xB2825900, 0xB2812600, 0xB27FF300, - 0xB27EC000, 0xB27D8D00, 0xB27C5A00, - 0xB27B2700, 0xB279F400, 0xB278C100, - 0xB2778E00, 0xB2765B00, 0xB2752800, - 0xB273F500, 0xB272C200, 0xB2718F00, - 0xB2705C00, 0xB26F2900, 0xB26DF600, - 0xB26CC300, 0xB26B9000, 0xB26A5D00, - 0xB2692A00, 0xB267F700, 0xB266C400, - 0xB2659100, 0xB2645E00, 0xB2632B00, - 0xB261F800, 0xB260C500, 0xB25F9200, - 0xB25E5F00, 0xB25D2C00, 0xB25BF900, - 0xB25AC600, 0xB2599300, 0xB2586000, - 0xB2572D00, 0xB255FA00, 0xB254C700, - 0xB2539400, 0xB2526100, 0xB2512E00, - 0xB24FFB00, 0xB24EC800, 0xB24D9500, - 0xB24C6200, 0xB24B2F00, 0xB249FC00, - 0xB248C900, 0xB2479600, 0xB2466300, - 0xB2453000, 0xB243FD00, 0xB242CA00, - 0xB2419700, 0xB2406400, 0xB23F3100, - 0xB23DFE00, 0xB23CCB00, 0xB23B9800, - 0xB23A6500, 0xB2393200, 0xB237FF00, - 0xB236CC00, 0xB2359900, 0xB2346600, - 0xB2333300, 0xB2320000, 0xB230CD00, - 0xB22F9A00, 0xB22E6700, 0xB22D3400, - 0xB22C0100, 0xB22ACE00, 0xB2299B00, - 0xB2286800, 0xB2273500, 0xB2260200, - 0xB224CF00, 0xB2239C00, 0xB2226900, - 0xB2213600, 0xB2200300, 0xB21ED000, - 0xB21D9D00, 0xB21C6A00, 0xB21B3700, - 0xB21A0400, 0xB218D100, 0xB2179E00, - 0xB2166B00, 0xB2153800, 0xB2140500, - 0xB212D200, 0xB2119F00, 0xB2106C00, - 0xB20F3900, 0xB20E0600, 0xB20CD300, - 0xB20BA000, 0xB20A6D00, 0xB2093A00, - 0xB2080700, 0xB206D400, 0xB205A100, - 0xB2046E00, 0xB2033B00, 0xB2020800, - 0xB200D500, 0xB1FFA200, 0xB1FE6F00, - 0xB1FD3C00, 0xB1FC0900, 0xB1FAD600, - 0xB1F9A300, 0xB1F87000, 0xB1F73D00, - 0xB1F60A00, 0xB1F4D700, 0xB1F3A400, - 0xB1F27100, 0xB1F13E00, 0xB1F00B00, - 0xB1EED800, 0xB1EDA500, 0xB1EC7200, - 0xB1EB3F00, 0xB1EA0C00, 0xB1E8D900, - 0xB1E7A600, 0xB1E67300, 0xB1E54000, - 0xB1E40D00, 0xB1E2DA00, 0xB1E1A700, - 0xB1E07400, 0xB1DF4100, 0xB1DE0E00, - 0xB1DCDB00, 0xB1DBA800, 0xB1DA7500, - 0xB1D94200, 0xB1D80F00, 0xB1D6DC00, - 0xB1D5A900, 0xB1D47600, 0xB1D34300, - 0xB1D21000, 0xB1D0DD00, 0xB1CFAA00, - 0xB1CE7700, 0xB1CD4400, 0xB1CC1100, - 0xB1CADE00, 0xB1C9AB00, 0xB1C87800, - 0xB1C74500, 0xB1C61200, 0xB1C4DF00, - 0xB1C3AC00, 0xB1C27900, 0xB1C14600, - 0xB1C01300, 0xB1BEE000, 0xB1BDAD00, - 0xB1BC7A00, 0xB1BB4700, 0xB1BA1400, - 0xB1B8E100, 0xB1B7AE00, 0xB1B67B00, - 0xB1B54800, 0xB1B41500, 0xB1B2E200, - 0xB1B1AF00, 0xB1B07C00, 0xB1AF4900, - 0xB1AE1600, 0xB1ACE300, 0xB1ABB000, - 0xB1AA7D00, 0xB1A94A00, 0xB1A81700, - 0xB1A6E400, 0xB1A5B100, 0xB1A47E00, - 0xB1A34B00, 0xB1A21800, 0xB1A0E500, - 0xB19FB200, 0xB19E7F00, 0xB19D4C00, - 0xB19C1900, 0xB19AE600, 0xB199B300, - 0xB1988000, 0xB1974D00, 0xB1961A00, - 0xB194E700, 0xB193B400, 0xB1928100, - 0xB1914E00, 0xB1901B00, 0xB18EE800, - 0xB18DB500, 0xB18C8200, 0xB18B4F00, - 0xB18A1C00, 0xB188E900, 0xB187B600, - 0xB1868300, 0xB1855000, 0xB1841D00, - 0xB182EA00, 0xB181B700, 0xB1808400, - 0xB17F5100, 0xB17E1E00, 0xB17CEB00, - 0xB17BB800, 0xB17A8500, 0xB1795200, - 0xB1781F00, 0xB176EC00, 0xB175B900, - 0xB1748600, 0xB1735300, 0xB1722000, - 0xB170ED00, 0xB16FBA00, 0xB16E8700, - 0xB16D5400, 0xB16C2100, 0xB16AEE00, - 0xB169BB00, 0xB1688800, 0xB1675500, - 0xB1662200, 0xB164EF00, 0xB163BC00, - 0xB1628900, 0xB1615600, 0xB1602300, - 0xB15EF000, 0xB15DBD00, 0xB15C8A00, - 0xB15B5700, 0xB15A2400, 0xB158F100, - 0xB157BE00, 0xB1568B00, 0xB1555800, - 0xB1542500, 0xB152F200, 0xB151BF00, - 0xB1508C00, 0xB14F5900, 0xB14E2600, - 0xB14CF300, 0xB14BC000, 0xB14A8D00, - 0xB1495A00, 0xB1482700, 0xB146F400, - 0xB145C100, 0xB1448E00, 0xB1435B00, - 0xB1422800, 0xB140F500, 0xB13FC200, - 0xB13E8F00, 0xB13D5C00, 0xB13C2900, - 0xB13AF600, 0xB139C300, 0xB1389000, - 0xB1375D00, 0xB1362A00, 0xB134F700, - 0xB133C400, 0xB1329100, 0xB1315E00, - 0xB1302B00, 0xB12EF800, 0xB12DC500, - 0xB12C9200, 0xB12B5F00, 0xB12A2C00, - 0xB128F900, 0xB127C600, 0xB1269300, - 0xB1256000, 0xB1242D00, 0xB122FA00, - 0xB121C700, 0xB1209400, 0xB11F6100, - 0xB11E2E00, 0xB11CFB00, 0xB11BC800, - 0xB11A9500, 0xB1196200, 0xB1182F00, - 0xB116FC00, 0xB115C900, 0xB1149600, - 0xB1136300, 0xB1123000, 0xB110FD00, - 0xB10FCA00, 0xB10E9700, 0xB10D6400, - 0xB10C3100, 0xB10AFE00, 0xB109CB00, - 0xB1089800, 0xB1076500, 0xB1063200, - 0xB104FF00, 0xB103CC00, 0xB1029900, - 0xB1016600, 0xB1003300, 0xB0FF0000, - 0xB0FDCD00, 0xB0FC9A00, 0xB0FB6700, - 0xB0FA3400, 0xB0F90100, 0xB0F7CE00, - 0xB0F69B00, 0xB0F56800, 0xB0F43500, - 0xB0F30200, 0xB0F1CF00, 0xB0F09C00, - 0xB0EF6900, 0xB0EE3600, 0xB0ED0300, - 0xB0EBD000, 0xB0EA9D00, 0xB0E96A00, - 0xB0E83700, 0xB0E70400, 0xB0E5D100, - 0xB0E49E00, 0xB0E36B00, 0xB0E23800, - 0xB0E10500, 0xB0DFD200, 0xB0DE9F00, - 0xB0DD6C00, 0xB0DC3900, 0xB0DB0600, - 0xB0D9D300, 0xB0D8A000, 0xB0D76D00, - 0xB0D63A00, 0xB0D50700, 0xB0D3D400, - 0xB0D2A100, 0xB0D16E00, 0xB0D03B00, - 0xB0CF0800, 0xB0CDD500, 0xB0CCA200, - 0xB0CB6F00, 0xB0CA3C00, 0xB0C90900, - 0xB0C7D600, 0xB0C6A300, 0xB0C57000, - 0xB0C43D00, 0xB0C30A00, 0xB0C1D700, - 0xB0C0A400, 0xB0BF7100, 0xB0BE3E00, - 0xB0BD0B00, 0xB0BBD800, 0xB0BAA500, - 0xB0B97200, 0xB0B83F00, 0xB0B70C00, - 0xB0B5D900, 0xB0B4A600, 0xB0B37300, - 0xB0B24000, 0xB0B10D00, 0xB0AFDA00, - 0xB0AEA700, 0xB0AD7400, 0xB0AC4100, - 0xB0AB0E00, 0xB0A9DB00, 0xB0A8A800, - 0xB0A77500, 0xB0A64200, 0xB0A50F00, - 0xB0A3DC00, 0xB0A2A900, 0xB0A17600, - 0xB0A04300, 0xB09F1000, 0xB09DDD00, - 0xB09CAA00, 0xB09B7700, 0xB09A4400, - 0xB0991100, 0xB097DE00, 0xB096AB00, - 0xB0957800, 0xB0944500, 0xB0931200, - 0xB091DF00, 0xB090AC00, 0xB08F7900, - 0xB08E4600, 0xB08D1300, 0xB08BE000, - 0xB08AAD00, 0xB0897A00, 0xB0884700, - 0xB0871400, 0xB085E100, 0xB084AE00, - 0xB0837B00, 0xB0824800, 0xB0811500, - 0xB07FE200, 0xB07EAF00, 0xB07D7C00, - 0xB07C4900, 0xB07B1600, 0xB079E300, - 0xB078B000, 0xB0777D00, 0xB0764A00, - 0xB0751700, 0xB073E400, 0xB072B100, - 0xB0717E00, 0xB0704B00, 0xB06F1800, - 0xB06DE500, 0xB06CB200, 0xB06B7F00, - 0xB06A4C00, 0xB0691900, 0xB067E600, - 0xB066B300, 0xB0658000, 0xB0644D00, - 0xB0631A00, 0xB061E700, 0xB060B400, - 0xB05F8100, 0xB05E4E00, 0xB05D1B00, - 0xB05BE800, 0xB05AB500, 0xB0598200, - 0xB0584F00, 0xB0571C00, 0xB055E900, - 0xB054B600, 0xB0538300, 0xB0525000, - 0xB0511D00, 0xB04FEA00, 0xB04EB700, - 0xB04D8400, 0xB04C5100, 0xB04B1E00, - 0xB049EB00, 0xB048B800, 0xB0478500, - 0xB0465200, 0xB0451F00, 0xB043EC00, - 0xB042B900, 0xB0418600, 0xB0405300, - 0xB03F2000, 0xB03DED00, 0xB03CBA00, - 0xB03B8700, 0xB03A5400, 0xB0392100, - 0xB037EE00, 0xB036BB00, 0xB0358800, - 0xB0345500, 0xB0332200, 0xB031EF00, - 0xB030BC00, 0xB02F8900, 0xB02E5600, - 0xB02D2300, 0xB02BF000, 0xB02ABD00, - 0xB0298A00, 0xB0285700, 0xB0272400, - 0xB025F100, 0xB024BE00, 0xB0238B00, - 0xB0225800, 0xB0212500, 0xB01FF200, - 0xB01EBF00, 0xB01D8C00, 0xB01C5900, - 0xB01B2600, 0xB019F300, 0xB018C000, - 0xB0178D00, 0xB0165A00, 0xB0152700, - 0xB013F400, 0xB012C100, 0xB0118E00, - 0xB0105B00, 0xB00F2800, 0xB00DF500, - 0xB00CC200, 0xB00B8F00, 0xB00A5C00, - 0xB0092900, 0xB007F600, 0xB006C300, - 0xB0059000, 0xB0045D00, 0xB0032A00, - 0xB001F700, 0xB000C400, 0xAFFF9100, - 0xAFFE5E00, 0xAFFD2B00, 0xAFFBF800, - 0xAFFAC500, 0xAFF99200, 0xAFF85F00, - 0xAFF72C00, 0xAFF5F900, 0xAFF4C600, - 0xAFF39300, 0xAFF26000, 0xAFF12D00, - 0xAFEFFA00, 0xAFEEC700, 0xAFED9400, - 0xAFEC6100, 0xAFEB2E00, 0xAFE9FB00, - 0xAFE8C800, 0xAFE79500, 0xAFE66200, - 0xAFE52F00, 0xAFE3FC00, 0xAFE2C900, - 0xAFE19600, 0xAFE06300, 0xAFDF3000, - 0xAFDDFD00, 0xAFDCCA00, 0xAFDB9700, - 0xAFDA6400, 0xAFD93100, 0xAFD7FE00, - 0xAFD6CB00, 0xAFD59800, 0xAFD46500, - 0xAFD33200, 0xAFD1FF00, 0xAFD0CC00, - 0xAFCF9900, 0xAFCE6600, 0xAFCD3300, - 0xAFCC0000, 0xAFCACD00, 0xAFC99A00, - 0xAFC86700, 0xAFC73400, 0xAFC60100, - 0xAFC4CE00, 0xAFC39B00, 0xAFC26800, - 0xAFC13500, 0xAFC00200, 0xAFBECF00, - 0xAFBD9C00, 0xAFBC6900, 0xAFBB3600, - 0xAFBA0300, 0xAFB8D000, 0xAFB79D00, - 0xAFB66A00, 0xAFB53700, 0xAFB40400, - 0xAFB2D100, 0xAFB19E00, 0xAFB06B00, - 0xAFAF3800, 0xAFAE0500, 0xAFACD200, - 0xAFAB9F00, 0xAFAA6C00, 0xAFA93900, - 0xAFA80600, 0xAFA6D300, 0xAFA5A000, - 0xAFA46D00, 0xAFA33A00, 0xAFA20700, - 0xAFA0D400, 0xAF9FA100, 0xAF9E6E00, - 0xAF9D3B00, 0xAF9C0800, 0xAF9AD500, - 0xAF99A200, 0xAF986F00, 0xAF973C00, - 0xAF960900, 0xAF94D600, 0xAF93A300, - 0xAF927000, 0xAF913D00, 0xAF900A00, - 0xAF8ED700, 0xAF8DA400, 0xAF8C7100, - 0xAF8B3E00, 0xAF8A0B00, 0xAF88D800, - 0xAF87A500, 0xAF867200, 0xAF853F00, - 0xAF840C00, 0xAF82D900, 0xAF81A600, - 0xAF807300, 0xAF7F4000, 0xAF7E0D00, - 0xAF7CDA00, 0xAF7BA700, 0xAF7A7400, - 0xAF794100, 0xAF780E00, 0xAF76DB00, - 0xAF75A800, 0xAF747500, 0xAF734200, - 0xAF720F00, 0xAF70DC00, 0xAF6FA900, - 0xAF6E7600, 0xAF6D4300, 0xAF6C1000, - 0xAF6ADD00, 0xAF69AA00, 0xAF687700, - 0xAF674400, 0xAF661100, 0xAF64DE00, - 0xAF63AB00, 0xAF627800, 0xAF614500, - 0xAF601200, 0xAF5EDF00, 0xAF5DAC00, - 0xAF5C7900, 0xAF5B4600, 0xAF5A1300, - 0xAF58E000, 0xAF57AD00, 0xAF567A00, - 0xAF554700, 0xAF541400, 0xAF52E100, - 0xAF51AE00, 0xAF507B00, 0xAF4F4800, - 0xAF4E1500, 0xAF4CE200, 0xAF4BAF00, - 0xAF4A7C00, 0xAF494900, 0xAF481600, - 0xAF46E300, 0xAF45B000, 0xAF447D00, - 0xAF434A00, 0xAF421700, 0xAF40E400, - 0xAF3FB100, 0xAF3E7E00, 0xAF3D4B00, - 0xAF3C1800, 0xAF3AE500, 0xAF39B200, - 0xAF387F00, 0xAF374C00, 0xAF361900, - 0xAF34E600, 0xAF33B300, 0xAF328000, - 0xAF314D00, 0xAF301A00, 0xAF2EE700, - 0xAF2DB400, 0xAF2C8100, 0xAF2B4E00, - 0xAF2A1B00, 0xAF28E800, 0xAF27B500, - 0xAF268200, 0xAF254F00, 0xAF241C00, - 0xAF22E900, 0xAF21B600, 0xAF208300, - 0xAF1F5000, 0xAF1E1D00, 0xAF1CEA00, - 0xAF1BB700, 0xAF1A8400, 0xAF195100, - 0xAF181E00, 0xAF16EB00, 0xAF15B800, - 0xAF148500, 0xAF135200, 0xAF121F00, - 0xAF10EC00, 0xAF0FB900, 0xAF0E8600, - 0xAF0D5300, 0xAF0C2000, 0xAF0AED00, - 0xAF09BA00, 0xAF088700, 0xAF075400, - 0xAF062100, 0xAF04EE00, 0xAF03BB00, - 0xAF028800, 0xAF015500, 0xAF002200, - 0xAEFEEF00, 0xAEFDBC00, 0xAEFC8900, - 0xAEFB5600, 0xAEFA2300, 0xAEF8F000, - 0xAEF7BD00, 0xAEF68A00, 0xAEF55700, - 0xAEF42400, 0xAEF2F100, 0xAEF1BE00, - 0xAEF08B00, 0xAEEF5800, 0xAEEE2500, - 0xAEECF200, 0xAEEBBF00, 0xAEEA8C00, - 0xAEE95900, 0xAEE82600, 0xAEE6F300, - 0xAEE5C000, 0xAEE48D00, 0xAEE35A00, - 0xAEE22700, 0xAEE0F400, 0xAEDFC100, - 0xAEDE8E00, 0xAEDD5B00, 0xAEDC2800, - 0xAEDAF500, 0xAED9C200, 0xAED88F00, - 0xAED75C00, 0xAED62900, 0xAED4F600, - 0xAED3C300, 0xAED29000, 0xAED15D00, - 0xAED02A00, 0xAECEF700, 0xAECDC400, - 0xAECC9100, 0xAECB5E00, 0xAECA2B00, - 0xAEC8F800, 0xAEC7C500, 0xAEC69200, - 0xAEC55F00, 0xAEC42C00, 0xAEC2F900, - 0xAEC1C600, 0xAEC09300, 0xAEBF6000, - 0xAEBE2D00, 0xAEBCFA00, 0xAEBBC700, - 0xAEBA9400, 0xAEB96100, 0xAEB82E00, - 0xAEB6FB00, 0xAEB5C800, 0xAEB49500, - 0xAEB36200, 0xAEB22F00, 0xAEB0FC00, - 0xAEAFC900, 0xAEAE9600, 0xAEAD6300, - 0xAEAC3000, 0xAEAAFD00, 0xAEA9CA00, - 0xAEA89700, 0xAEA76400, 0xAEA63100, - 0xAEA4FE00, 0xAEA3CB00, 0xAEA29800, - 0xAEA16500, 0xAEA03200, 0xAE9EFF00, - 0xAE9DCC00, 0xAE9C9900, 0xAE9B6600, - 0xAE9A3300, 0xAE990000, 0xAE97CD00, - 0xAE969A00, 0xAE956700, 0xAE943400, - 0xAE930100, 0xAE91CE00, 0xAE909B00, - 0xAE8F6800, 0xAE8E3500, 0xAE8D0200, - 0xAE8BCF00, 0xAE8A9C00, 0xAE896900, - 0xAE883600, 0xAE870300, 0xAE85D000, - 0xAE849D00, 0xAE836A00, 0xAE823700, - 0xAE810400, 0xAE7FD100, 0xAE7E9E00, - 0xAE7D6B00, 0xAE7C3800, 0xAE7B0500, - 0xAE79D200, 0xAE789F00, 0xAE776C00, - 0xAE763900, 0xAE750600, 0xAE73D300, - 0xAE72A000, 0xAE716D00, 0xAE703A00, - 0xAE6F0700, 0xAE6DD400, 0xAE6CA100, - 0xAE6B6E00, 0xAE6A3B00, 0xAE690800, - 0xAE67D500, 0xAE66A200, 0xAE656F00, - 0xAE643C00, 0xAE630900, 0xAE61D600, - 0xAE60A300, 0xAE5F7000, 0xAE5E3D00, - 0xAE5D0A00, 0xAE5BD700, 0xAE5AA400, - 0xAE597100, 0xAE583E00, 0xAE570B00, - 0xAE55D800, 0xAE54A500, 0xAE537200, - 0xAE523F00, 0xAE510C00, 0xAE4FD900, - 0xAE4EA600, 0xAE4D7300, 0xAE4C4000, - 0xAE4B0D00, 0xAE49DA00, 0xAE48A700, - 0xAE477400, 0xAE464100, 0xAE450E00, - 0xAE43DB00, 0xAE42A800, 0xAE417500, - 0xAE404200, 0xAE3F0F00, 0xAE3DDC00, - 0xAE3CA900, 0xAE3B7600, 0xAE3A4300, - 0xAE391000, 0xAE37DD00, 0xAE36AA00, - 0xAE357700, 0xAE344400, 0xAE331100, - 0xAE31DE00, 0xAE30AB00, 0xAE2F7800, - 0xAE2E4500, 0xAE2D1200, 0xAE2BDF00, - 0xAE2AAC00, 0xAE297900, 0xAE284600, - 0xAE271300, 0xAE25E000, 0xAE24AD00, - 0xAE237A00, 0xAE224700, 0xAE211400, - 0xAE1FE100, 0xAE1EAE00, 0xAE1D7B00, - 0xAE1C4800, 0xAE1B1500, 0xAE19E200, - 0xAE18AF00, 0xAE177C00, 0xAE164900, - 0xAE151600, 0xAE13E300, 0xAE12B000, - 0xAE117D00, 0xAE104A00, 0xAE0F1700, - 0xAE0DE400, 0xAE0CB100, 0xAE0B7E00, - 0xAE0A4B00, 0xAE091800, 0xAE07E500, - 0xAE06B200, 0xAE057F00, 0xAE044C00, - 0xAE031900, 0xAE01E600, 0xAE00B300, - 0xADFF8000, 0xADFE4D00, 0xADFD1A00, - 0xADFBE700, 0xADFAB400, 0xADF98100, - 0xADF84E00, 0xADF71B00, 0xADF5E800, - 0xADF4B500, 0xADF38200, 0xADF24F00, - 0xADF11C00, 0xADEFE900, 0xADEEB600, - 0xADED8300, 0xADEC5000, 0xADEB1D00, - 0xADE9EA00, 0xADE8B700, 0xADE78400, - 0xADE65100, 0xADE51E00, 0xADE3EB00, - 0xADE2B800, 0xADE18500, 0xADE05200, - 0xADDF1F00, 0xADDDEC00, 0xADDCB900, - 0xADDB8600, 0xADDA5300, 0xADD92000, - 0xADD7ED00, 0xADD6BA00, 0xADD58700, - 0xADD45400, 0xADD32100, 0xADD1EE00, - 0xADD0BB00, 0xADCF8800, 0xADCE5500, - 0xADCD2200, 0xADCBEF00, 0xADCABC00, - 0xADC98900, 0xADC85600, 0xADC72300, - 0xADC5F000, 0xADC4BD00, 0xADC38A00, - 0xADC25700, 0xADC12400, 0xADBFF100, - 0xADBEBE00, 0xADBD8B00, 0xADBC5800, - 0xADBB2500, 0xADB9F200, 0xADB8BF00, - 0xADB78C00, 0xADB65900, 0xADB52600, - 0xADB3F300, 0xADB2C000, 0xADB18D00, - 0xADB05A00, 0xADAF2700, 0xADADF400, - 0xADACC100, 0xADAB8E00, 0xADAA5B00, - 0xADA92800, 0xADA7F500, 0xADA6C200, - 0xADA58F00, 0xADA45C00, 0xADA32900, - 0xADA1F600, 0xADA0C300, 0xAD9F9000, - 0xAD9E5D00, 0xAD9D2A00, 0xAD9BF700, - 0xAD9AC400, 0xAD999100, 0xAD985E00, - 0xAD972B00, 0xAD95F800, 0xAD94C500, - 0xAD939200, 0xAD925F00, 0xAD912C00, - 0xAD8FF900, 0xAD8EC600, 0xAD8D9300, - 0xAD8C6000, 0xAD8B2D00, 0xAD89FA00, - 0xAD88C700, 0xAD879400, 0xAD866100, - 0xAD852E00, 0xAD83FB00, 0xAD82C800, - 0xAD819500, 0xAD806200, 0xAD7F2F00, - 0xAD7DFC00, 0xAD7CC900, 0xAD7B9600, - 0xAD7A6300, 0xAD793000, 0xAD77FD00, - 0xAD76CA00, 0xAD759700, 0xAD746400, - 0xAD733100, 0xAD71FE00, 0xAD70CB00, - 0xAD6F9800, 0xAD6E6500, 0xAD6D3200, - 0xAD6BFF00, 0xAD6ACC00, 0xAD699900, - 0xAD686600, 0xAD673300, 0xAD660000, - 0xAD64CD00, 0xAD639A00, 0xAD626700, - 0xAD613400, 0xAD600100, 0xAD5ECE00, - 0xAD5D9B00, 0xAD5C6800, 0xAD5B3500, - 0xAD5A0200, 0xAD58CF00, 0xAD579C00, - 0xAD566900, 0xAD553600, 0xAD540300, - 0xAD52D000, 0xAD519D00, 0xAD506A00, - 0xAD4F3700, 0xAD4E0400, 0xAD4CD100, - 0xAD4B9E00, 0xAD4A6B00, 0xAD493800, - 0xAD480500, 0xAD46D200, 0xAD459F00, - 0xAD446C00, 0xAD433900, 0xAD420600, - 0xAD40D300, 0xAD3FA000, 0xAD3E6D00, - 0xAD3D3A00, 0xAD3C0700, 0xAD3AD400, - 0xAD39A100, 0xAD386E00, 0xAD373B00, - 0xAD360800, 0xAD34D500, 0xAD33A200, - 0xAD326F00, 0xAD313C00, 0xAD300900, - 0xAD2ED600, 0xAD2DA300, 0xAD2C7000, - 0xAD2B3D00, 0xAD2A0A00, 0xAD28D700, - 0xAD27A400, 0xAD267100, 0xAD253E00, - 0xAD240B00, 0xAD22D800, 0xAD21A500, - 0xAD207200, 0xAD1F3F00, 0xAD1E0C00, - 0xAD1CD900, 0xAD1BA600, 0xAD1A7300, - 0xAD194000, 0xAD180D00, 0xAD16DA00, - 0xAD15A700, 0xAD147400, 0xAD134100, - 0xAD120E00, 0xAD10DB00, 0xAD0FA800, - 0xAD0E7500, 0xAD0D4200, 0xAD0C0F00, - 0xAD0ADC00, 0xAD09A900, 0xAD087600, - 0xAD074300, 0xAD061000, 0xAD04DD00, - 0xAD03AA00, 0xAD027700, 0xAD014400, - 0xAD001100, 0xACFEDE00, 0xACFDAB00, - 0xACFC7800, 0xACFB4500, 0xACFA1200, - 0xACF8DF00, 0xACF7AC00, 0xACF67900, - 0xACF54600, 0xACF41300, 0xACF2E000, - 0xACF1AD00, 0xACF07A00, 0xACEF4700, - 0xACEE1400, 0xACECE100, 0xACEBAE00, - 0xACEA7B00, 0xACE94800, 0xACE81500, - 0xACE6E200, 0xACE5AF00, 0xACE47C00, - 0xACE34900, 0xACE21600, 0xACE0E300, - 0xACDFB000, 0xACDE7D00, 0xACDD4A00, - 0xACDC1700, 0xACDAE400, 0xACD9B100, - 0xACD87E00, 0xACD74B00, 0xACD61800, - 0xACD4E500, 0xACD3B200, 0xACD27F00, - 0xACD14C00, 0xACD01900, 0xACCEE600, - 0xACCDB300, 0xACCC8000, 0xACCB4D00, - 0xACCA1A00, 0xACC8E700, 0xACC7B400, - 0xACC68100, 0xACC54E00, 0xACC41B00, - 0xACC2E800, 0xACC1B500, 0xACC08200, - 0xACBF4F00, 0xACBE1C00, 0xACBCE900, - 0xACBBB600, 0xACBA8300, 0xACB95000, - 0xACB81D00, 0xACB6EA00, 0xACB5B700, - 0xACB48400, 0xACB35100, 0xACB21E00, - 0xACB0EB00, 0xACAFB800, 0xACAE8500, - 0xACAD5200, 0xACAC1F00, 0xACAAEC00, - 0xACA9B900, 0xACA88600, 0xACA75300, - 0xACA62000, 0xACA4ED00, 0xACA3BA00, - 0xACA28700, 0xACA15400, 0xACA02100, - 0xAC9EEE00, 0xAC9DBB00, 0xAC9C8800, - 0xAC9B5500, 0xAC9A2200, 0xAC98EF00, - 0xAC97BC00, 0xAC968900, 0xAC955600, - 0xAC942300, 0xAC92F000, 0xAC91BD00, - 0xAC908A00, 0xAC8F5700, 0xAC8E2400, - 0xAC8CF100, 0xAC8BBE00, 0xAC8A8B00, - 0xAC895800, 0xAC882500, 0xAC86F200, - 0xAC85BF00, 0xAC848C00, 0xAC835900, - 0xAC822600, 0xAC80F300, 0xAC7FC000, - 0xAC7E8D00, 0xAC7D5A00, 0xAC7C2700, - 0xAC7AF400, 0xAC79C100, 0xAC788E00, - 0xAC775B00, 0xAC762800, 0xAC74F500, - 0xAC73C200, 0xAC728F00, 0xAC715C00, - 0xAC702900, 0xAC6EF600, 0xAC6DC300, - 0xAC6C9000, 0xAC6B5D00, 0xAC6A2A00, - 0xAC68F700, 0xAC67C400, 0xAC669100, - 0xAC655E00, 0xAC642B00, 0xAC62F800, - 0xAC61C500, 0xAC609200, 0xAC5F5F00, - 0xAC5E2C00, 0xAC5CF900, 0xAC5BC600, - 0xAC5A9300, 0xAC596000, 0xAC582D00, - 0xAC56FA00, 0xAC55C700, 0xAC549400, - 0xAC536100, 0xAC522E00, 0xAC50FB00, - 0xAC4FC800, 0xAC4E9500, 0xAC4D6200, - 0xAC4C2F00, 0xAC4AFC00, 0xAC49C900, - 0xAC489600, 0xAC476300, 0xAC463000, - 0xAC44FD00, 0xAC43CA00, 0xAC429700, - 0xAC416400, 0xAC403100, 0xAC3EFE00, - 0xAC3DCB00, 0xAC3C9800, 0xAC3B6500, - 0xAC3A3200, 0xAC38FF00, 0xAC37CC00, - 0xAC369900, 0xAC356600, 0xAC343300, - 0xAC330000, 0xAC31CD00, 0xAC309A00, - 0xAC2F6700, 0xAC2E3400, 0xAC2D0100, - 0xAC2BCE00, 0xAC2A9B00, 0xAC296800, - 0xAC283500, 0xAC270200, 0xAC25CF00, - 0xAC249C00, 0xAC236900, 0xAC223600, - 0xAC210300, 0xAC1FD000, 0xAC1E9D00, - 0xAC1D6A00, 0xAC1C3700, 0xAC1B0400, - 0xAC19D100, 0xAC189E00, 0xAC176B00, - 0xAC163800, 0xAC150500, 0xAC13D200, - 0xAC129F00, 0xAC116C00, 0xAC103900, - 0xAC0F0600, 0xAC0DD300, 0xAC0CA000, - 0xAC0B6D00, 0xAC0A3A00, 0xAC090700, - 0xAC07D400, 0xAC06A100, 0xAC056E00, - 0xAC043B00, 0xAC030800, 0xAC01D500, - 0xAC00A200, 0xABFF6F00, 0xABFE3C00, - 0xABFD0900, 0xABFBD600, 0xABFAA300, - 0xABF97000, 0xABF83D00, 0xABF70A00, - 0xABF5D700, 0xABF4A400, 0xABF37100, - 0xABF23E00, 0xABF10B00, 0xABEFD800, - 0xABEEA500, 0xABED7200, 0xABEC3F00, - 0xABEB0C00, 0xABE9D900, 0xABE8A600, - 0xABE77300, 0xABE64000, 0xABE50D00, - 0xABE3DA00, 0xABE2A700, 0xABE17400, - 0xABE04100, 0xABDF0E00, 0xABDDDB00, - 0xABDCA800, 0xABDB7500, 0xABDA4200, - 0xABD90F00, 0xABD7DC00, 0xABD6A900, - 0xABD57600, 0xABD44300, 0xABD31000, - 0xABD1DD00, 0xABD0AA00, 0xABCF7700, - 0xABCE4400, 0xABCD1100, 0xABCBDE00, - 0xABCAAB00, 0xABC97800, 0xABC84500, - 0xABC71200, 0xABC5DF00, 0xABC4AC00, - 0xABC37900, 0xABC24600, 0xABC11300, - 0xABBFE000, 0xABBEAD00, 0xABBD7A00, - 0xABBC4700, 0xABBB1400, 0xABB9E100, - 0xABB8AE00, 0xABB77B00, 0xABB64800, - 0xABB51500, 0xABB3E200, 0xABB2AF00, - 0xABB17C00, 0xABB04900, 0xABAF1600, - 0xABADE300, 0xABACB000, 0xABAB7D00, - 0xABAA4A00, 0xABA91700, 0xABA7E400, - 0xABA6B100, 0xABA57E00, 0xABA44B00, - 0xABA31800, 0xABA1E500, 0xABA0B200, - 0xAB9F7F00, 0xAB9E4C00, 0xAB9D1900, - 0xAB9BE600, 0xAB9AB300, 0xAB998000, - 0xAB984D00, 0xAB971A00, 0xAB95E700, - 0xAB94B400, 0xAB938100, 0xAB924E00, - 0xAB911B00, 0xAB8FE800, 0xAB8EB500, - 0xAB8D8200, 0xAB8C4F00, 0xAB8B1C00, - 0xAB89E900, 0xAB88B600, 0xAB878300, - 0xAB865000, 0xAB851D00, 0xAB83EA00, - 0xAB82B700, 0xAB818400, 0xAB805100, - 0xAB7F1E00, 0xAB7DEB00, 0xAB7CB800, - 0xAB7B8500, 0xAB7A5200, 0xAB791F00, - 0xAB77EC00, 0xAB76B900, 0xAB758600, - 0xAB745300, 0xAB732000, 0xAB71ED00, - 0xAB70BA00, 0xAB6F8700, 0xAB6E5400, - 0xAB6D2100, 0xAB6BEE00, 0xAB6ABB00, - 0xAB698800, 0xAB685500, 0xAB672200, - 0xAB65EF00, 0xAB64BC00, 0xAB638900, - 0xAB625600, 0xAB612300, 0xAB5FF000, - 0xAB5EBD00, 0xAB5D8A00, 0xAB5C5700, - 0xAB5B2400, 0xAB59F100, 0xAB58BE00, - 0xAB578B00, 0xAB565800, 0xAB552500, - 0xAB53F200, 0xAB52BF00, 0xAB518C00, - 0xAB505900, 0xAB4F2600, 0xAB4DF300, - 0xAB4CC000, 0xAB4B8D00, 0xAB4A5A00, - 0xAB492700, 0xAB47F400, 0xAB46C100, - 0xAB458E00, 0xAB445B00, 0xAB432800, - 0xAB41F500, 0xAB40C200, 0xAB3F8F00, - 0xAB3E5C00, 0xAB3D2900, 0xAB3BF600, - 0xAB3AC300, 0xAB399000, 0xAB385D00, - 0xAB372A00, 0xAB35F700, 0xAB34C400, - 0xAB339100, 0xAB325E00, 0xAB312B00, - 0xAB2FF800, 0xAB2EC500, 0xAB2D9200, - 0xAB2C5F00, 0xAB2B2C00, 0xAB29F900, - 0xAB28C600, 0xAB279300, 0xAB266000, - 0xAB252D00, 0xAB23FA00, 0xAB22C700, - 0xAB219400, 0xAB206100, 0xAB1F2E00, - 0xAB1DFB00, 0xAB1CC800, 0xAB1B9500, - 0xAB1A6200, 0xAB192F00, 0xAB17FC00, - 0xAB16C900, 0xAB159600, 0xAB146300, - 0xAB133000, 0xAB11FD00, 0xAB10CA00, - 0xAB0F9700, 0xAB0E6400, 0xAB0D3100, - 0xAB0BFE00, 0xAB0ACB00, 0xAB099800, - 0xAB086500, 0xAB073200, 0xAB05FF00, - 0xAB04CC00, 0xAB039900, 0xAB026600, - 0xAB013300, 0xAB000000, 0xAAFEE080, - 0xAAFDC100, 0xAAFCA180, 0xAAFB8200, - 0xAAFA6280, 0xAAF94300, 0xAAF82380, - 0xAAF70400, 0xAAF5E480, 0xAAF4C500, - 0xAAF3A580, 0xAAF28600, 0xAAF16680, - 0xAAF04700, 0xAAEF2780, 0xAAEE0800, - 0xAAECE880, 0xAAEBC900, 0xAAEAA980, - 0xAAE98A00, 0xAAE86A80, 0xAAE74B00, - 0xAAE62B80, 0xAAE50C00, 0xAAE3EC80, - 0xAAE2CD00, 0xAAE1AD80, 0xAAE08E00, - 0xAADF6E80, 0xAADE4F00, 0xAADD2F80, - 0xAADC1000, 0xAADAF080, 0xAAD9D100, - 0xAAD8B180, 0xAAD79200, 0xAAD67280, - 0xAAD55300, 0xAAD43380, 0xAAD31400, - 0xAAD1F480, 0xAAD0D500, 0xAACFB580, - 0xAACE9600, 0xAACD7680, 0xAACC5700, - 0xAACB3780, 0xAACA1800, 0xAAC8F880, - 0xAAC7D900, 0xAAC6B980, 0xAAC59A00, - 0xAAC47A80, 0xAAC35B00, 0xAAC23B80, - 0xAAC11C00, 0xAABFFC80, 0xAABEDD00, - 0xAABDBD80, 0xAABC9E00, 0xAABB7E80, - 0xAABA5F00, 0xAAB93F80, 0xAAB82000, - 0xAAB70080, 0xAAB5E100, 0xAAB4C180, - 0xAAB3A200, 0xAAB28280, 0xAAB16300, - 0xAAB04380, 0xAAAF2400, 0xAAAE0480, - 0xAAACE500, 0xAAABC580, 0xAAAAA600, - 0xAAA98680, 0xAAA86700, 0xAAA74780, - 0xAAA62800, 0xAAA50880, 0xAAA3E900, - 0xAAA2C980, 0xAAA1AA00, 0xAAA08A80, - 0xAA9F6B00, 0xAA9E4B80, 0xAA9D2C00, - 0xAA9C0C80, 0xAA9AED00, 0xAA99CD80, - 0xAA98AE00, 0xAA978E80, 0xAA966F00, - 0xAA954F80, 0xAA943000, 0xAA931080, - 0xAA91F100, 0xAA90D180, 0xAA8FB200, - 0xAA8E9280, 0xAA8D7300, 0xAA8C5380, - 0xAA8B3400, 0xAA8A1480, 0xAA88F500, - 0xAA87D580, 0xAA86B600, 0xAA859680, - 0xAA847700, 0xAA835780, 0xAA823800, - 0xAA811880, 0xAA7FF900, 0xAA7ED980, - 0xAA7DBA00, 0xAA7C9A80, 0xAA7B7B00, - 0xAA7A5B80, 0xAA793C00, 0xAA781C80, - 0xAA76FD00, 0xAA75DD80, 0xAA74BE00, - 0xAA739E80, 0xAA727F00, 0xAA715F80, - 0xAA704000, 0xAA6F2080, 0xAA6E0100, - 0xAA6CE180, 0xAA6BC200, 0xAA6AA280, - 0xAA698300, 0xAA686380, 0xAA674400, - 0xAA662480, 0xAA650500, 0xAA63E580, - 0xAA62C600, 0xAA61A680, 0xAA608700, - 0xAA5F6780, 0xAA5E4800, 0xAA5D2880, - 0xAA5C0900, 0xAA5AE980, 0xAA59CA00, - 0xAA58AA80, 0xAA578B00, 0xAA566B80, - 0xAA554C00, 0xAA542C80, 0xAA530D00, - 0xAA51ED80, 0xAA50CE00, 0xAA4FAE80, - 0xAA4E8F00, 0xAA4D6F80, 0xAA4C5000, - 0xAA4B3080, 0xAA4A1100, 0xAA48F180, - 0xAA47D200, 0xAA46B280, 0xAA459300, - 0xAA447380, 0xAA435400, 0xAA423480, - 0xAA411500, 0xAA3FF580, 0xAA3ED600, - 0xAA3DB680, 0xAA3C9700, 0xAA3B7780, - 0xAA3A5800, 0xAA393880, 0xAA381900, - 0xAA36F980, 0xAA35DA00, 0xAA34BA80, - 0xAA339B00, 0xAA327B80, 0xAA315C00, - 0xAA303C80, 0xAA2F1D00, 0xAA2DFD80, - 0xAA2CDE00, 0xAA2BBE80, 0xAA2A9F00, - 0xAA297F80, 0xAA286000, 0xAA274080, - 0xAA262100, 0xAA250180, 0xAA23E200, - 0xAA22C280, 0xAA21A300, 0xAA208380, - 0xAA1F6400, 0xAA1E4480, 0xAA1D2500, - 0xAA1C0580, 0xAA1AE600, 0xAA19C680, - 0xAA18A700, 0xAA178780, 0xAA166800, - 0xAA154880, 0xAA142900, 0xAA130980, - 0xAA11EA00, 0xAA10CA80, 0xAA0FAB00, - 0xAA0E8B80, 0xAA0D6C00, 0xAA0C4C80, - 0xAA0B2D00, 0xAA0A0D80, 0xAA08EE00, - 0xAA07CE80, 0xAA06AF00, 0xAA058F80, - 0xAA047000, 0xAA035080, 0xAA023100, - 0xAA011180, 0xA9FFF200, 0xA9FED280, - 0xA9FDB300, 0xA9FC9380, 0xA9FB7400, - 0xA9FA5480, 0xA9F93500, 0xA9F81580, - 0xA9F6F600, 0xA9F5D680, 0xA9F4B700, - 0xA9F39780, 0xA9F27800, 0xA9F15880, - 0xA9F03900, 0xA9EF1980, 0xA9EDFA00, - 0xA9ECDA80, 0xA9EBBB00, 0xA9EA9B80, - 0xA9E97C00, 0xA9E85C80, 0xA9E73D00, - 0xA9E61D80, 0xA9E4FE00, 0xA9E3DE80, - 0xA9E2BF00, 0xA9E19F80, 0xA9E08000, - 0xA9DF6080, 0xA9DE4100, 0xA9DD2180, - 0xA9DC0200, 0xA9DAE280, 0xA9D9C300, - 0xA9D8A380, 0xA9D78400, 0xA9D66480, - 0xA9D54500, 0xA9D42580, 0xA9D30600, - 0xA9D1E680, 0xA9D0C700, 0xA9CFA780, - 0xA9CE8800, 0xA9CD6880, 0xA9CC4900, - 0xA9CB2980, 0xA9CA0A00, 0xA9C8EA80, - 0xA9C7CB00, 0xA9C6AB80, 0xA9C58C00, - 0xA9C46C80, 0xA9C34D00, 0xA9C22D80, - 0xA9C10E00, 0xA9BFEE80, 0xA9BECF00, - 0xA9BDAF80, 0xA9BC9000, 0xA9BB7080, - 0xA9BA5100, 0xA9B93180, 0xA9B81200, - 0xA9B6F280, 0xA9B5D300, 0xA9B4B380, - 0xA9B39400, 0xA9B27480, 0xA9B15500, - 0xA9B03580, 0xA9AF1600, 0xA9ADF680, - 0xA9ACD700, 0xA9ABB780, 0xA9AA9800, - 0xA9A97880, 0xA9A85900, 0xA9A73980, - 0xA9A61A00, 0xA9A4FA80, 0xA9A3DB00, - 0xA9A2BB80, 0xA9A19C00, 0xA9A07C80, - 0xA99F5D00, 0xA99E3D80, 0xA99D1E00, - 0xA99BFE80, 0xA99ADF00, 0xA999BF80, - 0xA998A000, 0xA9978080, 0xA9966100, - 0xA9954180, 0xA9942200, 0xA9930280, - 0xA991E300, 0xA990C380, 0xA98FA400, - 0xA98E8480, 0xA98D6500, 0xA98C4580, - 0xA98B2600, 0xA98A0680, 0xA988E700, - 0xA987C780, 0xA986A800, 0xA9858880, - 0xA9846900, 0xA9834980, 0xA9822A00, - 0xA9810A80, 0xA97FEB00, 0xA97ECB80, - 0xA97DAC00, 0xA97C8C80, 0xA97B6D00, - 0xA97A4D80, 0xA9792E00, 0xA9780E80, - 0xA976EF00, 0xA975CF80, 0xA974B000, - 0xA9739080, 0xA9727100, 0xA9715180, - 0xA9703200, 0xA96F1280, 0xA96DF300, - 0xA96CD380, 0xA96BB400, 0xA96A9480, - 0xA9697500, 0xA9685580, 0xA9673600, - 0xA9661680, 0xA964F700, 0xA963D780, - 0xA962B800, 0xA9619880, 0xA9607900, - 0xA95F5980, 0xA95E3A00, 0xA95D1A80, - 0xA95BFB00, 0xA95ADB80, 0xA959BC00, - 0xA9589C80, 0xA9577D00, 0xA9565D80, - 0xA9553E00, 0xA9541E80, 0xA952FF00, - 0xA951DF80, 0xA950C000, 0xA94FA080, - 0xA94E8100, 0xA94D6180, 0xA94C4200, - 0xA94B2280, 0xA94A0300, 0xA948E380, - 0xA947C400, 0xA946A480, 0xA9458500, - 0xA9446580, 0xA9434600, 0xA9422680, - 0xA9410700, 0xA93FE780, 0xA93EC800, - 0xA93DA880, 0xA93C8900, 0xA93B6980, - 0xA93A4A00, 0xA9392A80, 0xA9380B00, - 0xA936EB80, 0xA935CC00, 0xA934AC80, - 0xA9338D00, 0xA9326D80, 0xA9314E00, - 0xA9302E80, 0xA92F0F00, 0xA92DEF80, - 0xA92CD000, 0xA92BB080, 0xA92A9100, - 0xA9297180, 0xA9285200, 0xA9273280, - 0xA9261300, 0xA924F380, 0xA923D400, - 0xA922B480, 0xA9219500, 0xA9207580, - 0xA91F5600, 0xA91E3680, 0xA91D1700, - 0xA91BF780, 0xA91AD800, 0xA919B880, - 0xA9189900, 0xA9177980, 0xA9165A00, - 0xA9153A80, 0xA9141B00, 0xA912FB80, - 0xA911DC00, 0xA910BC80, 0xA90F9D00, - 0xA90E7D80, 0xA90D5E00, 0xA90C3E80, - 0xA90B1F00, 0xA909FF80, 0xA908E000, - 0xA907C080, 0xA906A100, 0xA9058180, - 0xA9046200, 0xA9034280, 0xA9022300, - 0xA9010380, 0xA8FFE400, 0xA8FEC480, - 0xA8FDA500, 0xA8FC8580, 0xA8FB6600, - 0xA8FA4680, 0xA8F92700, 0xA8F80780, - 0xA8F6E800, 0xA8F5C880, 0xA8F4A900, - 0xA8F38980, 0xA8F26A00, 0xA8F14A80, - 0xA8F02B00, 0xA8EF0B80, 0xA8EDEC00, - 0xA8ECCC80, 0xA8EBAD00, 0xA8EA8D80, - 0xA8E96E00, 0xA8E84E80, 0xA8E72F00, - 0xA8E60F80, 0xA8E4F000, 0xA8E3D080, - 0xA8E2B100, 0xA8E19180, 0xA8E07200, - 0xA8DF5280, 0xA8DE3300, 0xA8DD1380, - 0xA8DBF400, 0xA8DAD480, 0xA8D9B500, - 0xA8D89580, 0xA8D77600, 0xA8D65680, - 0xA8D53700, 0xA8D41780, 0xA8D2F800, - 0xA8D1D880, 0xA8D0B900, 0xA8CF9980, - 0xA8CE7A00, 0xA8CD5A80, 0xA8CC3B00, - 0xA8CB1B80, 0xA8C9FC00, 0xA8C8DC80, - 0xA8C7BD00, 0xA8C69D80, 0xA8C57E00, - 0xA8C45E80, 0xA8C33F00, 0xA8C21F80, - 0xA8C10000, 0xA8BFE080, 0xA8BEC100, - 0xA8BDA180, 0xA8BC8200, 0xA8BB6280, - 0xA8BA4300, 0xA8B92380, 0xA8B80400, - 0xA8B6E480, 0xA8B5C500, 0xA8B4A580, - 0xA8B38600, 0xA8B26680, 0xA8B14700, - 0xA8B02780, 0xA8AF0800, 0xA8ADE880, - 0xA8ACC900, 0xA8ABA980, 0xA8AA8A00, - 0xA8A96A80, 0xA8A84B00, 0xA8A72B80, - 0xA8A60C00, 0xA8A4EC80, 0xA8A3CD00, - 0xA8A2AD80, 0xA8A18E00, 0xA8A06E80, - 0xA89F4F00, 0xA89E2F80, 0xA89D1000, - 0xA89BF080, 0xA89AD100, 0xA899B180, - 0xA8989200, 0xA8977280, 0xA8965300, - 0xA8953380, 0xA8941400, 0xA892F480, - 0xA891D500, 0xA890B580, 0xA88F9600, - 0xA88E7680, 0xA88D5700, 0xA88C3780, - 0xA88B1800, 0xA889F880, 0xA888D900, - 0xA887B980, 0xA8869A00, 0xA8857A80, - 0xA8845B00, 0xA8833B80, 0xA8821C00, - 0xA880FC80, 0xA87FDD00, 0xA87EBD80, - 0xA87D9E00, 0xA87C7E80, 0xA87B5F00, - 0xA87A3F80, 0xA8792000, 0xA8780080, - 0xA876E100, 0xA875C180, 0xA874A200, - 0xA8738280, 0xA8726300, 0xA8714380, - 0xA8702400, 0xA86F0480, 0xA86DE500, - 0xA86CC580, 0xA86BA600, 0xA86A8680, - 0xA8696700, 0xA8684780, 0xA8672800, - 0xA8660880, 0xA864E900, 0xA863C980, - 0xA862AA00, 0xA8618A80, 0xA8606B00, - 0xA85F4B80, 0xA85E2C00, 0xA85D0C80, - 0xA85BED00, 0xA85ACD80, 0xA859AE00, - 0xA8588E80, 0xA8576F00, 0xA8564F80, - 0xA8553000, 0xA8541080, 0xA852F100, - 0xA851D180, 0xA850B200, 0xA84F9280, - 0xA84E7300, 0xA84D5380, 0xA84C3400, - 0xA84B1480, 0xA849F500, 0xA848D580, - 0xA847B600, 0xA8469680, 0xA8457700, - 0xA8445780, 0xA8433800, 0xA8421880, - 0xA840F900, 0xA83FD980, 0xA83EBA00, - 0xA83D9A80, 0xA83C7B00, 0xA83B5B80, - 0xA83A3C00, 0xA8391C80, 0xA837FD00, - 0xA836DD80, 0xA835BE00, 0xA8349E80, - 0xA8337F00, 0xA8325F80, 0xA8314000, - 0xA8302080, 0xA82F0100, 0xA82DE180, - 0xA82CC200, 0xA82BA280, 0xA82A8300, - 0xA8296380, 0xA8284400, 0xA8272480, - 0xA8260500, 0xA824E580, 0xA823C600, - 0xA822A680, 0xA8218700, 0xA8206780, - 0xA81F4800, 0xA81E2880, 0xA81D0900, - 0xA81BE980, 0xA81ACA00, 0xA819AA80, - 0xA8188B00, 0xA8176B80, 0xA8164C00, - 0xA8152C80, 0xA8140D00, 0xA812ED80, - 0xA811CE00, 0xA810AE80, 0xA80F8F00, - 0xA80E6F80, 0xA80D5000, 0xA80C3080, - 0xA80B1100, 0xA809F180, 0xA808D200, - 0xA807B280, 0xA8069300, 0xA8057380, - 0xA8045400, 0xA8033480, 0xA8021500, - 0xA800F580, 0xA7FFD600, 0xA7FEB680, - 0xA7FD9700, 0xA7FC7780, 0xA7FB5800, - 0xA7FA3880, 0xA7F91900, 0xA7F7F980, - 0xA7F6DA00, 0xA7F5BA80, 0xA7F49B00, - 0xA7F37B80, 0xA7F25C00, 0xA7F13C80, - 0xA7F01D00, 0xA7EEFD80, 0xA7EDDE00, - 0xA7ECBE80, 0xA7EB9F00, 0xA7EA7F80, - 0xA7E96000, 0xA7E84080, 0xA7E72100, - 0xA7E60180, 0xA7E4E200, 0xA7E3C280, - 0xA7E2A300, 0xA7E18380, 0xA7E06400, - 0xA7DF4480, 0xA7DE2500, 0xA7DD0580, - 0xA7DBE600, 0xA7DAC680, 0xA7D9A700, - 0xA7D88780, 0xA7D76800, 0xA7D64880, - 0xA7D52900, 0xA7D40980, 0xA7D2EA00, - 0xA7D1CA80, 0xA7D0AB00, 0xA7CF8B80, - 0xA7CE6C00, 0xA7CD4C80, 0xA7CC2D00, - 0xA7CB0D80, 0xA7C9EE00, 0xA7C8CE80, - 0xA7C7AF00, 0xA7C68F80, 0xA7C57000, - 0xA7C45080, 0xA7C33100, 0xA7C21180, - 0xA7C0F200, 0xA7BFD280, 0xA7BEB300, - 0xA7BD9380, 0xA7BC7400, 0xA7BB5480, - 0xA7BA3500, 0xA7B91580, 0xA7B7F600, - 0xA7B6D680, 0xA7B5B700, 0xA7B49780, - 0xA7B37800, 0xA7B25880, 0xA7B13900, - 0xA7B01980, 0xA7AEFA00, 0xA7ADDA80, - 0xA7ACBB00, 0xA7AB9B80, 0xA7AA7C00, - 0xA7A95C80, 0xA7A83D00, 0xA7A71D80, - 0xA7A5FE00, 0xA7A4DE80, 0xA7A3BF00, - 0xA7A29F80, 0xA7A18000, 0xA7A06080, - 0xA79F4100, 0xA79E2180, 0xA79D0200, - 0xA79BE280, 0xA79AC300, 0xA799A380, - 0xA7988400, 0xA7976480, 0xA7964500, - 0xA7952580, 0xA7940600, 0xA792E680, - 0xA791C700, 0xA790A780, 0xA78F8800, - 0xA78E6880, 0xA78D4900, 0xA78C2980, - 0xA78B0A00, 0xA789EA80, 0xA788CB00, - 0xA787AB80, 0xA7868C00, 0xA7856C80, - 0xA7844D00, 0xA7832D80, 0xA7820E00, - 0xA780EE80, 0xA77FCF00, 0xA77EAF80, - 0xA77D9000, 0xA77C7080, 0xA77B5100, - 0xA77A3180, 0xA7791200, 0xA777F280, - 0xA776D300, 0xA775B380, 0xA7749400, - 0xA7737480, 0xA7725500, 0xA7713580, - 0xA7701600, 0xA76EF680, 0xA76DD700, - 0xA76CB780, 0xA76B9800, 0xA76A7880, - 0xA7695900, 0xA7683980, 0xA7671A00, - 0xA765FA80, 0xA764DB00, 0xA763BB80, - 0xA7629C00, 0xA7617C80, 0xA7605D00, - 0xA75F3D80, 0xA75E1E00, 0xA75CFE80, - 0xA75BDF00, 0xA75ABF80, 0xA759A000, - 0xA7588080, 0xA7576100, 0xA7564180, - 0xA7552200, 0xA7540280, 0xA752E300, - 0xA751C380, 0xA750A400, 0xA74F8480, - 0xA74E6500, 0xA74D4580, 0xA74C2600, - 0xA74B0680, 0xA749E700, 0xA748C780, - 0xA747A800, 0xA7468880, 0xA7456900, - 0xA7444980, 0xA7432A00, 0xA7420A80, - 0xA740EB00, 0xA73FCB80, 0xA73EAC00, - 0xA73D8C80, 0xA73C6D00, 0xA73B4D80, - 0xA73A2E00, 0xA7390E80, 0xA737EF00, - 0xA736CF80, 0xA735B000, 0xA7349080, - 0xA7337100, 0xA7325180, 0xA7313200, - 0xA7301280, 0xA72EF300, 0xA72DD380, - 0xA72CB400, 0xA72B9480, 0xA72A7500, - 0xA7295580, 0xA7283600, 0xA7271680, - 0xA725F700, 0xA724D780, 0xA723B800, - 0xA7229880, 0xA7217900, 0xA7205980, - 0xA71F3A00, 0xA71E1A80, 0xA71CFB00, - 0xA71BDB80, 0xA71ABC00, 0xA7199C80, - 0xA7187D00, 0xA7175D80, 0xA7163E00, - 0xA7151E80, 0xA713FF00, 0xA712DF80, - 0xA711C000, 0xA710A080, 0xA70F8100, - 0xA70E6180, 0xA70D4200, 0xA70C2280, - 0xA70B0300, 0xA709E380, 0xA708C400, - 0xA707A480, 0xA7068500, 0xA7056580, - 0xA7044600, 0xA7032680, 0xA7020700, - 0xA700E780, 0xA6FFC800, 0xA6FEA880, - 0xA6FD8900, 0xA6FC6980, 0xA6FB4A00, - 0xA6FA2A80, 0xA6F90B00, 0xA6F7EB80, - 0xA6F6CC00, 0xA6F5AC80, 0xA6F48D00, - 0xA6F36D80, 0xA6F24E00, 0xA6F12E80, - 0xA6F00F00, 0xA6EEEF80, 0xA6EDD000, - 0xA6ECB080, 0xA6EB9100, 0xA6EA7180, - 0xA6E95200, 0xA6E83280, 0xA6E71300, - 0xA6E5F380, 0xA6E4D400, 0xA6E3B480, - 0xA6E29500, 0xA6E17580, 0xA6E05600, - 0xA6DF3680, 0xA6DE1700, 0xA6DCF780, - 0xA6DBD800, 0xA6DAB880, 0xA6D99900, - 0xA6D87980, 0xA6D75A00, 0xA6D63A80, - 0xA6D51B00, 0xA6D3FB80, 0xA6D2DC00, - 0xA6D1BC80, 0xA6D09D00, 0xA6CF7D80, - 0xA6CE5E00, 0xA6CD3E80, 0xA6CC1F00, - 0xA6CAFF80, 0xA6C9E000, 0xA6C8C080, - 0xA6C7A100, 0xA6C68180, 0xA6C56200, - 0xA6C44280, 0xA6C32300, 0xA6C20380, - 0xA6C0E400, 0xA6BFC480, 0xA6BEA500, - 0xA6BD8580, 0xA6BC6600, 0xA6BB4680, - 0xA6BA2700, 0xA6B90780, 0xA6B7E800, - 0xA6B6C880, 0xA6B5A900, 0xA6B48980, - 0xA6B36A00, 0xA6B24A80, 0xA6B12B00, - 0xA6B00B80, 0xA6AEEC00, 0xA6ADCC80, - 0xA6ACAD00, 0xA6AB8D80, 0xA6AA6E00, - 0xA6A94E80, 0xA6A82F00, 0xA6A70F80, - 0xA6A5F000, 0xA6A4D080, 0xA6A3B100, - 0xA6A29180, 0xA6A17200, 0xA6A05280, - 0xA69F3300, 0xA69E1380, 0xA69CF400, - 0xA69BD480, 0xA69AB500, 0xA6999580, - 0xA6987600, 0xA6975680, 0xA6963700, - 0xA6951780, 0xA693F800, 0xA692D880, - 0xA691B900, 0xA6909980, 0xA68F7A00, - 0xA68E5A80, 0xA68D3B00, 0xA68C1B80, - 0xA68AFC00, 0xA689DC80, 0xA688BD00, - 0xA6879D80, 0xA6867E00, 0xA6855E80, - 0xA6843F00, 0xA6831F80, 0xA6820000, - 0xA680E080, 0xA67FC100, 0xA67EA180, - 0xA67D8200, 0xA67C6280, 0xA67B4300, - 0xA67A2380, 0xA6790400, 0xA677E480, - 0xA676C500, 0xA675A580, 0xA6748600, - 0xA6736680, 0xA6724700, 0xA6712780, - 0xA6700800, 0xA66EE880, 0xA66DC900, - 0xA66CA980, 0xA66B8A00, 0xA66A6A80, - 0xA6694B00, 0xA6682B80, 0xA6670C00, - 0xA665EC80, 0xA664CD00, 0xA663AD80, - 0xA6628E00, 0xA6616E80, 0xA6604F00, - 0xA65F2F80, 0xA65E1000, 0xA65CF080, - 0xA65BD100, 0xA65AB180, 0xA6599200, - 0xA6587280, 0xA6575300, 0xA6563380, - 0xA6551400, 0xA653F480, 0xA652D500, - 0xA651B580, 0xA6509600, 0xA64F7680, - 0xA64E5700, 0xA64D3780, 0xA64C1800, - 0xA64AF880, 0xA649D900, 0xA648B980, - 0xA6479A00, 0xA6467A80, 0xA6455B00, - 0xA6443B80, 0xA6431C00, 0xA641FC80, - 0xA640DD00, 0xA63FBD80, 0xA63E9E00, - 0xA63D7E80, 0xA63C5F00, 0xA63B3F80, - 0xA63A2000, 0xA6390080, 0xA637E100, - 0xA636C180, 0xA635A200, 0xA6348280, - 0xA6336300, 0xA6324380, 0xA6312400, - 0xA6300480, 0xA62EE500, 0xA62DC580, - 0xA62CA600, 0xA62B8680, 0xA62A6700, - 0xA6294780, 0xA6282800, 0xA6270880, - 0xA625E900, 0xA624C980, 0xA623AA00, - 0xA6228A80, 0xA6216B00, 0xA6204B80, - 0xA61F2C00, 0xA61E0C80, 0xA61CED00, - 0xA61BCD80, 0xA61AAE00, 0xA6198E80, - 0xA6186F00, 0xA6174F80, 0xA6163000, - 0xA6151080, 0xA613F100, 0xA612D180, - 0xA611B200, 0xA6109280, 0xA60F7300, - 0xA60E5380, 0xA60D3400, 0xA60C1480, - 0xA60AF500, 0xA609D580, 0xA608B600, - 0xA6079680, 0xA6067700, 0xA6055780, - 0xA6043800, 0xA6031880, 0xA601F900, - 0xA600D980, 0xA5FFBA00, 0xA5FE9A80, - 0xA5FD7B00, 0xA5FC5B80, 0xA5FB3C00, - 0xA5FA1C80, 0xA5F8FD00, 0xA5F7DD80, - 0xA5F6BE00, 0xA5F59E80, 0xA5F47F00, - 0xA5F35F80, 0xA5F24000, 0xA5F12080, - 0xA5F00100, 0xA5EEE180, 0xA5EDC200, - 0xA5ECA280, 0xA5EB8300, 0xA5EA6380, - 0xA5E94400, 0xA5E82480, 0xA5E70500, - 0xA5E5E580, 0xA5E4C600, 0xA5E3A680, - 0xA5E28700, 0xA5E16780, 0xA5E04800, - 0xA5DF2880, 0xA5DE0900, 0xA5DCE980, - 0xA5DBCA00, 0xA5DAAA80, 0xA5D98B00, - 0xA5D86B80, 0xA5D74C00, 0xA5D62C80, - 0xA5D50D00, 0xA5D3ED80, 0xA5D2CE00, - 0xA5D1AE80, 0xA5D08F00, 0xA5CF6F80, - 0xA5CE5000, 0xA5CD3080, 0xA5CC1100, - 0xA5CAF180, 0xA5C9D200, 0xA5C8B280, - 0xA5C79300, 0xA5C67380, 0xA5C55400, - 0xA5C43480, 0xA5C31500, 0xA5C1F580, - 0xA5C0D600, 0xA5BFB680, 0xA5BE9700, - 0xA5BD7780, 0xA5BC5800, 0xA5BB3880, - 0xA5BA1900, 0xA5B8F980, 0xA5B7DA00, - 0xA5B6BA80, 0xA5B59B00, 0xA5B47B80, - 0xA5B35C00, 0xA5B23C80, 0xA5B11D00, - 0xA5AFFD80, 0xA5AEDE00, 0xA5ADBE80, - 0xA5AC9F00, 0xA5AB7F80, 0xA5AA6000, - 0xA5A94080, 0xA5A82100, 0xA5A70180, - 0xA5A5E200, 0xA5A4C280, 0xA5A3A300, - 0xA5A28380, 0xA5A16400, 0xA5A04480, - 0xA59F2500, 0xA59E0580, 0xA59CE600, - 0xA59BC680, 0xA59AA700, 0xA5998780, - 0xA5986800, 0xA5974880, 0xA5962900, - 0xA5950980, 0xA593EA00, 0xA592CA80, - 0xA591AB00, 0xA5908B80, 0xA58F6C00, - 0xA58E4C80, 0xA58D2D00, 0xA58C0D80, - 0xA58AEE00, 0xA589CE80, 0xA588AF00, - 0xA5878F80, 0xA5867000, 0xA5855080, - 0xA5843100, 0xA5831180, 0xA581F200, - 0xA580D280, 0xA57FB300, 0xA57E9380, - 0xA57D7400, 0xA57C5480, 0xA57B3500, - 0xA57A1580, 0xA578F600, 0xA577D680, - 0xA576B700, 0xA5759780, 0xA5747800, - 0xA5735880, 0xA5723900, 0xA5711980, - 0xA56FFA00, 0xA56EDA80, 0xA56DBB00, - 0xA56C9B80, 0xA56B7C00, 0xA56A5C80, - 0xA5693D00, 0xA5681D80, 0xA566FE00, - 0xA565DE80, 0xA564BF00, 0xA5639F80, - 0xA5628000, 0xA5616080, 0xA5604100, - 0xA55F2180, 0xA55E0200, 0xA55CE280, - 0xA55BC300, 0xA55AA380, 0xA5598400, - 0xA5586480, 0xA5574500, 0xA5562580, - 0xA5550600, 0xA553E680, 0xA552C700, - 0xA551A780, 0xA5508800, 0xA54F6880, - 0xA54E4900, 0xA54D2980, 0xA54C0A00, - 0xA54AEA80, 0xA549CB00, 0xA548AB80, - 0xA5478C00, 0xA5466C80, 0xA5454D00, - 0xA5442D80, 0xA5430E00, 0xA541EE80, - 0xA540CF00, 0xA53FAF80, 0xA53E9000, - 0xA53D7080, 0xA53C5100, 0xA53B3180, - 0xA53A1200, 0xA538F280, 0xA537D300, - 0xA536B380, 0xA5359400, 0xA5347480, - 0xA5335500, 0xA5323580, 0xA5311600, - 0xA52FF680, 0xA52ED700, 0xA52DB780, - 0xA52C9800, 0xA52B7880, 0xA52A5900, - 0xA5293980, 0xA5281A00, 0xA526FA80, - 0xA525DB00, 0xA524BB80, 0xA5239C00, - 0xA5227C80, 0xA5215D00, 0xA5203D80, - 0xA51F1E00, 0xA51DFE80, 0xA51CDF00, - 0xA51BBF80, 0xA51AA000, 0xA5198080, - 0xA5186100, 0xA5174180, 0xA5162200, - 0xA5150280, 0xA513E300, 0xA512C380, - 0xA511A400, 0xA5108480, 0xA50F6500, - 0xA50E4580, 0xA50D2600, 0xA50C0680, - 0xA50AE700, 0xA509C780, 0xA508A800, - 0xA5078880, 0xA5066900, 0xA5054980, - 0xA5042A00, 0xA5030A80, 0xA501EB00, - 0xA500CB80, 0xA4FFAC00, 0xA4FE8C80, - 0xA4FD6D00, 0xA4FC4D80, 0xA4FB2E00, - 0xA4FA0E80, 0xA4F8EF00, 0xA4F7CF80, - 0xA4F6B000, 0xA4F59080, 0xA4F47100, - 0xA4F35180, 0xA4F23200, 0xA4F11280, - 0xA4EFF300, 0xA4EED380, 0xA4EDB400, - 0xA4EC9480, 0xA4EB7500, 0xA4EA5580, - 0xA4E93600, 0xA4E81680, 0xA4E6F700, - 0xA4E5D780, 0xA4E4B800, 0xA4E39880, - 0xA4E27900, 0xA4E15980, 0xA4E03A00, - 0xA4DF1A80, 0xA4DDFB00, 0xA4DCDB80, - 0xA4DBBC00, 0xA4DA9C80, 0xA4D97D00, - 0xA4D85D80, 0xA4D73E00, 0xA4D61E80, - 0xA4D4FF00, 0xA4D3DF80, 0xA4D2C000, - 0xA4D1A080, 0xA4D08100, 0xA4CF6180, - 0xA4CE4200, 0xA4CD2280, 0xA4CC0300, - 0xA4CAE380, 0xA4C9C400, 0xA4C8A480, - 0xA4C78500, 0xA4C66580, 0xA4C54600, - 0xA4C42680, 0xA4C30700, 0xA4C1E780, - 0xA4C0C800, 0xA4BFA880, 0xA4BE8900, - 0xA4BD6980, 0xA4BC4A00, 0xA4BB2A80, - 0xA4BA0B00, 0xA4B8EB80, 0xA4B7CC00, - 0xA4B6AC80, 0xA4B58D00, 0xA4B46D80, - 0xA4B34E00, 0xA4B22E80, 0xA4B10F00, - 0xA4AFEF80, 0xA4AED000, 0xA4ADB080, - 0xA4AC9100, 0xA4AB7180, 0xA4AA5200, - 0xA4A93280, 0xA4A81300, 0xA4A6F380, - 0xA4A5D400, 0xA4A4B480, 0xA4A39500, - 0xA4A27580, 0xA4A15600, 0xA4A03680, - 0xA49F1700, 0xA49DF780, 0xA49CD800, - 0xA49BB880, 0xA49A9900, 0xA4997980, - 0xA4985A00, 0xA4973A80, 0xA4961B00, - 0xA494FB80, 0xA493DC00, 0xA492BC80, - 0xA4919D00, 0xA4907D80, 0xA48F5E00, - 0xA48E3E80, 0xA48D1F00, 0xA48BFF80, - 0xA48AE000, 0xA489C080, 0xA488A100, - 0xA4878180, 0xA4866200, 0xA4854280, - 0xA4842300, 0xA4830380, 0xA481E400, - 0xA480C480, 0xA47FA500, 0xA47E8580, - 0xA47D6600, 0xA47C4680, 0xA47B2700, - 0xA47A0780, 0xA478E800, 0xA477C880, - 0xA476A900, 0xA4758980, 0xA4746A00, - 0xA4734A80, 0xA4722B00, 0xA4710B80, - 0xA46FEC00, 0xA46ECC80, 0xA46DAD00, - 0xA46C8D80, 0xA46B6E00, 0xA46A4E80, - 0xA4692F00, 0xA4680F80, 0xA466F000, - 0xA465D080, 0xA464B100, 0xA4639180, - 0xA4627200, 0xA4615280, 0xA4603300, - 0xA45F1380, 0xA45DF400, 0xA45CD480, - 0xA45BB500, 0xA45A9580, 0xA4597600, - 0xA4585680, 0xA4573700, 0xA4561780, - 0xA454F800, 0xA453D880, 0xA452B900, - 0xA4519980, 0xA4507A00, 0xA44F5A80, - 0xA44E3B00, 0xA44D1B80, 0xA44BFC00, - 0xA44ADC80, 0xA449BD00, 0xA4489D80, - 0xA4477E00, 0xA4465E80, 0xA4453F00, - 0xA4441F80, 0xA4430000, 0xA441E080, - 0xA440C100, 0xA43FA180, 0xA43E8200, - 0xA43D6280, 0xA43C4300, 0xA43B2380, - 0xA43A0400, 0xA438E480, 0xA437C500, - 0xA436A580, 0xA4358600, 0xA4346680, - 0xA4334700, 0xA4322780, 0xA4310800, - 0xA42FE880, 0xA42EC900, 0xA42DA980, - 0xA42C8A00, 0xA42B6A80, 0xA42A4B00, - 0xA4292B80, 0xA4280C00, 0xA426EC80, - 0xA425CD00, 0xA424AD80, 0xA4238E00, - 0xA4226E80, 0xA4214F00, 0xA4202F80, - 0xA41F1000, 0xA41DF080, 0xA41CD100, - 0xA41BB180, 0xA41A9200, 0xA4197280, - 0xA4185300, 0xA4173380, 0xA4161400, - 0xA414F480, 0xA413D500, 0xA412B580, - 0xA4119600, 0xA4107680, 0xA40F5700, - 0xA40E3780, 0xA40D1800, 0xA40BF880, - 0xA40AD900, 0xA409B980, 0xA4089A00, - 0xA4077A80, 0xA4065B00, 0xA4053B80, - 0xA4041C00, 0xA402FC80, 0xA401DD00, - 0xA400BD80, 0xA3FF9E00, 0xA3FE7E80, - 0xA3FD5F00, 0xA3FC3F80, 0xA3FB2000, - 0xA3FA0080, 0xA3F8E100, 0xA3F7C180, - 0xA3F6A200, 0xA3F58280, 0xA3F46300, - 0xA3F34380, 0xA3F22400, 0xA3F10480, - 0xA3EFE500, 0xA3EEC580, 0xA3EDA600, - 0xA3EC8680, 0xA3EB6700, 0xA3EA4780, - 0xA3E92800, 0xA3E80880, 0xA3E6E900, - 0xA3E5C980, 0xA3E4AA00, 0xA3E38A80, - 0xA3E26B00, 0xA3E14B80, 0xA3E02C00, - 0xA3DF0C80, 0xA3DDED00, 0xA3DCCD80, - 0xA3DBAE00, 0xA3DA8E80, 0xA3D96F00, - 0xA3D84F80, 0xA3D73000, 0xA3D61080, - 0xA3D4F100, 0xA3D3D180, 0xA3D2B200, - 0xA3D19280, 0xA3D07300, 0xA3CF5380, - 0xA3CE3400, 0xA3CD1480, 0xA3CBF500, - 0xA3CAD580, 0xA3C9B600, 0xA3C89680, - 0xA3C77700, 0xA3C65780, 0xA3C53800, - 0xA3C41880, 0xA3C2F900, 0xA3C1D980, - 0xA3C0BA00, 0xA3BF9A80, 0xA3BE7B00, - 0xA3BD5B80, 0xA3BC3C00, 0xA3BB1C80, - 0xA3B9FD00, 0xA3B8DD80, 0xA3B7BE00, - 0xA3B69E80, 0xA3B57F00, 0xA3B45F80, - 0xA3B34000, 0xA3B22080, 0xA3B10100, - 0xA3AFE180, 0xA3AEC200, 0xA3ADA280, - 0xA3AC8300, 0xA3AB6380, 0xA3AA4400, - 0xA3A92480, 0xA3A80500, 0xA3A6E580, - 0xA3A5C600, 0xA3A4A680, 0xA3A38700, - 0xA3A26780, 0xA3A14800, 0xA3A02880, - 0xA39F0900, 0xA39DE980, 0xA39CCA00, - 0xA39BAA80, 0xA39A8B00, 0xA3996B80, - 0xA3984C00, 0xA3972C80, 0xA3960D00, - 0xA394ED80, 0xA393CE00, 0xA392AE80, - 0xA3918F00, 0xA3906F80, 0xA38F5000, - 0xA38E3080, 0xA38D1100, 0xA38BF180, - 0xA38AD200, 0xA389B280, 0xA3889300, - 0xA3877380, 0xA3865400, 0xA3853480, - 0xA3841500, 0xA382F580, 0xA381D600, - 0xA380B680, 0xA37F9700, 0xA37E7780, - 0xA37D5800, 0xA37C3880, 0xA37B1900, - 0xA379F980, 0xA378DA00, 0xA377BA80, - 0xA3769B00, 0xA3757B80, 0xA3745C00, - 0xA3733C80, 0xA3721D00, 0xA370FD80, - 0xA36FDE00, 0xA36EBE80, 0xA36D9F00, - 0xA36C7F80, 0xA36B6000, 0xA36A4080, - 0xA3692100, 0xA3680180, 0xA366E200, - 0xA365C280, 0xA364A300, 0xA3638380, - 0xA3626400, 0xA3614480, 0xA3602500, - 0xA35F0580, 0xA35DE600, 0xA35CC680, - 0xA35BA700, 0xA35A8780, 0xA3596800, - 0xA3584880, 0xA3572900, 0xA3560980, - 0xA354EA00, 0xA353CA80, 0xA352AB00, - 0xA3518B80, 0xA3506C00, 0xA34F4C80, - 0xA34E2D00, 0xA34D0D80, 0xA34BEE00, - 0xA34ACE80, 0xA349AF00, 0xA3488F80, - 0xA3477000, 0xA3465080, 0xA3453100, - 0xA3441180, 0xA342F200, 0xA341D280, - 0xA340B300, 0xA33F9380, 0xA33E7400, - 0xA33D5480, 0xA33C3500, 0xA33B1580, - 0xA339F600, 0xA338D680, 0xA337B700, - 0xA3369780, 0xA3357800, 0xA3345880, - 0xA3333900, 0xA3321980, 0xA330FA00, - 0xA32FDA80, 0xA32EBB00, 0xA32D9B80, - 0xA32C7C00, 0xA32B5C80, 0xA32A3D00, - 0xA3291D80, 0xA327FE00, 0xA326DE80, - 0xA325BF00, 0xA3249F80, 0xA3238000, - 0xA3226080, 0xA3214100, 0xA3202180, - 0xA31F0200, 0xA31DE280, 0xA31CC300, - 0xA31BA380, 0xA31A8400, 0xA3196480, - 0xA3184500, 0xA3172580, 0xA3160600, - 0xA314E680, 0xA313C700, 0xA312A780, - 0xA3118800, 0xA3106880, 0xA30F4900, - 0xA30E2980, 0xA30D0A00, 0xA30BEA80, - 0xA30ACB00, 0xA309AB80, 0xA3088C00, - 0xA3076C80, 0xA3064D00, 0xA3052D80, - 0xA3040E00, 0xA302EE80, 0xA301CF00, - 0xA300AF80, 0xA2FF9000, 0xA2FE7080, - 0xA2FD5100, 0xA2FC3180, 0xA2FB1200, - 0xA2F9F280, 0xA2F8D300, 0xA2F7B380, - 0xA2F69400, 0xA2F57480, 0xA2F45500, - 0xA2F33580, 0xA2F21600, 0xA2F0F680, - 0xA2EFD700, 0xA2EEB780, 0xA2ED9800, - 0xA2EC7880, 0xA2EB5900, 0xA2EA3980, - 0xA2E91A00, 0xA2E7FA80, 0xA2E6DB00, - 0xA2E5BB80, 0xA2E49C00, 0xA2E37C80, - 0xA2E25D00, 0xA2E13D80, 0xA2E01E00, - 0xA2DEFE80, 0xA2DDDF00, 0xA2DCBF80, - 0xA2DBA000, 0xA2DA8080, 0xA2D96100, - 0xA2D84180, 0xA2D72200, 0xA2D60280, - 0xA2D4E300, 0xA2D3C380, 0xA2D2A400, - 0xA2D18480, 0xA2D06500, 0xA2CF4580, - 0xA2CE2600, 0xA2CD0680, 0xA2CBE700, - 0xA2CAC780, 0xA2C9A800, 0xA2C88880, - 0xA2C76900, 0xA2C64980, 0xA2C52A00, - 0xA2C40A80, 0xA2C2EB00, 0xA2C1CB80, - 0xA2C0AC00, 0xA2BF8C80, 0xA2BE6D00, - 0xA2BD4D80, 0xA2BC2E00, 0xA2BB0E80, - 0xA2B9EF00, 0xA2B8CF80, 0xA2B7B000, - 0xA2B69080, 0xA2B57100, 0xA2B45180, - 0xA2B33200, 0xA2B21280, 0xA2B0F300, - 0xA2AFD380, 0xA2AEB400, 0xA2AD9480, - 0xA2AC7500, 0xA2AB5580, 0xA2AA3600, - 0xA2A91680, 0xA2A7F700, 0xA2A6D780, - 0xA2A5B800, 0xA2A49880, 0xA2A37900, - 0xA2A25980, 0xA2A13A00, 0xA2A01A80, - 0xA29EFB00, 0xA29DDB80, 0xA29CBC00, - 0xA29B9C80, 0xA29A7D00, 0xA2995D80, - 0xA2983E00, 0xA2971E80, 0xA295FF00, - 0xA294DF80, 0xA293C000, 0xA292A080, - 0xA2918100, 0xA2906180, 0xA28F4200, - 0xA28E2280, 0xA28D0300, 0xA28BE380, - 0xA28AC400, 0xA289A480, 0xA2888500, - 0xA2876580, 0xA2864600, 0xA2852680, - 0xA2840700, 0xA282E780, 0xA281C800, - 0xA280A880, 0xA27F8900, 0xA27E6980, - 0xA27D4A00, 0xA27C2A80, 0xA27B0B00, - 0xA279EB80, 0xA278CC00, 0xA277AC80, - 0xA2768D00, 0xA2756D80, 0xA2744E00, - 0xA2732E80, 0xA2720F00, 0xA270EF80, - 0xA26FD000, 0xA26EB080, 0xA26D9100, - 0xA26C7180, 0xA26B5200, 0xA26A3280, - 0xA2691300, 0xA267F380, 0xA266D400, - 0xA265B480, 0xA2649500, 0xA2637580, - 0xA2625600, 0xA2613680, 0xA2601700, - 0xA25EF780, 0xA25DD800, 0xA25CB880, - 0xA25B9900, 0xA25A7980, 0xA2595A00, - 0xA2583A80, 0xA2571B00, 0xA255FB80, - 0xA254DC00, 0xA253BC80, 0xA2529D00, - 0xA2517D80, 0xA2505E00, 0xA24F3E80, - 0xA24E1F00, 0xA24CFF80, 0xA24BE000, - 0xA24AC080, 0xA249A100, 0xA2488180, - 0xA2476200, 0xA2464280, 0xA2452300, - 0xA2440380, 0xA242E400, 0xA241C480, - 0xA240A500, 0xA23F8580, 0xA23E6600, - 0xA23D4680, 0xA23C2700, 0xA23B0780, - 0xA239E800, 0xA238C880, 0xA237A900, - 0xA2368980, 0xA2356A00, 0xA2344A80, - 0xA2332B00, 0xA2320B80, 0xA230EC00, - 0xA22FCC80, 0xA22EAD00, 0xA22D8D80, - 0xA22C6E00, 0xA22B4E80, 0xA22A2F00, - 0xA2290F80, 0xA227F000, 0xA226D080, - 0xA225B100, 0xA2249180, 0xA2237200, - 0xA2225280, 0xA2213300, 0xA2201380, - 0xA21EF400, 0xA21DD480, 0xA21CB500, - 0xA21B9580, 0xA21A7600, 0xA2195680, - 0xA2183700, 0xA2171780, 0xA215F800, - 0xA214D880, 0xA213B900, 0xA2129980, - 0xA2117A00, 0xA2105A80, 0xA20F3B00, - 0xA20E1B80, 0xA20CFC00, 0xA20BDC80, - 0xA20ABD00, 0xA2099D80, 0xA2087E00, - 0xA2075E80, 0xA2063F00, 0xA2051F80, - 0xA2040000, 0xA202F180, 0xA201E300, - 0xA200D480, 0xA1FFC600, 0xA1FEB780, - 0xA1FDA900, 0xA1FC9A80, 0xA1FB8C00, - 0xA1FA7D80, 0xA1F96F00, 0xA1F86080, - 0xA1F75200, 0xA1F64380, 0xA1F53500, - 0xA1F42680, 0xA1F31800, 0xA1F20980, - 0xA1F0FB00, 0xA1EFEC80, 0xA1EEDE00, - 0xA1EDCF80, 0xA1ECC100, 0xA1EBB280, - 0xA1EAA400, 0xA1E99580, 0xA1E88700, - 0xA1E77880, 0xA1E66A00, 0xA1E55B80, - 0xA1E44D00, 0xA1E33E80, 0xA1E23000, - 0xA1E12180, 0xA1E01300, 0xA1DF0480, - 0xA1DDF600, 0xA1DCE780, 0xA1DBD900, - 0xA1DACA80, 0xA1D9BC00, 0xA1D8AD80, - 0xA1D79F00, 0xA1D69080, 0xA1D58200, - 0xA1D47380, 0xA1D36500, 0xA1D25680, - 0xA1D14800, 0xA1D03980, 0xA1CF2B00, - 0xA1CE1C80, 0xA1CD0E00, 0xA1CBFF80, - 0xA1CAF100, 0xA1C9E280, 0xA1C8D400, - 0xA1C7C580, 0xA1C6B700, 0xA1C5A880, - 0xA1C49A00, 0xA1C38B80, 0xA1C27D00, - 0xA1C16E80, 0xA1C06000, 0xA1BF5180, - 0xA1BE4300, 0xA1BD3480, 0xA1BC2600, - 0xA1BB1780, 0xA1BA0900, 0xA1B8FA80, - 0xA1B7EC00, 0xA1B6DD80, 0xA1B5CF00, - 0xA1B4C080, 0xA1B3B200, 0xA1B2A380, - 0xA1B19500, 0xA1B08680, 0xA1AF7800, - 0xA1AE6980, 0xA1AD5B00, 0xA1AC4C80, - 0xA1AB3E00, 0xA1AA2F80, 0xA1A92100, - 0xA1A81280, 0xA1A70400, 0xA1A5F580, - 0xA1A4E700, 0xA1A3D880, 0xA1A2CA00, - 0xA1A1BB80, 0xA1A0AD00, 0xA19F9E80, - 0xA19E9000, 0xA19D8180, 0xA19C7300, - 0xA19B6480, 0xA19A5600, 0xA1994780, - 0xA1983900, 0xA1972A80, 0xA1961C00, - 0xA1950D80, 0xA193FF00, 0xA192F080, - 0xA191E200, 0xA190D380, 0xA18FC500, - 0xA18EB680, 0xA18DA800, 0xA18C9980, - 0xA18B8B00, 0xA18A7C80, 0xA1896E00, - 0xA1885F80, 0xA1875100, 0xA1864280, - 0xA1853400, 0xA1842580, 0xA1831700, - 0xA1820880, 0xA180FA00, 0xA17FEB80, - 0xA17EDD00, 0xA17DCE80, 0xA17CC000, - 0xA17BB180, 0xA17AA300, 0xA1799480, - 0xA1788600, 0xA1777780, 0xA1766900, - 0xA1755A80, 0xA1744C00, 0xA1733D80, - 0xA1722F00, 0xA1712080, 0xA1701200, - 0xA16F0380, 0xA16DF500, 0xA16CE680, - 0xA16BD800, 0xA16AC980, 0xA169BB00, - 0xA168AC80, 0xA1679E00, 0xA1668F80, - 0xA1658100, 0xA1647280, 0xA1636400, - 0xA1625580, 0xA1614700, 0xA1603880, - 0xA15F2A00, 0xA15E1B80, 0xA15D0D00, - 0xA15BFE80, 0xA15AF000, 0xA159E180, - 0xA158D300, 0xA157C480, 0xA156B600, - 0xA155A780, 0xA1549900, 0xA1538A80, - 0xA1527C00, 0xA1516D80, 0xA1505F00, - 0xA14F5080, 0xA14E4200, 0xA14D3380, - 0xA14C2500, 0xA14B1680, 0xA14A0800, - 0xA148F980, 0xA147EB00, 0xA146DC80, - 0xA145CE00, 0xA144BF80, 0xA143B100, - 0xA142A280, 0xA1419400, 0xA1408580, - 0xA13F7700, 0xA13E6880, 0xA13D5A00, - 0xA13C4B80, 0xA13B3D00, 0xA13A2E80, - 0xA1392000, 0xA1381180, 0xA1370300, - 0xA135F480, 0xA134E600, 0xA133D780, - 0xA132C900, 0xA131BA80, 0xA130AC00, - 0xA12F9D80, 0xA12E8F00, 0xA12D8080, - 0xA12C7200, 0xA12B6380, 0xA12A5500, - 0xA1294680, 0xA1283800, 0xA1272980, - 0xA1261B00, 0xA1250C80, 0xA123FE00, - 0xA122EF80, 0xA121E100, 0xA120D280, - 0xA11FC400, 0xA11EB580, 0xA11DA700, - 0xA11C9880, 0xA11B8A00, 0xA11A7B80, - 0xA1196D00, 0xA1185E80, 0xA1175000, - 0xA1164180, 0xA1153300, 0xA1142480, - 0xA1131600, 0xA1120780, 0xA110F900, - 0xA10FEA80, 0xA10EDC00, 0xA10DCD80, - 0xA10CBF00, 0xA10BB080, 0xA10AA200, - 0xA1099380, 0xA1088500, 0xA1077680, - 0xA1066800, 0xA1055980, 0xA1044B00, - 0xA1033C80, 0xA1022E00, 0xA1011F80, - 0xA1001100, 0xA0FF0280, 0xA0FDF400, - 0xA0FCE580, 0xA0FBD700, 0xA0FAC880, - 0xA0F9BA00, 0xA0F8AB80, 0xA0F79D00, - 0xA0F68E80, 0xA0F58000, 0xA0F47180, - 0xA0F36300, 0xA0F25480, 0xA0F14600, - 0xA0F03780, 0xA0EF2900, 0xA0EE1A80, - 0xA0ED0C00, 0xA0EBFD80, 0xA0EAEF00, - 0xA0E9E080, 0xA0E8D200, 0xA0E7C380, - 0xA0E6B500, 0xA0E5A680, 0xA0E49800, - 0xA0E38980, 0xA0E27B00, 0xA0E16C80, - 0xA0E05E00, 0xA0DF4F80, 0xA0DE4100, - 0xA0DD3280, 0xA0DC2400, 0xA0DB1580, - 0xA0DA0700, 0xA0D8F880, 0xA0D7EA00, - 0xA0D6DB80, 0xA0D5CD00, 0xA0D4BE80, - 0xA0D3B000, 0xA0D2A180, 0xA0D19300, - 0xA0D08480, 0xA0CF7600, 0xA0CE6780, - 0xA0CD5900, 0xA0CC4A80, 0xA0CB3C00, - 0xA0CA2D80, 0xA0C91F00, 0xA0C81080, - 0xA0C70200, 0xA0C5F380, 0xA0C4E500, - 0xA0C3D680, 0xA0C2C800, 0xA0C1B980, - 0xA0C0AB00, 0xA0BF9C80, 0xA0BE8E00, - 0xA0BD7F80, 0xA0BC7100, 0xA0BB6280, - 0xA0BA5400, 0xA0B94580, 0xA0B83700, - 0xA0B72880, 0xA0B61A00, 0xA0B50B80, - 0xA0B3FD00, 0xA0B2EE80, 0xA0B1E000, - 0xA0B0D180, 0xA0AFC300, 0xA0AEB480, - 0xA0ADA600, 0xA0AC9780, 0xA0AB8900, - 0xA0AA7A80, 0xA0A96C00, 0xA0A85D80, - 0xA0A74F00, 0xA0A64080, 0xA0A53200, - 0xA0A42380, 0xA0A31500, 0xA0A20680, - 0xA0A0F800, 0xA09FE980, 0xA09EDB00, - 0xA09DCC80, 0xA09CBE00, 0xA09BAF80, - 0xA09AA100, 0xA0999280, 0xA0988400, - 0xA0977580, 0xA0966700, 0xA0955880, - 0xA0944A00, 0xA0933B80, 0xA0922D00, - 0xA0911E80, 0xA0901000, 0xA08F0180, - 0xA08DF300, 0xA08CE480, 0xA08BD600, - 0xA08AC780, 0xA089B900, 0xA088AA80, - 0xA0879C00, 0xA0868D80, 0xA0857F00, - 0xA0847080, 0xA0836200, 0xA0825380, - 0xA0814500, 0xA0803680, 0xA07F2800, - 0xA07E1980, 0xA07D0B00, 0xA07BFC80, - 0xA07AEE00, 0xA079DF80, 0xA078D100, - 0xA077C280, 0xA076B400, 0xA075A580, - 0xA0749700, 0xA0738880, 0xA0727A00, - 0xA0716B80, 0xA0705D00, 0xA06F4E80, - 0xA06E4000, 0xA06D3180, 0xA06C2300, - 0xA06B1480, 0xA06A0600, 0xA068F780, - 0xA067E900, 0xA066DA80, 0xA065CC00, - 0xA064BD80, 0xA063AF00, 0xA062A080, - 0xA0619200, 0xA0608380, 0xA05F7500, - 0xA05E6680, 0xA05D5800, 0xA05C4980, - 0xA05B3B00, 0xA05A2C80, 0xA0591E00, - 0xA0580F80, 0xA0570100, 0xA055F280, - 0xA054E400, 0xA053D580, 0xA052C700, - 0xA051B880, 0xA050AA00, 0xA04F9B80, - 0xA04E8D00, 0xA04D7E80, 0xA04C7000, - 0xA04B6180, 0xA04A5300, 0xA0494480, - 0xA0483600, 0xA0472780, 0xA0461900, - 0xA0450A80, 0xA043FC00, 0xA042ED80, - 0xA041DF00, 0xA040D080, 0xA03FC200, - 0xA03EB380, 0xA03DA500, 0xA03C9680, - 0xA03B8800, 0xA03A7980, 0xA0396B00, - 0xA0385C80, 0xA0374E00, 0xA0363F80, - 0xA0353100, 0xA0342280, 0xA0331400, - 0xA0320580, 0xA030F700, 0xA02FE880, - 0xA02EDA00, 0xA02DCB80, 0xA02CBD00, - 0xA02BAE80, 0xA02AA000, 0xA0299180, - 0xA0288300, 0xA0277480, 0xA0266600, - 0xA0255780, 0xA0244900, 0xA0233A80, - 0xA0222C00, 0xA0211D80, 0xA0200F00, - 0xA01F0080, 0xA01DF200, 0xA01CE380, - 0xA01BD500, 0xA01AC680, 0xA019B800, - 0xA018A980, 0xA0179B00, 0xA0168C80, - 0xA0157E00, 0xA0146F80, 0xA0136100, - 0xA0125280, 0xA0114400, 0xA0103580, - 0xA00F2700, 0xA00E1880, 0xA00D0A00, - 0xA00BFB80, 0xA00AED00, 0xA009DE80, - 0xA008D000, 0xA007C180, 0xA006B300, - 0xA005A480, 0xA0049600, 0xA0038780, - 0xA0027900, 0xA0016A80, 0xA0005C00, - 0x9FFF4D80, 0x9FFE3F00, 0x9FFD3080, - 0x9FFC2200, 0x9FFB1380, 0x9FFA0500, - 0x9FF8F680, 0x9FF7E800, 0x9FF6D980, - 0x9FF5CB00, 0x9FF4BC80, 0x9FF3AE00, - 0x9FF29F80, 0x9FF19100, 0x9FF08280, - 0x9FEF7400, 0x9FEE6580, 0x9FED5700, - 0x9FEC4880, 0x9FEB3A00, 0x9FEA2B80, - 0x9FE91D00, 0x9FE80E80, 0x9FE70000, - 0x9FE5F180, 0x9FE4E300, 0x9FE3D480, - 0x9FE2C600, 0x9FE1B780, 0x9FE0A900, - 0x9FDF9A80, 0x9FDE8C00, 0x9FDD7D80, - 0x9FDC6F00, 0x9FDB6080, 0x9FDA5200, - 0x9FD94380, 0x9FD83500, 0x9FD72680, - 0x9FD61800, 0x9FD50980, 0x9FD3FB00, - 0x9FD2EC80, 0x9FD1DE00, 0x9FD0CF80, - 0x9FCFC100, 0x9FCEB280, 0x9FCDA400, - 0x9FCC9580, 0x9FCB8700, 0x9FCA7880, - 0x9FC96A00, 0x9FC85B80, 0x9FC74D00, - 0x9FC63E80, 0x9FC53000, 0x9FC42180, - 0x9FC31300, 0x9FC20480, 0x9FC0F600, - 0x9FBFE780, 0x9FBED900, 0x9FBDCA80, - 0x9FBCBC00, 0x9FBBAD80, 0x9FBA9F00, - 0x9FB99080, 0x9FB88200, 0x9FB77380, - 0x9FB66500, 0x9FB55680, 0x9FB44800, - 0x9FB33980, 0x9FB22B00, 0x9FB11C80, - 0x9FB00E00, 0x9FAEFF80, 0x9FADF100, - 0x9FACE280, 0x9FABD400, 0x9FAAC580, - 0x9FA9B700, 0x9FA8A880, 0x9FA79A00, - 0x9FA68B80, 0x9FA57D00, 0x9FA46E80, - 0x9FA36000, 0x9FA25180, 0x9FA14300, - 0x9FA03480, 0x9F9F2600, 0x9F9E1780, - 0x9F9D0900, 0x9F9BFA80, 0x9F9AEC00, - 0x9F99DD80, 0x9F98CF00, 0x9F97C080, - 0x9F96B200, 0x9F95A380, 0x9F949500, - 0x9F938680, 0x9F927800, 0x9F916980, - 0x9F905B00, 0x9F8F4C80, 0x9F8E3E00, - 0x9F8D2F80, 0x9F8C2100, 0x9F8B1280, - 0x9F8A0400, 0x9F88F580, 0x9F87E700, - 0x9F86D880, 0x9F85CA00, 0x9F84BB80, - 0x9F83AD00, 0x9F829E80, 0x9F819000, - 0x9F808180, 0x9F7F7300, 0x9F7E6480, - 0x9F7D5600, 0x9F7C4780, 0x9F7B3900, - 0x9F7A2A80, 0x9F791C00, 0x9F780D80, - 0x9F76FF00, 0x9F75F080, 0x9F74E200, - 0x9F73D380, 0x9F72C500, 0x9F71B680, - 0x9F70A800, 0x9F6F9980, 0x9F6E8B00, - 0x9F6D7C80, 0x9F6C6E00, 0x9F6B5F80, - 0x9F6A5100, 0x9F694280, 0x9F683400, - 0x9F672580, 0x9F661700, 0x9F650880, - 0x9F63FA00, 0x9F62EB80, 0x9F61DD00, - 0x9F60CE80, 0x9F5FC000, 0x9F5EB180, - 0x9F5DA300, 0x9F5C9480, 0x9F5B8600, - 0x9F5A7780, 0x9F596900, 0x9F585A80, - 0x9F574C00, 0x9F563D80, 0x9F552F00, - 0x9F542080, 0x9F531200, 0x9F520380, - 0x9F50F500, 0x9F4FE680, 0x9F4ED800, - 0x9F4DC980, 0x9F4CBB00, 0x9F4BAC80, - 0x9F4A9E00, 0x9F498F80, 0x9F488100, - 0x9F477280, 0x9F466400, 0x9F455580, - 0x9F444700, 0x9F433880, 0x9F422A00, - 0x9F411B80, 0x9F400D00, 0x9F3EFE80, - 0x9F3DF000, 0x9F3CE180, 0x9F3BD300, - 0x9F3AC480, 0x9F39B600, 0x9F38A780, - 0x9F379900, 0x9F368A80, 0x9F357C00, - 0x9F346D80, 0x9F335F00, 0x9F325080, - 0x9F314200, 0x9F303380, 0x9F2F2500, - 0x9F2E1680, 0x9F2D0800, 0x9F2BF980, - 0x9F2AEB00, 0x9F29DC80, 0x9F28CE00, - 0x9F27BF80, 0x9F26B100, 0x9F25A280, - 0x9F249400, 0x9F238580, 0x9F227700, - 0x9F216880, 0x9F205A00, 0x9F1F4B80, - 0x9F1E3D00, 0x9F1D2E80, 0x9F1C2000, - 0x9F1B1180, 0x9F1A0300, 0x9F18F480, - 0x9F17E600, 0x9F16D780, 0x9F15C900, - 0x9F14BA80, 0x9F13AC00, 0x9F129D80, - 0x9F118F00, 0x9F108080, 0x9F0F7200, - 0x9F0E6380, 0x9F0D5500, 0x9F0C4680, - 0x9F0B3800, 0x9F0A2980, 0x9F091B00, - 0x9F080C80, 0x9F06FE00, 0x9F05EF80, - 0x9F04E100, 0x9F03D280, 0x9F02C400, - 0x9F01B580, 0x9F00A700, 0x9EFF9880, - 0x9EFE8A00, 0x9EFD7B80, 0x9EFC6D00, - 0x9EFB5E80, 0x9EFA5000, 0x9EF94180, - 0x9EF83300, 0x9EF72480, 0x9EF61600, - 0x9EF50780, 0x9EF3F900, 0x9EF2EA80, - 0x9EF1DC00, 0x9EF0CD80, 0x9EEFBF00, - 0x9EEEB080, 0x9EEDA200, 0x9EEC9380, - 0x9EEB8500, 0x9EEA7680, 0x9EE96800, - 0x9EE85980, 0x9EE74B00, 0x9EE63C80, - 0x9EE52E00, 0x9EE41F80, 0x9EE31100, - 0x9EE20280, 0x9EE0F400, 0x9EDFE580, - 0x9EDED700, 0x9EDDC880, 0x9EDCBA00, - 0x9EDBAB80, 0x9EDA9D00, 0x9ED98E80, - 0x9ED88000, 0x9ED77180, 0x9ED66300, - 0x9ED55480, 0x9ED44600, 0x9ED33780, - 0x9ED22900, 0x9ED11A80, 0x9ED00C00, - 0x9ECEFD80, 0x9ECDEF00, 0x9ECCE080, - 0x9ECBD200, 0x9ECAC380, 0x9EC9B500, - 0x9EC8A680, 0x9EC79800, 0x9EC68980, - 0x9EC57B00, 0x9EC46C80, 0x9EC35E00, - 0x9EC24F80, 0x9EC14100, 0x9EC03280, - 0x9EBF2400, 0x9EBE1580, 0x9EBD0700, - 0x9EBBF880, 0x9EBAEA00, 0x9EB9DB80, - 0x9EB8CD00, 0x9EB7BE80, 0x9EB6B000, - 0x9EB5A180, 0x9EB49300, 0x9EB38480, - 0x9EB27600, 0x9EB16780, 0x9EB05900, - 0x9EAF4A80, 0x9EAE3C00, 0x9EAD2D80, - 0x9EAC1F00, 0x9EAB1080, 0x9EAA0200, - 0x9EA8F380, 0x9EA7E500, 0x9EA6D680, - 0x9EA5C800, 0x9EA4B980, 0x9EA3AB00, - 0x9EA29C80, 0x9EA18E00, 0x9EA07F80, - 0x9E9F7100, 0x9E9E6280, 0x9E9D5400, - 0x9E9C4580, 0x9E9B3700, 0x9E9A2880, - 0x9E991A00, 0x9E980B80, 0x9E96FD00, - 0x9E95EE80, 0x9E94E000, 0x9E93D180, - 0x9E92C300, 0x9E91B480, 0x9E90A600, - 0x9E8F9780, 0x9E8E8900, 0x9E8D7A80, - 0x9E8C6C00, 0x9E8B5D80, 0x9E8A4F00, - 0x9E894080, 0x9E883200, 0x9E872380, - 0x9E861500, 0x9E850680, 0x9E83F800, - 0x9E82E980, 0x9E81DB00, 0x9E80CC80, - 0x9E7FBE00, 0x9E7EAF80, 0x9E7DA100, - 0x9E7C9280, 0x9E7B8400, 0x9E7A7580, - 0x9E796700, 0x9E785880, 0x9E774A00, - 0x9E763B80, 0x9E752D00, 0x9E741E80, - 0x9E731000, 0x9E720180, 0x9E70F300, - 0x9E6FE480, 0x9E6ED600, 0x9E6DC780, - 0x9E6CB900, 0x9E6BAA80, 0x9E6A9C00, - 0x9E698D80, 0x9E687F00, 0x9E677080, - 0x9E666200, 0x9E655380, 0x9E644500, - 0x9E633680, 0x9E622800, 0x9E611980, - 0x9E600B00, 0x9E5EFC80, 0x9E5DEE00, - 0x9E5CDF80, 0x9E5BD100, 0x9E5AC280, - 0x9E59B400, 0x9E58A580, 0x9E579700, - 0x9E568880, 0x9E557A00, 0x9E546B80, - 0x9E535D00, 0x9E524E80, 0x9E514000, - 0x9E503180, 0x9E4F2300, 0x9E4E1480, - 0x9E4D0600, 0x9E4BF780, 0x9E4AE900, - 0x9E49DA80, 0x9E48CC00, 0x9E47BD80, - 0x9E46AF00, 0x9E45A080, 0x9E449200, - 0x9E438380, 0x9E427500, 0x9E416680, - 0x9E405800, 0x9E3F4980, 0x9E3E3B00, - 0x9E3D2C80, 0x9E3C1E00, 0x9E3B0F80, - 0x9E3A0100, 0x9E38F280, 0x9E37E400, - 0x9E36D580, 0x9E35C700, 0x9E34B880, - 0x9E33AA00, 0x9E329B80, 0x9E318D00, - 0x9E307E80, 0x9E2F7000, 0x9E2E6180, - 0x9E2D5300, 0x9E2C4480, 0x9E2B3600, - 0x9E2A2780, 0x9E291900, 0x9E280A80, - 0x9E26FC00, 0x9E25ED80, 0x9E24DF00, - 0x9E23D080, 0x9E22C200, 0x9E21B380, - 0x9E20A500, 0x9E1F9680, 0x9E1E8800, - 0x9E1D7980, 0x9E1C6B00, 0x9E1B5C80, - 0x9E1A4E00, 0x9E193F80, 0x9E183100, - 0x9E172280, 0x9E161400, 0x9E150580, - 0x9E13F700, 0x9E12E880, 0x9E11DA00, - 0x9E10CB80, 0x9E0FBD00, 0x9E0EAE80, - 0x9E0DA000, 0x9E0C9180, 0x9E0B8300, - 0x9E0A7480, 0x9E096600, 0x9E085780, - 0x9E074900, 0x9E063A80, 0x9E052C00, - 0x9E041D80, 0x9E030F00, 0x9E020080, - 0x9E00F200, 0x9DFFE380, 0x9DFED500, - 0x9DFDC680, 0x9DFCB800, 0x9DFBA980, - 0x9DFA9B00, 0x9DF98C80, 0x9DF87E00, - 0x9DF76F80, 0x9DF66100, 0x9DF55280, - 0x9DF44400, 0x9DF33580, 0x9DF22700, - 0x9DF11880, 0x9DF00A00, 0x9DEEFB80, - 0x9DEDED00, 0x9DECDE80, 0x9DEBD000, - 0x9DEAC180, 0x9DE9B300, 0x9DE8A480, - 0x9DE79600, 0x9DE68780, 0x9DE57900, - 0x9DE46A80, 0x9DE35C00, 0x9DE24D80, - 0x9DE13F00, 0x9DE03080, 0x9DDF2200, - 0x9DDE1380, 0x9DDD0500, 0x9DDBF680, - 0x9DDAE800, 0x9DD9D980, 0x9DD8CB00, - 0x9DD7BC80, 0x9DD6AE00, 0x9DD59F80, - 0x9DD49100, 0x9DD38280, 0x9DD27400, - 0x9DD16580, 0x9DD05700, 0x9DCF4880, - 0x9DCE3A00, 0x9DCD2B80, 0x9DCC1D00, - 0x9DCB0E80, 0x9DCA0000, 0x9DC8F180, - 0x9DC7E300, 0x9DC6D480, 0x9DC5C600, - 0x9DC4B780, 0x9DC3A900, 0x9DC29A80, - 0x9DC18C00, 0x9DC07D80, 0x9DBF6F00, - 0x9DBE6080, 0x9DBD5200, 0x9DBC4380, - 0x9DBB3500, 0x9DBA2680, 0x9DB91800, - 0x9DB80980, 0x9DB6FB00, 0x9DB5EC80, - 0x9DB4DE00, 0x9DB3CF80, 0x9DB2C100, - 0x9DB1B280, 0x9DB0A400, 0x9DAF9580, - 0x9DAE8700, 0x9DAD7880, 0x9DAC6A00, - 0x9DAB5B80, 0x9DAA4D00, 0x9DA93E80, - 0x9DA83000, 0x9DA72180, 0x9DA61300, - 0x9DA50480, 0x9DA3F600, 0x9DA2E780, - 0x9DA1D900, 0x9DA0CA80, 0x9D9FBC00, - 0x9D9EAD80, 0x9D9D9F00, 0x9D9C9080, - 0x9D9B8200, 0x9D9A7380, 0x9D996500, - 0x9D985680, 0x9D974800, 0x9D963980, - 0x9D952B00, 0x9D941C80, 0x9D930E00, - 0x9D91FF80, 0x9D90F100, 0x9D8FE280, - 0x9D8ED400, 0x9D8DC580, 0x9D8CB700, - 0x9D8BA880, 0x9D8A9A00, 0x9D898B80, - 0x9D887D00, 0x9D876E80, 0x9D866000, - 0x9D855180, 0x9D844300, 0x9D833480, - 0x9D822600, 0x9D811780, 0x9D800900, - 0x9D7EFA80, 0x9D7DEC00, 0x9D7CDD80, - 0x9D7BCF00, 0x9D7AC080, 0x9D79B200, - 0x9D78A380, 0x9D779500, 0x9D768680, - 0x9D757800, 0x9D746980, 0x9D735B00, - 0x9D724C80, 0x9D713E00, 0x9D702F80, - 0x9D6F2100, 0x9D6E1280, 0x9D6D0400, - 0x9D6BF580, 0x9D6AE700, 0x9D69D880, - 0x9D68CA00, 0x9D67BB80, 0x9D66AD00, - 0x9D659E80, 0x9D649000, 0x9D638180, - 0x9D627300, 0x9D616480, 0x9D605600, - 0x9D5F4780, 0x9D5E3900, 0x9D5D2A80, - 0x9D5C1C00, 0x9D5B0D80, 0x9D59FF00, - 0x9D58F080, 0x9D57E200, 0x9D56D380, - 0x9D55C500, 0x9D54B680, 0x9D53A800, - 0x9D529980, 0x9D518B00, 0x9D507C80, - 0x9D4F6E00, 0x9D4E5F80, 0x9D4D5100, - 0x9D4C4280, 0x9D4B3400, 0x9D4A2580, - 0x9D491700, 0x9D480880, 0x9D46FA00, - 0x9D45EB80, 0x9D44DD00, 0x9D43CE80, - 0x9D42C000, 0x9D41B180, 0x9D40A300, - 0x9D3F9480, 0x9D3E8600, 0x9D3D7780, - 0x9D3C6900, 0x9D3B5A80, 0x9D3A4C00, - 0x9D393D80, 0x9D382F00, 0x9D372080, - 0x9D361200, 0x9D350380, 0x9D33F500, - 0x9D32E680, 0x9D31D800, 0x9D30C980, - 0x9D2FBB00, 0x9D2EAC80, 0x9D2D9E00, - 0x9D2C8F80, 0x9D2B8100, 0x9D2A7280, - 0x9D296400, 0x9D285580, 0x9D274700, - 0x9D263880, 0x9D252A00, 0x9D241B80, - 0x9D230D00, 0x9D21FE80, 0x9D20F000, - 0x9D1FE180, 0x9D1ED300, 0x9D1DC480, - 0x9D1CB600, 0x9D1BA780, 0x9D1A9900, - 0x9D198A80, 0x9D187C00, 0x9D176D80, - 0x9D165F00, 0x9D155080, 0x9D144200, - 0x9D133380, 0x9D122500, 0x9D111680, - 0x9D100800, 0x9D0EF980, 0x9D0DEB00, - 0x9D0CDC80, 0x9D0BCE00, 0x9D0ABF80, - 0x9D09B100, 0x9D08A280, 0x9D079400, - 0x9D068580, 0x9D057700, 0x9D046880, - 0x9D035A00, 0x9D024B80, 0x9D013D00, - 0x9D002E80, 0x9CFF2000, 0x9CFE1180, - 0x9CFD0300, 0x9CFBF480, 0x9CFAE600, - 0x9CF9D780, 0x9CF8C900, 0x9CF7BA80, - 0x9CF6AC00, 0x9CF59D80, 0x9CF48F00, - 0x9CF38080, 0x9CF27200, 0x9CF16380, - 0x9CF05500, 0x9CEF4680, 0x9CEE3800, - 0x9CED2980, 0x9CEC1B00, 0x9CEB0C80, - 0x9CE9FE00, 0x9CE8EF80, 0x9CE7E100, - 0x9CE6D280, 0x9CE5C400, 0x9CE4B580, - 0x9CE3A700, 0x9CE29880, 0x9CE18A00, - 0x9CE07B80, 0x9CDF6D00, 0x9CDE5E80, - 0x9CDD5000, 0x9CDC4180, 0x9CDB3300, - 0x9CDA2480, 0x9CD91600, 0x9CD80780, - 0x9CD6F900, 0x9CD5EA80, 0x9CD4DC00, - 0x9CD3CD80, 0x9CD2BF00, 0x9CD1B080, - 0x9CD0A200, 0x9CCF9380, 0x9CCE8500, - 0x9CCD7680, 0x9CCC6800, 0x9CCB5980, - 0x9CCA4B00, 0x9CC93C80, 0x9CC82E00, - 0x9CC71F80, 0x9CC61100, 0x9CC50280, - 0x9CC3F400, 0x9CC2E580, 0x9CC1D700, - 0x9CC0C880, 0x9CBFBA00, 0x9CBEAB80, - 0x9CBD9D00, 0x9CBC8E80, 0x9CBB8000, - 0x9CBA7180, 0x9CB96300, 0x9CB85480, - 0x9CB74600, 0x9CB63780, 0x9CB52900, - 0x9CB41A80, 0x9CB30C00, 0x9CB1FD80, - 0x9CB0EF00, 0x9CAFE080, 0x9CAED200, - 0x9CADC380, 0x9CACB500, 0x9CABA680, - 0x9CAA9800, 0x9CA98980, 0x9CA87B00, - 0x9CA76C80, 0x9CA65E00, 0x9CA54F80, - 0x9CA44100, 0x9CA33280, 0x9CA22400, - 0x9CA11580, 0x9CA00700, 0x9C9EF880, - 0x9C9DEA00, 0x9C9CDB80, 0x9C9BCD00, - 0x9C9ABE80, 0x9C99B000, 0x9C98A180, - 0x9C979300, 0x9C968480, 0x9C957600, - 0x9C946780, 0x9C935900, 0x9C924A80, - 0x9C913C00, 0x9C902D80, 0x9C8F1F00, - 0x9C8E1080, 0x9C8D0200, 0x9C8BF380, - 0x9C8AE500, 0x9C89D680, 0x9C88C800, - 0x9C87B980, 0x9C86AB00, 0x9C859C80, - 0x9C848E00, 0x9C837F80, 0x9C827100, - 0x9C816280, 0x9C805400, 0x9C7F4580, - 0x9C7E3700, 0x9C7D2880, 0x9C7C1A00, - 0x9C7B0B80, 0x9C79FD00, 0x9C78EE80, - 0x9C77E000, 0x9C76D180, 0x9C75C300, - 0x9C74B480, 0x9C73A600, 0x9C729780, - 0x9C718900, 0x9C707A80, 0x9C6F6C00, - 0x9C6E5D80, 0x9C6D4F00, 0x9C6C4080, - 0x9C6B3200, 0x9C6A2380, 0x9C691500, - 0x9C680680, 0x9C66F800, 0x9C65E980, - 0x9C64DB00, 0x9C63CC80, 0x9C62BE00, - 0x9C61AF80, 0x9C60A100, 0x9C5F9280, - 0x9C5E8400, 0x9C5D7580, 0x9C5C6700, - 0x9C5B5880, 0x9C5A4A00, 0x9C593B80, - 0x9C582D00, 0x9C571E80, 0x9C561000, - 0x9C550180, 0x9C53F300, 0x9C52E480, - 0x9C51D600, 0x9C50C780, 0x9C4FB900, - 0x9C4EAA80, 0x9C4D9C00, 0x9C4C8D80, - 0x9C4B7F00, 0x9C4A7080, 0x9C496200, - 0x9C485380, 0x9C474500, 0x9C463680, - 0x9C452800, 0x9C441980, 0x9C430B00, - 0x9C41FC80, 0x9C40EE00, 0x9C3FDF80, - 0x9C3ED100, 0x9C3DC280, 0x9C3CB400, - 0x9C3BA580, 0x9C3A9700, 0x9C398880, - 0x9C387A00, 0x9C376B80, 0x9C365D00, - 0x9C354E80, 0x9C344000, 0x9C333180, - 0x9C322300, 0x9C311480, 0x9C300600, - 0x9C2EF780, 0x9C2DE900, 0x9C2CDA80, - 0x9C2BCC00, 0x9C2ABD80, 0x9C29AF00, - 0x9C28A080, 0x9C279200, 0x9C268380, - 0x9C257500, 0x9C246680, 0x9C235800, - 0x9C224980, 0x9C213B00, 0x9C202C80, - 0x9C1F1E00, 0x9C1E0F80, 0x9C1D0100, - 0x9C1BF280, 0x9C1AE400, 0x9C19D580, - 0x9C18C700, 0x9C17B880, 0x9C16AA00, - 0x9C159B80, 0x9C148D00, 0x9C137E80, - 0x9C127000, 0x9C116180, 0x9C105300, - 0x9C0F4480, 0x9C0E3600, 0x9C0D2780, - 0x9C0C1900, 0x9C0B0A80, 0x9C09FC00, - 0x9C08ED80, 0x9C07DF00, 0x9C06D080, - 0x9C05C200, 0x9C04B380, 0x9C03A500, - 0x9C029680, 0x9C018800, 0x9C007980, - 0x9BFF6B00, 0x9BFE5C80, 0x9BFD4E00, - 0x9BFC3F80, 0x9BFB3100, 0x9BFA2280, - 0x9BF91400, 0x9BF80580, 0x9BF6F700, - 0x9BF5E880, 0x9BF4DA00, 0x9BF3CB80, - 0x9BF2BD00, 0x9BF1AE80, 0x9BF0A000, - 0x9BEF9180, 0x9BEE8300, 0x9BED7480, - 0x9BEC6600, 0x9BEB5780, 0x9BEA4900, - 0x9BE93A80, 0x9BE82C00, 0x9BE71D80, - 0x9BE60F00, 0x9BE50080, 0x9BE3F200, - 0x9BE2E380, 0x9BE1D500, 0x9BE0C680, - 0x9BDFB800, 0x9BDEA980, 0x9BDD9B00, - 0x9BDC8C80, 0x9BDB7E00, 0x9BDA6F80, - 0x9BD96100, 0x9BD85280, 0x9BD74400, - 0x9BD63580, 0x9BD52700, 0x9BD41880, - 0x9BD30A00, 0x9BD1FB80, 0x9BD0ED00, - 0x9BCFDE80, 0x9BCED000, 0x9BCDC180, - 0x9BCCB300, 0x9BCBA480, 0x9BCA9600, - 0x9BC98780, 0x9BC87900, 0x9BC76A80, - 0x9BC65C00, 0x9BC54D80, 0x9BC43F00, - 0x9BC33080, 0x9BC22200, 0x9BC11380, - 0x9BC00500, 0x9BBEF680, 0x9BBDE800, - 0x9BBCD980, 0x9BBBCB00, 0x9BBABC80, - 0x9BB9AE00, 0x9BB89F80, 0x9BB79100, - 0x9BB68280, 0x9BB57400, 0x9BB46580, - 0x9BB35700, 0x9BB24880, 0x9BB13A00, - 0x9BB02B80, 0x9BAF1D00, 0x9BAE0E80, - 0x9BAD0000, 0x9BABF180, 0x9BAAE300, - 0x9BA9D480, 0x9BA8C600, 0x9BA7B780, - 0x9BA6A900, 0x9BA59A80, 0x9BA48C00, - 0x9BA37D80, 0x9BA26F00, 0x9BA16080, - 0x9BA05200, 0x9B9F4380, 0x9B9E3500, - 0x9B9D2680, 0x9B9C1800, 0x9B9B0980, - 0x9B99FB00, 0x9B98EC80, 0x9B97DE00, - 0x9B96CF80, 0x9B95C100, 0x9B94B280, - 0x9B93A400, 0x9B929580, 0x9B918700, - 0x9B907880, 0x9B8F6A00, 0x9B8E5B80, - 0x9B8D4D00, 0x9B8C3E80, 0x9B8B3000, - 0x9B8A2180, 0x9B891300, 0x9B880480, - 0x9B86F600, 0x9B85E780, 0x9B84D900, - 0x9B83CA80, 0x9B82BC00, 0x9B81AD80, - 0x9B809F00, 0x9B7F9080, 0x9B7E8200, - 0x9B7D7380, 0x9B7C6500, 0x9B7B5680, - 0x9B7A4800, 0x9B793980, 0x9B782B00, - 0x9B771C80, 0x9B760E00, 0x9B74FF80, - 0x9B73F100, 0x9B72E280, 0x9B71D400, - 0x9B70C580, 0x9B6FB700, 0x9B6EA880, - 0x9B6D9A00, 0x9B6C8B80, 0x9B6B7D00, - 0x9B6A6E80, 0x9B696000, 0x9B685180, - 0x9B674300, 0x9B663480, 0x9B652600, - 0x9B641780, 0x9B630900, 0x9B61FA80, - 0x9B60EC00, 0x9B5FDD80, 0x9B5ECF00, - 0x9B5DC080, 0x9B5CB200, 0x9B5BA380, - 0x9B5A9500, 0x9B598680, 0x9B587800, - 0x9B576980, 0x9B565B00, 0x9B554C80, - 0x9B543E00, 0x9B532F80, 0x9B522100, - 0x9B511280, 0x9B500400, 0x9B4EF580, - 0x9B4DE700, 0x9B4CD880, 0x9B4BCA00, - 0x9B4ABB80, 0x9B49AD00, 0x9B489E80, - 0x9B479000, 0x9B468180, 0x9B457300, - 0x9B446480, 0x9B435600, 0x9B424780, - 0x9B413900, 0x9B402A80, 0x9B3F1C00, - 0x9B3E0D80, 0x9B3CFF00, 0x9B3BF080, - 0x9B3AE200, 0x9B39D380, 0x9B38C500, - 0x9B37B680, 0x9B36A800, 0x9B359980, - 0x9B348B00, 0x9B337C80, 0x9B326E00, - 0x9B315F80, 0x9B305100, 0x9B2F4280, - 0x9B2E3400, 0x9B2D2580, 0x9B2C1700, - 0x9B2B0880, 0x9B29FA00, 0x9B28EB80, - 0x9B27DD00, 0x9B26CE80, 0x9B25C000, - 0x9B24B180, 0x9B23A300, 0x9B229480, - 0x9B218600, 0x9B207780, 0x9B1F6900, - 0x9B1E5A80, 0x9B1D4C00, 0x9B1C3D80, - 0x9B1B2F00, 0x9B1A2080, 0x9B191200, - 0x9B180380, 0x9B16F500, 0x9B15E680, - 0x9B14D800, 0x9B13C980, 0x9B12BB00, - 0x9B11AC80, 0x9B109E00, 0x9B0F8F80, - 0x9B0E8100, 0x9B0D7280, 0x9B0C6400, - 0x9B0B5580, 0x9B0A4700, 0x9B093880, - 0x9B082A00, 0x9B071B80, 0x9B060D00, - 0x9B04FE80, 0x9B03F000, 0x9B02E180, - 0x9B01D300, 0x9B00C480, 0x9AFFB600, - 0x9AFEA780, 0x9AFD9900, 0x9AFC8A80, - 0x9AFB7C00, 0x9AFA6D80, 0x9AF95F00, - 0x9AF85080, 0x9AF74200, 0x9AF63380, - 0x9AF52500, 0x9AF41680, 0x9AF30800, - 0x9AF1F980, 0x9AF0EB00, 0x9AEFDC80, - 0x9AEECE00, 0x9AEDBF80, 0x9AECB100, - 0x9AEBA280, 0x9AEA9400, 0x9AE98580, - 0x9AE87700, 0x9AE76880, 0x9AE65A00, - 0x9AE54B80, 0x9AE43D00, 0x9AE32E80, - 0x9AE22000, 0x9AE11180, 0x9AE00300, - 0x9ADEF480, 0x9ADDE600, 0x9ADCD780, - 0x9ADBC900, 0x9ADABA80, 0x9AD9AC00, - 0x9AD89D80, 0x9AD78F00, 0x9AD68080, - 0x9AD57200, 0x9AD46380, 0x9AD35500, - 0x9AD24680, 0x9AD13800, 0x9AD02980, - 0x9ACF1B00, 0x9ACE0C80, 0x9ACCFE00, - 0x9ACBEF80, 0x9ACAE100, 0x9AC9D280, - 0x9AC8C400, 0x9AC7B580, 0x9AC6A700, - 0x9AC59880, 0x9AC48A00, 0x9AC37B80, - 0x9AC26D00, 0x9AC15E80, 0x9AC05000, - 0x9ABF4180, 0x9ABE3300, 0x9ABD2480, - 0x9ABC1600, 0x9ABB0780, 0x9AB9F900, - 0x9AB8EA80, 0x9AB7DC00, 0x9AB6CD80, - 0x9AB5BF00, 0x9AB4B080, 0x9AB3A200, - 0x9AB29380, 0x9AB18500, 0x9AB07680, - 0x9AAF6800, 0x9AAE5980, 0x9AAD4B00, - 0x9AAC3C80, 0x9AAB2E00, 0x9AAA1F80, - 0x9AA91100, 0x9AA80280, 0x9AA6F400, - 0x9AA5E580, 0x9AA4D700, 0x9AA3C880, - 0x9AA2BA00, 0x9AA1AB80, 0x9AA09D00, - 0x9A9F8E80, 0x9A9E8000, 0x9A9D7180, - 0x9A9C6300, 0x9A9B5480, 0x9A9A4600, - 0x9A993780, 0x9A982900, 0x9A971A80, - 0x9A960C00, 0x9A94FD80, 0x9A93EF00, - 0x9A92E080, 0x9A91D200, 0x9A90C380, - 0x9A8FB500, 0x9A8EA680, 0x9A8D9800, - 0x9A8C8980, 0x9A8B7B00, 0x9A8A6C80, - 0x9A895E00, 0x9A884F80, 0x9A874100, - 0x9A863280, 0x9A852400, 0x9A841580, - 0x9A830700, 0x9A81F880, 0x9A80EA00, - 0x9A7FDB80, 0x9A7ECD00, 0x9A7DBE80, - 0x9A7CB000, 0x9A7BA180, 0x9A7A9300, - 0x9A798480, 0x9A787600, 0x9A776780, - 0x9A765900, 0x9A754A80, 0x9A743C00, - 0x9A732D80, 0x9A721F00, 0x9A711080, - 0x9A700200, 0x9A6EF380, 0x9A6DE500, - 0x9A6CD680, 0x9A6BC800, 0x9A6AB980, - 0x9A69AB00, 0x9A689C80, 0x9A678E00, - 0x9A667F80, 0x9A657100, 0x9A646280, - 0x9A635400, 0x9A624580, 0x9A613700, - 0x9A602880, 0x9A5F1A00, 0x9A5E0B80, - 0x9A5CFD00, 0x9A5BEE80, 0x9A5AE000, - 0x9A59D180, 0x9A58C300, 0x9A57B480, - 0x9A56A600, 0x9A559780, 0x9A548900, - 0x9A537A80, 0x9A526C00, 0x9A515D80, - 0x9A504F00, 0x9A4F4080, 0x9A4E3200, - 0x9A4D2380, 0x9A4C1500, 0x9A4B0680, - 0x9A49F800, 0x9A48E980, 0x9A47DB00, - 0x9A46CC80, 0x9A45BE00, 0x9A44AF80, - 0x9A43A100, 0x9A429280, 0x9A418400, - 0x9A407580, 0x9A3F6700, 0x9A3E5880, - 0x9A3D4A00, 0x9A3C3B80, 0x9A3B2D00, - 0x9A3A1E80, 0x9A391000, 0x9A380180, - 0x9A36F300, 0x9A35E480, 0x9A34D600, - 0x9A33C780, 0x9A32B900, 0x9A31AA80, - 0x9A309C00, 0x9A2F8D80, 0x9A2E7F00, - 0x9A2D7080, 0x9A2C6200, 0x9A2B5380, - 0x9A2A4500, 0x9A293680, 0x9A282800, - 0x9A271980, 0x9A260B00, 0x9A24FC80, - 0x9A23EE00, 0x9A22DF80, 0x9A21D100, - 0x9A20C280, 0x9A1FB400, 0x9A1EA580, - 0x9A1D9700, 0x9A1C8880, 0x9A1B7A00, - 0x9A1A6B80, 0x9A195D00, 0x9A184E80, - 0x9A174000, 0x9A163180, 0x9A152300, - 0x9A141480, 0x9A130600, 0x9A11F780, - 0x9A10E900, 0x9A0FDA80, 0x9A0ECC00, - 0x9A0DBD80, 0x9A0CAF00, 0x9A0BA080, - 0x9A0A9200, 0x9A098380, 0x9A087500, - 0x9A076680, 0x9A065800, 0x9A054980, - 0x9A043B00, 0x9A032C80, 0x9A021E00, - 0x9A010F80, 0x9A000100, 0x99FEF280, - 0x99FDE400, 0x99FCD580, 0x99FBC700, - 0x99FAB880, 0x99F9AA00, 0x99F89B80, - 0x99F78D00, 0x99F67E80, 0x99F57000, - 0x99F46180, 0x99F35300, 0x99F24480, - 0x99F13600, 0x99F02780, 0x99EF1900, - 0x99EE0A80, 0x99ECFC00, 0x99EBED80, - 0x99EADF00, 0x99E9D080, 0x99E8C200, - 0x99E7B380, 0x99E6A500, 0x99E59680, - 0x99E48800, 0x99E37980, 0x99E26B00, - 0x99E15C80, 0x99E04E00, 0x99DF3F80, - 0x99DE3100, 0x99DD2280, 0x99DC1400, - 0x99DB0580, 0x99D9F700, 0x99D8E880, - 0x99D7DA00, 0x99D6CB80, 0x99D5BD00, - 0x99D4AE80, 0x99D3A000, 0x99D29180, - 0x99D18300, 0x99D07480, 0x99CF6600, - 0x99CE5780, 0x99CD4900, 0x99CC3A80, - 0x99CB2C00, 0x99CA1D80, 0x99C90F00, - 0x99C80080, 0x99C6F200, 0x99C5E380, - 0x99C4D500, 0x99C3C680, 0x99C2B800, - 0x99C1A980, 0x99C09B00, 0x99BF8C80, - 0x99BE7E00, 0x99BD6F80, 0x99BC6100, - 0x99BB5280, 0x99BA4400, 0x99B93580, - 0x99B82700, 0x99B71880, 0x99B60A00, - 0x99B4FB80, 0x99B3ED00, 0x99B2DE80, - 0x99B1D000, 0x99B0C180, 0x99AFB300, - 0x99AEA480, 0x99AD9600, 0x99AC8780, - 0x99AB7900, 0x99AA6A80, 0x99A95C00, - 0x99A84D80, 0x99A73F00, 0x99A63080, - 0x99A52200, 0x99A41380, 0x99A30500, - 0x99A1F680, 0x99A0E800, 0x999FD980, - 0x999ECB00, 0x999DBC80, 0x999CAE00, - 0x999B9F80, 0x999A9100, 0x99998280, - 0x99987400, 0x99976580, 0x99965700, - 0x99954880, 0x99943A00, 0x99932B80, - 0x99921D00, 0x99910E80, 0x99940000, - 0x99930180, 0x99920300, 0x99910480, - 0x99900600, 0x998F0780, 0x998E0900, - 0x998D0A80, 0x998C0C00, 0x998B0D80, - 0x998A0F00, 0x99891080, 0x99881200, - 0x99871380, 0x99861500, 0x99851680, - 0x99841800, 0x99831980, 0x99821B00, - 0x99811C80, 0x99801E00, 0x997F1F80, - 0x997E2100, 0x997D2280, 0x997C2400, - 0x997B2580, 0x997A2700, 0x99792880, - 0x99782A00, 0x99772B80, 0x99762D00, - 0x99752E80, 0x99743000, 0x99733180, - 0x99723300, 0x99713480, 0x99703600, - 0x996F3780, 0x996E3900, 0x996D3A80, - 0x996C3C00, 0x996B3D80, 0x996A3F00, - 0x99694080, 0x99684200, 0x99674380, - 0x99664500, 0x99654680, 0x99644800, - 0x99634980, 0x99624B00, 0x99614C80, - 0x99604E00, 0x995F4F80, 0x995E5100, - 0x995D5280, 0x995C5400, 0x995B5580, - 0x995A5700, 0x99595880, 0x99585A00, - 0x99575B80, 0x99565D00, 0x99555E80, - 0x99546000, 0x99536180, 0x99526300, - 0x99516480, 0x99506600, 0x994F6780, - 0x994E6900, 0x994D6A80, 0x994C6C00, - 0x994B6D80, 0x994A6F00, 0x99497080, - 0x99487200, 0x99477380, 0x99467500, - 0x99457680, 0x99447800, 0x99437980, - 0x99427B00, 0x99417C80, 0x99407E00, - 0x993F7F80, 0x993E8100, 0x993D8280, - 0x993C8400, 0x993B8580, 0x993A8700, - 0x99398880, 0x99388A00, 0x99378B80, - 0x99368D00, 0x99358E80, 0x99349000, - 0x99339180, 0x99329300, 0x99319480, - 0x99309600, 0x992F9780, 0x992E9900, - 0x992D9A80, 0x992C9C00, 0x992B9D80, - 0x992A9F00, 0x9929A080, 0x9928A200, - 0x9927A380, 0x9926A500, 0x9925A680, - 0x9924A800, 0x9923A980, 0x9922AB00, - 0x9921AC80, 0x9920AE00, 0x991FAF80, - 0x991EB100, 0x991DB280, 0x991CB400, - 0x991BB580, 0x991AB700, 0x9919B880, - 0x9918BA00, 0x9917BB80, 0x9916BD00, - 0x9915BE80, 0x9914C000, 0x9913C180, - 0x9912C300, 0x9911C480, 0x9910C600, - 0x990FC780, 0x990EC900, 0x990DCA80, - 0x990CCC00, 0x990BCD80, 0x990ACF00, - 0x9909D080, 0x9908D200, 0x9907D380, - 0x9906D500, 0x9905D680, 0x9904D800, - 0x9903D980, 0x9902DB00, 0x9901DC80, - 0x9900DE00, 0x98FFDF80, 0x98FEE100, - 0x98FDE280, 0x98FCE400, 0x98FBE580, - 0x98FAE700, 0x98F9E880, 0x98F8EA00, - 0x98F7EB80, 0x98F6ED00, 0x98F5EE80, - 0x98F4F000, 0x98F3F180, 0x98F2F300, - 0x98F1F480, 0x98F0F600, 0x98EFF780, - 0x98EEF900, 0x98EDFA80, 0x98ECFC00, - 0x98EBFD80, 0x98EAFF00, 0x98EA0080, - 0x98E90200, 0x98E80380, 0x98E70500, - 0x98E60680, 0x98E50800, 0x98E40980, - 0x98E30B00, 0x98E20C80, 0x98E10E00, - 0x98E00F80, 0x98DF1100, 0x98DE1280, - 0x98DD1400, 0x98DC1580, 0x98DB1700, - 0x98DA1880, 0x98D91A00, 0x98D81B80, - 0x98D71D00, 0x98D61E80, 0x98D52000, - 0x98D42180, 0x98D32300, 0x98D22480, - 0x98D12600, 0x98D02780, 0x98CF2900, - 0x98CE2A80, 0x98CD2C00, 0x98CC2D80, - 0x98CB2F00, 0x98CA3080, 0x98C93200, - 0x98C83380, 0x98C73500, 0x98C63680, - 0x98C53800, 0x98C43980, 0x98C33B00, - 0x98C23C80, 0x98C13E00, 0x98C03F80, - 0x98BF4100, 0x98BE4280, 0x98BD4400, - 0x98BC4580, 0x98BB4700, 0x98BA4880, - 0x98B94A00, 0x98B84B80, 0x98B74D00, - 0x98B64E80, 0x98B55000, 0x98B45180, - 0x98B35300, 0x98B25480, 0x98B15600, - 0x98B05780, 0x98AF5900, 0x98AE5A80, - 0x98AD5C00, 0x98AC5D80, 0x98AB5F00, - 0x98AA6080, 0x98A96200, 0x98A86380, - 0x98A76500, 0x98A66680, 0x98A56800, - 0x98A46980, 0x98A36B00, 0x98A26C80, - 0x98A16E00, 0x98A06F80, 0x989F7100, - 0x989E7280, 0x989D7400, 0x989C7580, - 0x989B7700, 0x989A7880, 0x98997A00, - 0x98987B80, 0x98977D00, 0x98967E80, - 0x98958000, 0x98948180, 0x98938300, - 0x98928480, 0x98918600, 0x98908780, - 0x988F8900, 0x988E8A80, 0x988D8C00, - 0x988C8D80, 0x988B8F00, 0x988A9080, - 0x98899200, 0x98889380, 0x98879500, - 0x98869680, 0x98859800, 0x98849980, - 0x98839B00, 0x98829C80, 0x98819E00, - 0x98809F80, 0x987FA100, 0x987EA280, - 0x987DA400, 0x987CA580, 0x987BA700, - 0x987AA880, 0x9879AA00, 0x9878AB80, - 0x9877AD00, 0x9876AE80, 0x9875B000, - 0x9874B180, 0x9873B300, 0x9872B480, - 0x9871B600, 0x9870B780, 0x986FB900, - 0x986EBA80, 0x986DBC00, 0x986CBD80, - 0x986BBF00, 0x986AC080, 0x9869C200, - 0x9868C380, 0x9867C500, 0x9866C680, - 0x9865C800, 0x9864C980, 0x9863CB00, - 0x9862CC80, 0x9861CE00, 0x9860CF80, - 0x985FD100, 0x985ED280, 0x985DD400, - 0x985CD580, 0x985BD700, 0x985AD880, - 0x9859DA00, 0x9858DB80, 0x9857DD00, - 0x9856DE80, 0x9855E000, 0x9854E180, - 0x9853E300, 0x9852E480, 0x9851E600, - 0x9850E780, 0x984FE900, 0x984EEA80, - 0x984DEC00, 0x984CED80, 0x984BEF00, - 0x984AF080, 0x9849F200, 0x9848F380, - 0x9847F500, 0x9846F680, 0x9845F800, - 0x9844F980, 0x9843FB00, 0x9842FC80, - 0x9841FE00, 0x9840FF80, 0x98400100, - 0x983F0280, 0x983E0400, 0x983D0580, - 0x983C0700, 0x983B0880, 0x983A0A00, - 0x98390B80, 0x98380D00, 0x98370E80, - 0x98361000, 0x98351180, 0x98341300, - 0x98331480, 0x98321600, 0x98311780, - 0x98301900, 0x982F1A80, 0x982E1C00, - 0x982D1D80, 0x982C1F00, 0x982B2080, - 0x982A2200, 0x98292380, 0x98282500, - 0x98272680, 0x98262800, 0x98252980, - 0x98242B00, 0x98232C80, 0x98222E00, - 0x98212F80, 0x98203100, 0x981F3280, - 0x981E3400, 0x981D3580, 0x981C3700, - 0x981B3880, 0x981A3A00, 0x98193B80, - 0x98183D00, 0x98173E80, 0x98164000, - 0x98154180, 0x98144300, 0x98134480, - 0x98124600, 0x98114780, 0x98104900, - 0x980F4A80, 0x980E4C00, 0x980D4D80, - 0x980C4F00, 0x980B5080, 0x980A5200, - 0x98095380, 0x98085500, 0x98075680, - 0x98065800, 0x98055980, 0x98045B00, - 0x98035C80, 0x98025E00, 0x98015F80, - 0x98006100, 0x97FF6280, 0x97FE6400, - 0x97FD6580, 0x97FC6700, 0x97FB6880, - 0x97FA6A00, 0x97F96B80, 0x97F86D00, - 0x97F76E80, 0x97F67000, 0x97F57180, - 0x97F47300, 0x97F37480, 0x97F27600, - 0x97F17780, 0x97F07900, 0x97EF7A80, - 0x97EE7C00, 0x97ED7D80, 0x97EC7F00, - 0x97EB8080, 0x97EA8200, 0x97E98380, - 0x97E88500, 0x97E78680, 0x97E68800, - 0x97E58980, 0x97E48B00, 0x97E38C80, - 0x97E28E00, 0x97E18F80, 0x97E09100, - 0x97DF9280, 0x97DE9400, 0x97DD9580, - 0x97DC9700, 0x97DB9880, 0x97DA9A00, - 0x97D99B80, 0x97D89D00, 0x97D79E80, - 0x97D6A000, 0x97D5A180, 0x97D4A300, - 0x97D3A480, 0x97D2A600, 0x97D1A780, - 0x97D0A900, 0x97CFAA80, 0x97CEAC00, - 0x97CDAD80, 0x97CCAF00, 0x97CBB080, - 0x97CAB200, 0x97C9B380, 0x97C8B500, - 0x97C7B680, 0x97C6B800, 0x97C5B980, - 0x97C4BB00, 0x97C3BC80, 0x97C2BE00, - 0x97C1BF80, 0x97C0C100, 0x97BFC280, - 0x97BEC400, 0x97BDC580, 0x97BCC700, - 0x97BBC880, 0x97BACA00, 0x97B9CB80, - 0x97B8CD00, 0x97B7CE80, 0x97B6D000, - 0x97B5D180, 0x97B4D300, 0x97B3D480, - 0x97B2D600, 0x97B1D780, 0x97B0D900, - 0x97AFDA80, 0x97AEDC00, 0x97ADDD80, - 0x97ACDF00, 0x97ABE080, 0x97AAE200, - 0x97A9E380, 0x97A8E500, 0x97A7E680, - 0x97A6E800, 0x97A5E980, 0x97A4EB00, - 0x97A3EC80, 0x97A2EE00, 0x97A1EF80, - 0x97A0F100, 0x979FF280, 0x979EF400, - 0x979DF580, 0x979CF700, 0x979BF880, - 0x979AFA00, 0x9799FB80, 0x9798FD00, - 0x9797FE80, 0x97970000, 0x97960180, - 0x97950300, 0x97940480, 0x97930600, - 0x97920780, 0x97910900, 0x97900A80, - 0x978F0C00, 0x978E0D80, 0x978D0F00, - 0x978C1080, 0x978B1200, 0x978A1380, - 0x97891500, 0x97881680, 0x97871800, - 0x97861980, 0x97851B00, 0x97841C80, - 0x97831E00, 0x97821F80, 0x97812100, - 0x97802280, 0x977F2400, 0x977E2580, - 0x977D2700, 0x977C2880, 0x977B2A00, - 0x977A2B80, 0x97792D00, 0x97782E80, - 0x97773000, 0x97763180, 0x97753300, - 0x97743480, 0x97733600, 0x97723780, - 0x97713900, 0x97703A80, 0x976F3C00, - 0x976E3D80, 0x976D3F00, 0x976C4080, - 0x976B4200, 0x976A4380, 0x97694500, - 0x97684680, 0x97674800, 0x97664980, - 0x97654B00, 0x97644C80, 0x97634E00, - 0x97624F80, 0x97615100, 0x97605280, - 0x975F5400, 0x975E5580, 0x975D5700, - 0x975C5880, 0x975B5A00, 0x975A5B80, - 0x97595D00, 0x97585E80, 0x97576000, - 0x97566180, 0x97556300, 0x97546480, - 0x97536600, 0x97526780, 0x97516900, - 0x97506A80, 0x974F6C00, 0x974E6D80, - 0x974D6F00, 0x974C7080, 0x974B7200, - 0x974A7380, 0x97497500, 0x97487680, - 0x97477800, 0x97467980, 0x97457B00, - 0x97447C80, 0x97437E00, 0x97427F80, - 0x97418100, 0x97408280, 0x973F8400, - 0x973E8580, 0x973D8700, 0x973C8880, - 0x973B8A00, 0x973A8B80, 0x97398D00, - 0x97388E80, 0x97379000, 0x97369180, - 0x97359300, 0x97349480, 0x97339600, - 0x97329780, 0x97319900, 0x97309A80, - 0x972F9C00, 0x972E9D80, 0x972D9F00, - 0x972CA080, 0x972BA200, 0x972AA380, - 0x9729A500, 0x9728A680, 0x9727A800, - 0x9726A980, 0x9725AB00, 0x9724AC80, - 0x9723AE00, 0x9722AF80, 0x9721B100, - 0x9720B280, 0x971FB400, 0x971EB580, - 0x971DB700, 0x971CB880, 0x971BBA00, - 0x971ABB80, 0x9719BD00, 0x9718BE80, - 0x9717C000, 0x9716C180, 0x9715C300, - 0x9714C480, 0x9713C600, 0x9712C780, - 0x9711C900, 0x9710CA80, 0x970FCC00, - 0x970ECD80, 0x970DCF00, 0x970CD080, - 0x970BD200, 0x970AD380, 0x9709D500, - 0x9708D680, 0x9707D800, 0x9706D980, - 0x9705DB00, 0x9704DC80, 0x9703DE00, - 0x9702DF80, 0x9701E100, 0x9700E280, - 0x96FFE400, 0x96FEE580, 0x96FDE700, - 0x96FCE880, 0x96FBEA00, 0x96FAEB80, - 0x96F9ED00, 0x96F8EE80, 0x96F7F000, - 0x96F6F180, 0x96F5F300, 0x96F4F480, - 0x96F3F600, 0x96F2F780, 0x96F1F900, - 0x96F0FA80, 0x96EFFC00, 0x96EEFD80, - 0x96EDFF00, 0x96ED0080, 0x96EC0200, - 0x96EB0380, 0x96EA0500, 0x96E90680, - 0x96E80800, 0x96E70980, 0x96E60B00, - 0x96E50C80, 0x96E40E00, 0x96E30F80, - 0x96E21100, 0x96E11280, 0x96E01400, - 0x96DF1580, 0x96DE1700, 0x96DD1880, - 0x96DC1A00, 0x96DB1B80, 0x96DA1D00, - 0x96D91E80, 0x96D82000, 0x96D72180, - 0x96D62300, 0x96D52480, 0x96D42600, - 0x96D32780, 0x96D22900, 0x96D12A80, - 0x96D02C00, 0x96CF2D80, 0x96CE2F00, - 0x96CD3080, 0x96CC3200, 0x96CB3380, - 0x96CA3500, 0x96C93680, 0x96C83800, - 0x96C73980, 0x96C63B00, 0x96C53C80, - 0x96C43E00, 0x96C33F80, 0x96C24100, - 0x96C14280, 0x96C04400, 0x96BF4580, - 0x96BE4700, 0x96BD4880, 0x96BC4A00, - 0x96BB4B80, 0x96BA4D00, 0x96B94E80, - 0x96B85000, 0x96B75180, 0x96B65300, - 0x96B55480, 0x96B45600, 0x96B35780, - 0x96B25900, 0x96B15A80, 0x96B05C00, - 0x96AF5D80, 0x96AE5F00, 0x96AD6080, - 0x96AC6200, 0x96AB6380, 0x96AA6500, - 0x96A96680, 0x96A86800, 0x96A76980, - 0x96A66B00, 0x96A56C80, 0x96A46E00, - 0x96A36F80, 0x96A27100, 0x96A17280, - 0x96A07400, 0x969F7580, 0x969E7700, - 0x969D7880, 0x969C7A00, 0x969B7B80, - 0x969A7D00, 0x96997E80, 0x96988000, - 0x96978180, 0x96968300, 0x96958480, - 0x96948600, 0x96938780, 0x96928900, - 0x96918A80, 0x96908C00, 0x968F8D80, - 0x968E8F00, 0x968D9080, 0x968C9200, - 0x968B9380, 0x968A9500, 0x96899680, - 0x96889800, 0x96879980, 0x96869B00, - 0x96859C80, 0x96849E00, 0x96839F80, - 0x9682A100, 0x9681A280, 0x9680A400, - 0x967FA580, 0x967EA700, 0x967DA880, - 0x967CAA00, 0x967BAB80, 0x967AAD00, - 0x9679AE80, 0x9678B000, 0x9677B180, - 0x9676B300, 0x9675B480, 0x9674B600, - 0x9673B780, 0x9672B900, 0x9671BA80, - 0x9670BC00, 0x966FBD80, 0x966EBF00, - 0x966DC080, 0x966CC200, 0x966BC380, - 0x966AC500, 0x9669C680, 0x9668C800, - 0x9667C980, 0x9666CB00, 0x9665CC80, - 0x9664CE00, 0x9663CF80, 0x9662D100, - 0x9661D280, 0x9660D400, 0x965FD580, - 0x965ED700, 0x965DD880, 0x965CDA00, - 0x965BDB80, 0x965ADD00, 0x9659DE80, - 0x9658E000, 0x9657E180, 0x9656E300, - 0x9655E480, 0x9654E600, 0x9653E780, - 0x9652E900, 0x9651EA80, 0x9650EC00, - 0x964FED80, 0x964EEF00, 0x964DF080, - 0x964CF200, 0x964BF380, 0x964AF500, - 0x9649F680, 0x9648F800, 0x9647F980, - 0x9646FB00, 0x9645FC80, 0x9644FE00, - 0x9643FF80, 0x96430100, 0x96420280, - 0x96410400, 0x96400580, 0x963F0700, - 0x963E0880, 0x963D0A00, 0x963C0B80, - 0x963B0D00, 0x963A0E80, 0x96391000, - 0x96381180, 0x96371300, 0x96361480, - 0x96351600, 0x96341780, 0x96331900, - 0x96321A80, 0x96311C00, 0x96301D80, - 0x962F1F00, 0x962E2080, 0x962D2200, - 0x962C2380, 0x962B2500, 0x962A2680, - 0x96292800, 0x96282980, 0x96272B00, - 0x96262C80, 0x96252E00, 0x96242F80, - 0x96233100, 0x96223280, 0x96213400, - 0x96203580, 0x961F3700, 0x961E3880, - 0x961D3A00, 0x961C3B80, 0x961B3D00, - 0x961A3E80, 0x96194000, 0x96184180, - 0x96174300, 0x96164480, 0x96154600, - 0x96144780, 0x96134900, 0x96124A80, - 0x96114C00, 0x96104D80, 0x960F4F00, - 0x960E5080, 0x960D5200, 0x960C5380, - 0x960B5500, 0x960A5680, 0x96095800, - 0x96085980, 0x96075B00, 0x96065C80, - 0x96055E00, 0x96045F80, 0x96036100, - 0x96026280, 0x96016400, 0x96006580, - 0x95FF6700, 0x95FE6880, 0x95FD6A00, - 0x95FC6B80, 0x95FB6D00, 0x95FA6E80, - 0x95F97000, 0x95F87180, 0x95F77300, - 0x95F67480, 0x95F57600, 0x95F47780, - 0x95F37900, 0x95F27A80, 0x95F17C00, - 0x95F07D80, 0x95EF7F00, 0x95EE8080, - 0x95ED8200, 0x95EC8380, 0x95EB8500, - 0x95EA8680, 0x95E98800, 0x95E88980, - 0x95E78B00, 0x95E68C80, 0x95E58E00, - 0x95E48F80, 0x95E39100, 0x95E29280, - 0x95E19400, 0x95E09580, 0x95DF9700, - 0x95DE9880, 0x95DD9A00, 0x95DC9B80, - 0x95DB9D00, 0x95DA9E80, 0x95D9A000, - 0x95D8A180, 0x95D7A300, 0x95D6A480, - 0x95D5A600, 0x95D4A780, 0x95D3A900, - 0x95D2AA80, 0x95D1AC00, 0x95D0AD80, - 0x95CFAF00, 0x95CEB080, 0x95CDB200, - 0x95CCB380, 0x95CBB500, 0x95CAB680, - 0x95C9B800, 0x95C8B980, 0x95C7BB00, - 0x95C6BC80, 0x95C5BE00, 0x95C4BF80, - 0x95C3C100, 0x95C2C280, 0x95C1C400, - 0x95C0C580, 0x95BFC700, 0x95BEC880, - 0x95BDCA00, 0x95BCCB80, 0x95BBCD00, - 0x95BACE80, 0x95B9D000, 0x95B8D180, - 0x95B7D300, 0x95B6D480, 0x95B5D600, - 0x95B4D780, 0x95B3D900, 0x95B2DA80, - 0x95B1DC00, 0x95B0DD80, 0x95AFDF00, - 0x95AEE080, 0x95ADE200, 0x95ACE380, - 0x95ABE500, 0x95AAE680, 0x95A9E800, - 0x95A8E980, 0x95A7EB00, 0x95A6EC80, - 0x95A5EE00, 0x95A4EF80, 0x95A3F100, - 0x95A2F280, 0x95A1F400, 0x95A0F580, - 0x959FF700, 0x959EF880, 0x959DFA00, - 0x959CFB80, 0x959BFD00, 0x959AFE80, - 0x959A0000, 0x95990180, 0x95980300, - 0x95970480, 0x95960600, 0x95950780, - 0x95940900, 0x95930A80, 0x95920C00, - 0x95910D80, 0x95900F00, 0x958F1080, - 0x958E1200, 0x958D1380, 0x958C1500, - 0x958B1680, 0x958A1800, 0x95891980, - 0x95881B00, 0x95871C80, 0x95861E00, - 0x95851F80, 0x95842100, 0x95832280, - 0x95822400, 0x95812580, 0x95802700, - 0x957F2880, 0x957E2A00, 0x957D2B80, - 0x957C2D00, 0x957B2E80, 0x957A3000, - 0x95793180, 0x95783300, 0x95773480, - 0x95763600, 0x95753780, 0x95743900, - 0x95733A80, 0x95723C00, 0x95713D80, - 0x95703F00, 0x956F4080, 0x956E4200, - 0x956D4380, 0x956C4500, 0x956B4680, - 0x956A4800, 0x95694980, 0x95684B00, - 0x95674C80, 0x95664E00, 0x95654F80, - 0x95645100, 0x95635280, 0x95625400, - 0x95615580, 0x95605700, 0x955F5880, - 0x955E5A00, 0x955D5B80, 0x955C5D00, - 0x955B5E80, 0x955A6000, 0x95596180, - 0x95586300, 0x95576480, 0x95566600, - 0x95556780, 0x95546900, 0x95536A80, - 0x95526C00, 0x95516D80, 0x95506F00, - 0x954F7080, 0x954E7200, 0x954D7380, - 0x954C7500, 0x954B7680, 0x954A7800, - 0x95497980, 0x95487B00, 0x95477C80, - 0x95467E00, 0x95457F80, 0x95448100, - 0x95438280, 0x95428400, 0x95418580, - 0x95408700, 0x953F8880, 0x953E8A00, - 0x953D8B80, 0x953C8D00, 0x953B8E80, - 0x953A9000, 0x95399180, 0x95389300, - 0x95379480, 0x95369600, 0x95359780, - 0x95349900, 0x95339A80, 0x95329C00, - 0x95319D80, 0x95309F00, 0x952FA080, - 0x952EA200, 0x952DA380, 0x952CA500, - 0x952BA680, 0x952AA800, 0x9529A980, - 0x9528AB00, 0x9527AC80, 0x9526AE00, - 0x9525AF80, 0x9524B100, 0x9523B280, - 0x9522B400, 0x9521B580, 0x9520B700, - 0x951FB880, 0x951EBA00, 0x951DBB80, - 0x951CBD00, 0x951BBE80, 0x951AC000, - 0x9519C180, 0x9518C300, 0x9517C480, - 0x9516C600, 0x9515C780, 0x9514C900, - 0x9513CA80, 0x9512CC00, 0x9511CD80, - 0x9510CF00, 0x950FD080, 0x950ED200, - 0x950DD380, 0x950CD500, 0x950BD680, - 0x950AD800, 0x9509D980, 0x9508DB00, - 0x9507DC80, 0x9506DE00, 0x9505DF80, - 0x9504E100, 0x9503E280, 0x9502E400, - 0x9501E580, 0x9500E700, 0x94FFE880, - 0x94FEEA00, 0x94FDEB80, 0x94FCED00, - 0x94FBEE80, 0x94FAF000, 0x94F9F180, - 0x94F8F300, 0x94F7F480, 0x94F6F600, - 0x94F5F780, 0x94F4F900, 0x94F3FA80, - 0x94F2FC00, 0x94F1FD80, 0x94F0FF00, - 0x94F00080, 0x94EF0200, 0x94EE0380, - 0x94ED0500, 0x94EC0680, 0x94EB0800, - 0x94EA0980, 0x94E90B00, 0x94E80C80, - 0x94E70E00, 0x94E60F80, 0x94E51100, - 0x94E41280, 0x94E31400, 0x94E21580, - 0x94E11700, 0x94E01880, 0x94DF1A00, - 0x94DE1B80, 0x94DD1D00, 0x94DC1E80, - 0x94DB2000, 0x94DA2180, 0x94D92300, - 0x94D82480, 0x94D72600, 0x94D62780, - 0x94D52900, 0x94D42A80, 0x94D32C00, - 0x94D22D80, 0x94D12F00, 0x94D03080, - 0x94CF3200, 0x94CE3380, 0x94CD3500, - 0x94CC3680, 0x94CB3800, 0x94CA3980, - 0x94C93B00, 0x94C83C80, 0x94C73E00, - 0x94C63F80, 0x94C54100, 0x94C44280, - 0x94C34400, 0x94C24580, 0x94C14700, - 0x94C04880, 0x94BF4A00, 0x94BE4B80, - 0x94BD4D00, 0x94BC4E80, 0x94BB5000, - 0x94BA5180, 0x94B95300, 0x94B85480, - 0x94B75600, 0x94B65780, 0x94B55900, - 0x94B45A80, 0x94B35C00, 0x94B25D80, - 0x94B15F00, 0x94B06080, 0x94AF6200, - 0x94AE6380, 0x94AD6500, 0x94AC6680, - 0x94AB6800, 0x94AA6980, 0x94A96B00, - 0x94A86C80, 0x94A76E00, 0x94A66F80, - 0x94A57100, 0x94A47280, 0x94A37400, - 0x94A27580, 0x94A17700, 0x94A07880, - 0x949F7A00, 0x949E7B80, 0x949D7D00, - 0x949C7E80, 0x949B8000, 0x949A8180, - 0x94998300, 0x94988480, 0x94978600, - 0x94968780, 0x94958900, 0x94948A80, - 0x94938C00, 0x94928D80, 0x94918F00, - 0x94909080, 0x948F9200, 0x948E9380, - 0x948D9500, 0x948C9680, 0x948B9800, - 0x948A9980, 0x94899B00, 0x94889C80, - 0x94879E00, 0x94869F80, 0x9485A100, - 0x9484A280, 0x9483A400, 0x9482A580, - 0x9481A700, 0x9480A880, 0x947FAA00, - 0x947EAB80, 0x947DAD00, 0x947CAE80, - 0x947BB000, 0x947AB180, 0x9479B300, - 0x9478B480, 0x9477B600, 0x9476B780, - 0x9475B900, 0x9474BA80, 0x9473BC00, - 0x9472BD80, 0x9471BF00, 0x9470C080, - 0x946FC200, 0x946EC380, 0x946DC500, - 0x946CC680, 0x946BC800, 0x946AC980, - 0x9469CB00, 0x9468CC80, 0x9467CE00, - 0x9466CF80, 0x9465D100, 0x9464D280, - 0x9463D400, 0x9462D580, 0x9461D700, - 0x9460D880, 0x945FDA00, 0x945EDB80, - 0x945DDD00, 0x945CDE80, 0x945BE000, - 0x945AE180, 0x9459E300, 0x9458E480, - 0x9457E600, 0x9456E780, 0x9455E900, - 0x9454EA80, 0x9453EC00, 0x9452ED80, - 0x9451EF00, 0x9450F080, 0x944FF200, - 0x944EF380, 0x944DF500, 0x944CF680, - 0x944BF800, 0x944AF980, 0x9449FB00, - 0x9448FC80, 0x9447FE00, 0x9446FF80, - 0x94460100, 0x94450280, 0x94440400, - 0x94430580, 0x94420700, 0x94410880, - 0x94400A00, 0x943F0B80, 0x943E0D00, - 0x943D0E80, 0x943C1000, 0x943B1180, - 0x943A1300, 0x94391480, 0x94381600, - 0x94371780, 0x94361900, 0x94351A80, - 0x94341C00, 0x94331D80, 0x94321F00, - 0x94312080, 0x94302200, 0x942F2380, - 0x942E2500, 0x942D2680, 0x942C2800, - 0x942B2980, 0x942A2B00, 0x94292C80, - 0x94282E00, 0x94272F80, 0x94263100, - 0x94253280, 0x94243400, 0x94233580, - 0x94223700, 0x94213880, 0x94203A00, - 0x941F3B80, 0x941E3D00, 0x941D3E80, - 0x941C4000, 0x941B4180, 0x941A4300, - 0x94194480, 0x94184600, 0x94174780, - 0x94164900, 0x94154A80, 0x94144C00, - 0x94134D80, 0x94124F00, 0x94115080, - 0x94105200, 0x940F5380, 0x940E5500, - 0x940D5680, 0x940C5800, 0x940B5980, - 0x940A5B00, 0x94095C80, 0x94085E00, - 0x94075F80, 0x94066100, 0x94056280, - 0x94046400, 0x94036580, 0x94026700, - 0x94016880, 0x94006A00, 0x93FF6B80, - 0x93FE6D00, 0x93FD6E80, 0x93FC7000, - 0x93FB7180, 0x93FA7300, 0x93F97480, - 0x93F87600, 0x93F77780, 0x93F67900, - 0x93F57A80, 0x93F47C00, 0x93F37D80, - 0x93F27F00, 0x93F18080, 0x93F08200, - 0x93EF8380, 0x93EE8500, 0x93ED8680, - 0x93EC8800, 0x93EB8980, 0x93EA8B00, - 0x93E98C80, 0x93E88E00, 0x93E78F80, - 0x93E69100, 0x93E59280, 0x93E49400, - 0x93E39580, 0x93E29700, 0x93E19880, - 0x93E09A00, 0x93DF9B80, 0x93DE9D00, - 0x93DD9E80, 0x93DCA000, 0x93DBA180, - 0x93DAA300, 0x93D9A480, 0x93D8A600, - 0x93D7A780, 0x93D6A900, 0x93D5AA80, - 0x93D4AC00, 0x93D3AD80, 0x93D2AF00, - 0x93D1B080, 0x93D0B200, 0x93CFB380, - 0x93CEB500, 0x93CDB680, 0x93CCB800, - 0x93CBB980, 0x93CABB00, 0x93C9BC80, - 0x93C8BE00, 0x93C7BF80, 0x93C6C100, - 0x93C5C280, 0x93C4C400, 0x93C3C580, - 0x93C2C700, 0x93C1C880, 0x93C0CA00, - 0x93BFCB80, 0x93BECD00, 0x93BDCE80, - 0x93BCD000, 0x93BBD180, 0x93BAD300, - 0x93B9D480, 0x93B8D600, 0x93B7D780, - 0x93B6D900, 0x93B5DA80, 0x93B4DC00, - 0x93B3DD80, 0x93B2DF00, 0x93B1E080, - 0x93B0E200, 0x93AFE380, 0x93AEE500, - 0x93ADE680, 0x93ACE800, 0x93ABE980, - 0x93AAEB00, 0x93A9EC80, 0x93A8EE00, - 0x93A7EF80, 0x93A6F100, 0x93A5F280, - 0x93A4F400, 0x93A3F580, 0x93A2F700, - 0x93A1F880, 0x93A0FA00, 0x939FFB80, - 0x939EFD00, 0x939DFE80, 0x939D0000, - 0x939C0180, 0x939B0300, 0x939A0480, - 0x93990600, 0x93980780, 0x93970900, - 0x93960A80, 0x93950C00, 0x93940D80, - 0x93930F00, 0x93921080, 0x93911200, - 0x93901380, 0x938F1500, 0x938E1680, - 0x938D1800, 0x938C1980, 0x938B1B00, - 0x938A1C80, 0x93891E00, 0x93881F80, - 0x93872100, 0x93862280, 0x93852400, - 0x93842580, 0x93832700, 0x93822880, - 0x93812A00, 0x93802B80, 0x937F2D00, - 0x937E2E80, 0x937D3000, 0x937C3180, - 0x937B3300, 0x937A3480, 0x93793600, - 0x93783780, 0x93773900, 0x93763A80, - 0x93753C00, 0x93743D80, 0x93733F00, - 0x93724080, 0x93714200, 0x93704380, - 0x936F4500, 0x936E4680, 0x936D4800, - 0x936C4980, 0x936B4B00, 0x936A4C80, - 0x93694E00, 0x93684F80, 0x93675100, - 0x93665280, 0x93655400, 0x93645580, - 0x93635700, 0x93625880, 0x93615A00, - 0x93605B80, 0x935F5D00, 0x935E5E80, - 0x935D6000, 0x935C6180, 0x935B6300, - 0x935A6480, 0x93596600, 0x93586780, - 0x93576900, 0x93566A80, 0x93556C00, - 0x93546D80, 0x93536F00, 0x93527080, - 0x93517200, 0x93507380, 0x934F7500, - 0x934E7680, 0x934D7800, 0x934C7980, - 0x934B7B00, 0x934A7C80, 0x93497E00, - 0x93487F80, 0x93478100, 0x93468280, - 0x93458400, 0x93448580, 0x93438700, - 0x93428880, 0x93418A00, 0x93408B80, - 0x933F8D00, 0x933E8E80, 0x933D9000, - 0x933C9180, 0x933B9300, 0x933A9480, - 0x93399600, 0x93389780, 0x93379900, - 0x93369A80, 0x93359C00, 0x93349D80, - 0x93339F00, 0x9332A080, 0x9331A200, - 0x9330A380, 0x932FA500, 0x932EA680, - 0x932DA800, 0x932CA980, 0x932BAB00, - 0x932AAC80, 0x9329AE00, 0x9328AF80, - 0x9327B100, 0x9326B280, 0x9325B400, - 0x9324B580, 0x9323B700, 0x9322B880, - 0x9321BA00, 0x9320BB80, 0x931FBD00, - 0x931EBE80, 0x931DC000, 0x931CC180, - 0x931BC300, 0x931AC480, 0x9319C600, - 0x9318C780, 0x9317C900, 0x9316CA80, - 0x9315CC00, 0x9314CD80, 0x9313CF00, - 0x9312D080, 0x9311D200, 0x9310D380, - 0x930FD500, 0x930ED680, 0x930DD800, - 0x930CD980, 0x930BDB00, 0x930ADC80, - 0x9309DE00, 0x9308DF80, 0x9307E100, - 0x9306E280, 0x9305E400, 0x9304E580, - 0x9303E700, 0x9302E880, 0x9301EA00, - 0x9300EB80, 0x92FFED00, 0x92FEEE80, - 0x92FDF000, 0x92FCF180, 0x92FBF300, - 0x92FAF480, 0x92F9F600, 0x92F8F780, - 0x92F7F900, 0x92F6FA80, 0x92F5FC00, - 0x92F4FD80, 0x92F3FF00, 0x92F30080, - 0x92F20200, 0x92F10380, 0x92F00500, - 0x92EF0680, 0x92EE0800, 0x92ED0980, - 0x92EC0B00, 0x92EB0C80, 0x92EA0E00, - 0x92E90F80, 0x92E81100, 0x92E71280, - 0x92E61400, 0x92E51580, 0x92E41700, - 0x92E31880, 0x92E21A00, 0x92E11B80, - 0x92E01D00, 0x92DF1E80, 0x92DE2000, - 0x92DD2180, 0x92DC2300, 0x92DB2480, - 0x92DA2600, 0x92D92780, 0x92D82900, - 0x92D72A80, 0x92D62C00, 0x92D52D80, - 0x92D42F00, 0x92D33080, 0x92D23200, - 0x92D13380, 0x92D03500, 0x92CF3680, - 0x92CE3800, 0x92CD3980, 0x92CC3B00, - 0x92CB3C80, 0x92CA3E00, 0x92C93F80, - 0x92C84100, 0x92C74280, 0x92C64400, - 0x92C54580, 0x92C44700, 0x92C34880, - 0x92C24A00, 0x92C14B80, 0x92C04D00, - 0x92BF4E80, 0x92BE5000, 0x92BD5180, - 0x92BC5300, 0x92BB5480, 0x92BA5600, - 0x92B95780, 0x92B85900, 0x92B75A80, - 0x92B65C00, 0x92B55D80, 0x92B45F00, - 0x92B36080, 0x92B26200, 0x92B16380, - 0x92B06500, 0x92AF6680, 0x92AE6800, - 0x92AD6980, 0x92AC6B00, 0x92AB6C80, - 0x92AA6E00, 0x92A96F80, 0x92A87100, - 0x92A77280, 0x92A67400, 0x92A57580, - 0x92A47700, 0x92A37880, 0x92A27A00, - 0x92A17B80, 0x92A07D00, 0x929F7E80, - 0x929E8000, 0x929D8180, 0x929C8300, - 0x929B8480, 0x929A8600, 0x92998780, - 0x92988900, 0x92978A80, 0x92968C00, - 0x92958D80, 0x92948F00, 0x92939080, - 0x92929200, 0x92919380, 0x92909500, - 0x928F9680, 0x928E9800, 0x928D9980, - 0x928C9B00, 0x928B9C80, 0x928A9E00, - 0x92899F80, 0x9288A100, 0x9287A280, - 0x9286A400, 0x9285A580, 0x9284A700, - 0x9283A880, 0x9282AA00, 0x9281AB80, - 0x9280AD00, 0x927FAE80, 0x927EB000, - 0x927DB180, 0x927CB300, 0x927BB480, - 0x927AB600, 0x9279B780, 0x9278B900, - 0x9277BA80, 0x9276BC00, 0x9275BD80, - 0x9274BF00, 0x9273C080, 0x9272C200, - 0x9271C380, 0x9270C500, 0x926FC680, - 0x926EC800, 0x926DC980, 0x926CCB00, - 0x926BCC80, 0x926ACE00, 0x9269CF80, - 0x9268D100, 0x9267D280, 0x9266D400, - 0x9265D580, 0x9264D700, 0x9263D880, - 0x9262DA00, 0x9261DB80, 0x9260DD00, - 0x925FDE80, 0x925EE000, 0x925DE180, - 0x925CE300, 0x925BE480, 0x925AE600, - 0x9259E780, 0x9258E900, 0x9257EA80, - 0x9256EC00, 0x9255ED80, 0x9254EF00, - 0x9253F080, 0x9252F200, 0x9251F380, - 0x9250F500, 0x924FF680, 0x924EF800, - 0x924DF980, 0x924CFB00, 0x924BFC80, - 0x924AFE00, 0x9249FF80, 0x92490100, - 0x92480280, 0x92470400, 0x92460580, - 0x92450700, 0x92440880, 0x92430A00, - 0x92420B80, 0x92410D00, 0x92400E80, - 0x923F1000, 0x923E1180, 0x923D1300, - 0x923C1480, 0x923B1600, 0x923A1780, - 0x92391900, 0x92381A80, 0x92371C00, - 0x92361D80, 0x92351F00, 0x92342080, - 0x92332200, 0x92322380, 0x92312500, - 0x92302680, 0x922F2800, 0x922E2980, - 0x922D2B00, 0x922C2C80, 0x922B2E00, - 0x922A2F80, 0x92293100, 0x92283280, - 0x92273400, 0x92263580, 0x92253700, - 0x92243880, 0x92233A00, 0x92223B80, - 0x92213D00, 0x92203E80, 0x921F4000, - 0x921E4180, 0x921D4300, 0x921C4480, - 0x921B4600, 0x921A4780, 0x92194900, - 0x92184A80, 0x92174C00, 0x92164D80, - 0x92154F00, 0x92145080, 0x92135200, - 0x92125380, 0x92115500, 0x92105680, - 0x920F5800, 0x920E5980, 0x920D5B00, - 0x920C5C80, 0x920B5E00, 0x920A5F80, - 0x92096100, 0x92086280, 0x92076400, - 0x92066580, 0x92056700, 0x92046880, - 0x92036A00, 0x92026B80, 0x92016D00, - 0x92006E80, 0x91FF7000, 0x91FE7180, - 0x91FD7300, 0x91FC7480, 0x91FB7600, - 0x91FA7780, 0x91F97900, 0x91F87A80, - 0x91F77C00, 0x91F67D80, 0x91F57F00, - 0x91F48080, 0x91F38200, 0x91F28380, - 0x91F18500, 0x91F08680, 0x91EF8800, - 0x91EE8980, 0x91ED8B00, 0x91EC8C80, - 0x91EB8E00, 0x91EA8F80, 0x91E99100, - 0x91E89280, 0x91E79400, 0x91E69580, - 0x91E59700, 0x91E49880, 0x91E39A00, - 0x91E29B80, 0x91E19D00, 0x91E09E80, - 0x91DFA000, 0x91DEA180, 0x91DDA300, - 0x91DCA480, 0x91DBA600, 0x91DAA780, - 0x91D9A900, 0x91D8AA80, 0x91D7AC00, - 0x91D6AD80, 0x91D5AF00, 0x91D4B080, - 0x91D3B200, 0x91D2B380, 0x91D1B500, - 0x91D0B680, 0x91CFB800, 0x91CEB980, - 0x91CDBB00, 0x91CCBC80, 0x91CBBE00, - 0x91CABF80, 0x91C9C100, 0x91C8C280, - 0x91C7C400, 0x91C6C580, 0x91C5C700, - 0x91C4C880, 0x91C3CA00, 0x91C2CB80, - 0x91C1CD00, 0x91C0CE80, 0x91BFD000, - 0x91BED180, 0x91BDD300, 0x91BCD480, - 0x91BBD600, 0x91BAD780, 0x91B9D900, - 0x91B8DA80, 0x91B7DC00, 0x91B6DD80, - 0x91B5DF00, 0x91B4E080, 0x91B3E200, - 0x91B2E380, 0x91B1E500, 0x91B0E680, - 0x91AFE800, 0x91AEE980, 0x91ADEB00, - 0x91ACEC80, 0x91ABEE00, 0x91AAEF80, - 0x91A9F100, 0x91A8F280, 0x91A7F400, - 0x91A6F580, 0x91A5F700, 0x91A4F880, - 0x91A3FA00, 0x91A2FB80, 0x91A1FD00, - 0x91A0FE80, 0x91A00000, 0x919F0F80, - 0x919E1F00, 0x919D2E80, 0x919C3E00, - 0x919B4D80, 0x919A5D00, 0x91996C80, - 0x91987C00, 0x91978B80, 0x91969B00, - 0x9195AA80, 0x9194BA00, 0x9193C980, - 0x9192D900, 0x9191E880, 0x9190F800, - 0x91900780, 0x918F1700, 0x918E2680, - 0x918D3600, 0x918C4580, 0x918B5500, - 0x918A6480, 0x91897400, 0x91888380, - 0x91879300, 0x9186A280, 0x9185B200, - 0x9184C180, 0x9183D100, 0x9182E080, - 0x9181F000, 0x9180FF80, 0x91800F00, - 0x917F1E80, 0x917E2E00, 0x917D3D80, - 0x917C4D00, 0x917B5C80, 0x917A6C00, - 0x91797B80, 0x91788B00, 0x91779A80, - 0x9176AA00, 0x9175B980, 0x9174C900, - 0x9173D880, 0x9172E800, 0x9171F780, - 0x91710700, 0x91701680, 0x916F2600, - 0x916E3580, 0x916D4500, 0x916C5480, - 0x916B6400, 0x916A7380, 0x91698300, - 0x91689280, 0x9167A200, 0x9166B180, - 0x9165C100, 0x9164D080, 0x9163E000, - 0x9162EF80, 0x9161FF00, 0x91610E80, - 0x91601E00, 0x915F2D80, 0x915E3D00, - 0x915D4C80, 0x915C5C00, 0x915B6B80, - 0x915A7B00, 0x91598A80, 0x91589A00, - 0x9157A980, 0x9156B900, 0x9155C880, - 0x9154D800, 0x9153E780, 0x9152F700, - 0x91520680, 0x91511600, 0x91502580, - 0x914F3500, 0x914E4480, 0x914D5400, - 0x914C6380, 0x914B7300, 0x914A8280, - 0x91499200, 0x9148A180, 0x9147B100, - 0x9146C080, 0x9145D000, 0x9144DF80, - 0x9143EF00, 0x9142FE80, 0x91420E00, - 0x91411D80, 0x91402D00, 0x913F3C80, - 0x913E4C00, 0x913D5B80, 0x913C6B00, - 0x913B7A80, 0x913A8A00, 0x91399980, - 0x9138A900, 0x9137B880, 0x9136C800, - 0x9135D780, 0x9134E700, 0x9133F680, - 0x91330600, 0x91321580, 0x91312500, - 0x91303480, 0x912F4400, 0x912E5380, - 0x912D6300, 0x912C7280, 0x912B8200, - 0x912A9180, 0x9129A100, 0x9128B080, - 0x9127C000, 0x9126CF80, 0x9125DF00, - 0x9124EE80, 0x9123FE00, 0x91230D80, - 0x91221D00, 0x91212C80, 0x91203C00, - 0x911F4B80, 0x911E5B00, 0x911D6A80, - 0x911C7A00, 0x911B8980, 0x911A9900, - 0x9119A880, 0x9118B800, 0x9117C780, - 0x9116D700, 0x9115E680, 0x9114F600, - 0x91140580, 0x91131500, 0x91122480, - 0x91113400, 0x91104380, 0x910F5300, - 0x910E6280, 0x910D7200, 0x910C8180, - 0x910B9100, 0x910AA080, 0x9109B000, - 0x9108BF80, 0x9107CF00, 0x9106DE80, - 0x9105EE00, 0x9104FD80, 0x91040D00, - 0x91031C80, 0x91022C00, 0x91013B80, - 0x91004B00, 0x90FF5A80, 0x90FE6A00, - 0x90FD7980, 0x90FC8900, 0x90FB9880, - 0x90FAA800, 0x90F9B780, 0x90F8C700, - 0x90F7D680, 0x90F6E600, 0x90F5F580, - 0x90F50500, 0x90F41480, 0x90F32400, - 0x90F23380, 0x90F14300, 0x90F05280, - 0x90EF6200, 0x90EE7180, 0x90ED8100, - 0x90EC9080, 0x90EBA000, 0x90EAAF80, - 0x90E9BF00, 0x90E8CE80, 0x90E7DE00, - 0x90E6ED80, 0x90E5FD00, 0x90E50C80, - 0x90E41C00, 0x90E32B80, 0x90E23B00, - 0x90E14A80, 0x90E05A00, 0x90DF6980, - 0x90DE7900, 0x90DD8880, 0x90DC9800, - 0x90DBA780, 0x90DAB700, 0x90D9C680, - 0x90D8D600, 0x90D7E580, 0x90D6F500, - 0x90D60480, 0x90D51400, 0x90D42380, - 0x90D33300, 0x90D24280, 0x90D15200, - 0x90D06180, 0x90CF7100, 0x90CE8080, - 0x90CD9000, 0x90CC9F80, 0x90CBAF00, - 0x90CABE80, 0x90C9CE00, 0x90C8DD80, - 0x90C7ED00, 0x90C6FC80, 0x90C60C00, - 0x90C51B80, 0x90C42B00, 0x90C33A80, - 0x90C24A00, 0x90C15980, 0x90C06900, - 0x90BF7880, 0x90BE8800, 0x90BD9780, - 0x90BCA700, 0x90BBB680, 0x90BAC600, - 0x90B9D580, 0x90B8E500, 0x90B7F480, - 0x90B70400, 0x90B61380, 0x90B52300, - 0x90B43280, 0x90B34200, 0x90B25180, - 0x90B16100, 0x90B07080, 0x90AF8000, - 0x90AE8F80, 0x90AD9F00, 0x90ACAE80, - 0x90ABBE00, 0x90AACD80, 0x90A9DD00, - 0x90A8EC80, 0x90A7FC00, 0x90A70B80, - 0x90A61B00, 0x90A52A80, 0x90A43A00, - 0x90A34980, 0x90A25900, 0x90A16880, - 0x90A07800, 0x909F8780, 0x909E9700, - 0x909DA680, 0x909CB600, 0x909BC580, - 0x909AD500, 0x9099E480, 0x9098F400, - 0x90980380, 0x90971300, 0x90962280, - 0x90953200, 0x90944180, 0x90935100, - 0x90926080, 0x90917000, 0x90907F80, - 0x908F8F00, 0x908E9E80, 0x908DAE00, - 0x908CBD80, 0x908BCD00, 0x908ADC80, - 0x9089EC00, 0x9088FB80, 0x90880B00, - 0x90871A80, 0x90862A00, 0x90853980, - 0x90844900, 0x90835880, 0x90826800, - 0x90817780, 0x90808700, 0x907F9680, - 0x907EA600, 0x907DB580, 0x907CC500, - 0x907BD480, 0x907AE400, 0x9079F380, - 0x90790300, 0x90781280, 0x90772200, - 0x90763180, 0x90754100, 0x90745080, - 0x90736000, 0x90726F80, 0x90717F00, - 0x90708E80, 0x906F9E00, 0x906EAD80, - 0x906DBD00, 0x906CCC80, 0x906BDC00, - 0x906AEB80, 0x9069FB00, 0x90690A80, - 0x90681A00, 0x90672980, 0x90663900, - 0x90654880, 0x90645800, 0x90636780, - 0x90627700, 0x90618680, 0x90609600, - 0x905FA580, 0x905EB500, 0x905DC480, - 0x905CD400, 0x905BE380, 0x905AF300, - 0x905A0280, 0x90591200, 0x90582180, - 0x90573100, 0x90564080, 0x90555000, - 0x90545F80, 0x90536F00, 0x90527E80, - 0x90518E00, 0x90509D80, 0x904FAD00, - 0x904EBC80, 0x904DCC00, 0x904CDB80, - 0x904BEB00, 0x904AFA80, 0x904A0A00, - 0x90491980, 0x90482900, 0x90473880, - 0x90464800, 0x90455780, 0x90446700, - 0x90437680, 0x90428600, 0x90419580, - 0x9040A500, 0x903FB480, 0x903EC400, - 0x903DD380, 0x903CE300, 0x903BF280, - 0x903B0200, 0x903A1180, 0x90392100, - 0x90383080, 0x90374000, 0x90364F80, - 0x90355F00, 0x90346E80, 0x90337E00, - 0x90328D80, 0x90319D00, 0x9030AC80, - 0x902FBC00, 0x902ECB80, 0x902DDB00, - 0x902CEA80, 0x902BFA00, 0x902B0980, - 0x902A1900, 0x90292880, 0x90283800, - 0x90274780, 0x90265700, 0x90256680, - 0x90247600, 0x90238580, 0x90229500, - 0x9021A480, 0x9020B400, 0x901FC380, - 0x901ED300, 0x901DE280, 0x901CF200, - 0x901C0180, 0x901B1100, 0x901A2080, - 0x90193000, 0x90183F80, 0x90174F00, - 0x90165E80, 0x90156E00, 0x90147D80, - 0x90138D00, 0x90129C80, 0x9011AC00, - 0x9010BB80, 0x900FCB00, 0x900EDA80, - 0x900DEA00, 0x900CF980, 0x900C0900, - 0x900B1880, 0x900A2800, 0x90093780, - 0x90084700, 0x90075680, 0x90066600, - 0x90057580, 0x90048500, 0x90039480, - 0x9002A400, 0x9001B380, 0x9000C300, - 0x8FFFD280, 0x8FFEE200, 0x8FFDF180, - 0x8FFD0100, 0x8FFC1080, 0x8FFB2000, - 0x8FFA2F80, 0x8FF93F00, 0x8FF84E80, - 0x8FF75E00, 0x8FF66D80, 0x8FF57D00, - 0x8FF48C80, 0x8FF39C00, 0x8FF2AB80, - 0x8FF1BB00, 0x8FF0CA80, 0x8FEFDA00, - 0x8FEEE980, 0x8FEDF900, 0x8FED0880, - 0x8FEC1800, 0x8FEB2780, 0x8FEA3700, - 0x8FE94680, 0x8FE85600, 0x8FE76580, - 0x8FE67500, 0x8FE58480, 0x8FE49400, - 0x8FE3A380, 0x8FE2B300, 0x8FE1C280, - 0x8FE0D200, 0x8FDFE180, 0x8FDEF100, - 0x8FDE0080, 0x8FDD1000, 0x8FDC1F80, - 0x8FDB2F00, 0x8FDA3E80, 0x8FD94E00, - 0x8FD85D80, 0x8FD76D00, 0x8FD67C80, - 0x8FD58C00, 0x8FD49B80, 0x8FD3AB00, - 0x8FD2BA80, 0x8FD1CA00, 0x8FD0D980, - 0x8FCFE900, 0x8FCEF880, 0x8FCE0800, - 0x8FCD1780, 0x8FCC2700, 0x8FCB3680, - 0x8FCA4600, 0x8FC95580, 0x8FC86500, - 0x8FC77480, 0x8FC68400, 0x8FC59380, - 0x8FC4A300, 0x8FC3B280, 0x8FC2C200, - 0x8FC1D180, 0x8FC0E100, 0x8FBFF080, - 0x8FBF0000, 0x8FBE0F80, 0x8FBD1F00, - 0x8FBC2E80, 0x8FBB3E00, 0x8FBA4D80, - 0x8FB95D00, 0x8FB86C80, 0x8FB77C00, - 0x8FB68B80, 0x8FB59B00, 0x8FB4AA80, - 0x8FB3BA00, 0x8FB2C980, 0x8FB1D900, - 0x8FB0E880, 0x8FAFF800, 0x8FAF0780, - 0x8FAE1700, 0x8FAD2680, 0x8FAC3600, - 0x8FAB4580, 0x8FAA5500, 0x8FA96480, - 0x8FA87400, 0x8FA78380, 0x8FA69300, - 0x8FA5A280, 0x8FA4B200, 0x8FA3C180, - 0x8FA2D100, 0x8FA1E080, 0x8FA0F000, - 0x8F9FFF80, 0x8F9F0F00, 0x8F9E1E80, - 0x8F9D2E00, 0x8F9C3D80, 0x8F9B4D00, - 0x8F9A5C80, 0x8F996C00, 0x8F987B80, - 0x8F978B00, 0x8F969A80, 0x8F95AA00, - 0x8F94B980, 0x8F93C900, 0x8F92D880, - 0x8F91E800, 0x8F90F780, 0x8F900700, - 0x8F8F1680, 0x8F8E2600, 0x8F8D3580, - 0x8F8C4500, 0x8F8B5480, 0x8F8A6400, - 0x8F897380, 0x8F888300, 0x8F879280, - 0x8F86A200, 0x8F85B180, 0x8F84C100, - 0x8F83D080, 0x8F82E000, 0x8F81EF80, - 0x8F80FF00, 0x8F800E80, 0x8F7F1E00, - 0x8F7E2D80, 0x8F7D3D00, 0x8F7C4C80, - 0x8F7B5C00, 0x8F7A6B80, 0x8F797B00, - 0x8F788A80, 0x8F779A00, 0x8F76A980, - 0x8F75B900, 0x8F74C880, 0x8F73D800, - 0x8F72E780, 0x8F71F700, 0x8F710680, - 0x8F701600, 0x8F6F2580, 0x8F6E3500, - 0x8F6D4480, 0x8F6C5400, 0x8F6B6380, - 0x8F6A7300, 0x8F698280, 0x8F689200, - 0x8F67A180, 0x8F66B100, 0x8F65C080, - 0x8F64D000, 0x8F63DF80, 0x8F62EF00, - 0x8F61FE80, 0x8F610E00, 0x8F601D80, - 0x8F5F2D00, 0x8F5E3C80, 0x8F5D4C00, - 0x8F5C5B80, 0x8F5B6B00, 0x8F5A7A80, - 0x8F598A00, 0x8F589980, 0x8F57A900, - 0x8F56B880, 0x8F55C800, 0x8F54D780, - 0x8F53E700, 0x8F52F680, 0x8F520600, - 0x8F511580, 0x8F502500, 0x8F4F3480, - 0x8F4E4400, 0x8F4D5380, 0x8F4C6300, - 0x8F4B7280, 0x8F4A8200, 0x8F499180, - 0x8F48A100, 0x8F47B080, 0x8F46C000, - 0x8F45CF80, 0x8F44DF00, 0x8F43EE80, - 0x8F42FE00, 0x8F420D80, 0x8F411D00, - 0x8F402C80, 0x8F3F3C00, 0x8F3E4B80, - 0x8F3D5B00, 0x8F3C6A80, 0x8F3B7A00, - 0x8F3A8980, 0x8F399900, 0x8F38A880, - 0x8F37B800, 0x8F36C780, 0x8F35D700, - 0x8F34E680, 0x8F33F600, 0x8F330580, - 0x8F321500, 0x8F312480, 0x8F303400, - 0x8F2F4380, 0x8F2E5300, 0x8F2D6280, - 0x8F2C7200, 0x8F2B8180, 0x8F2A9100, - 0x8F29A080, 0x8F28B000, 0x8F27BF80, - 0x8F26CF00, 0x8F25DE80, 0x8F24EE00, - 0x8F23FD80, 0x8F230D00, 0x8F221C80, - 0x8F212C00, 0x8F203B80, 0x8F1F4B00, - 0x8F1E5A80, 0x8F1D6A00, 0x8F1C7980, - 0x8F1B8900, 0x8F1A9880, 0x8F19A800, - 0x8F18B780, 0x8F17C700, 0x8F16D680, - 0x8F15E600, 0x8F14F580, 0x8F140500, - 0x8F131480, 0x8F122400, 0x8F113380, - 0x8F104300, 0x8F0F5280, 0x8F0E6200, - 0x8F0D7180, 0x8F0C8100, 0x8F0B9080, - 0x8F0AA000, 0x8F09AF80, 0x8F08BF00, - 0x8F07CE80, 0x8F06DE00, 0x8F05ED80, - 0x8F04FD00, 0x8F040C80, 0x8F031C00, - 0x8F022B80, 0x8F013B00, 0x8F004A80, - 0x8EFF5A00, 0x8EFE6980, 0x8EFD7900, - 0x8EFC8880, 0x8EFB9800, 0x8EFAA780, - 0x8EF9B700, 0x8EF8C680, 0x8EF7D600, - 0x8EF6E580, 0x8EF5F500, 0x8EF50480, - 0x8EF41400, 0x8EF32380, 0x8EF23300, - 0x8EF14280, 0x8EF05200, 0x8EEF6180, - 0x8EEE7100, 0x8EED8080, 0x8EEC9000, - 0x8EEB9F80, 0x8EEAAF00, 0x8EE9BE80, - 0x8EE8CE00, 0x8EE7DD80, 0x8EE6ED00, - 0x8EE5FC80, 0x8EE50C00, 0x8EE41B80, - 0x8EE32B00, 0x8EE23A80, 0x8EE14A00, - 0x8EE05980, 0x8EDF6900, 0x8EDE7880, - 0x8EDD8800, 0x8EDC9780, 0x8EDBA700, - 0x8EDAB680, 0x8ED9C600, 0x8ED8D580, - 0x8ED7E500, 0x8ED6F480, 0x8ED60400, - 0x8ED51380, 0x8ED42300, 0x8ED33280, - 0x8ED24200, 0x8ED15180, 0x8ED06100, - 0x8ECF7080, 0x8ECE8000, 0x8ECD8F80, - 0x8ECC9F00, 0x8ECBAE80, 0x8ECABE00, - 0x8EC9CD80, 0x8EC8DD00, 0x8EC7EC80, - 0x8EC6FC00, 0x8EC60B80, 0x8EC51B00, - 0x8EC42A80, 0x8EC33A00, 0x8EC24980, - 0x8EC15900, 0x8EC06880, 0x8EBF7800, - 0x8EBE8780, 0x8EBD9700, 0x8EBCA680, - 0x8EBBB600, 0x8EBAC580, 0x8EB9D500, - 0x8EB8E480, 0x8EB7F400, 0x8EB70380, - 0x8EB61300, 0x8EB52280, 0x8EB43200, - 0x8EB34180, 0x8EB25100, 0x8EB16080, - 0x8EB07000, 0x8EAF7F80, 0x8EAE8F00, - 0x8EAD9E80, 0x8EACAE00, 0x8EABBD80, - 0x8EAACD00, 0x8EA9DC80, 0x8EA8EC00, - 0x8EA7FB80, 0x8EA70B00, 0x8EA61A80, - 0x8EA52A00, 0x8EA43980, 0x8EA34900, - 0x8EA25880, 0x8EA16800, 0x8EA07780, - 0x8E9F8700, 0x8E9E9680, 0x8E9DA600, - 0x8E9CB580, 0x8E9BC500, 0x8E9AD480, - 0x8E99E400, 0x8E98F380, 0x8E980300, - 0x8E971280, 0x8E962200, 0x8E953180, - 0x8E944100, 0x8E935080, 0x8E926000, - 0x8E916F80, 0x8E907F00, 0x8E8F8E80, - 0x8E8E9E00, 0x8E8DAD80, 0x8E8CBD00, - 0x8E8BCC80, 0x8E8ADC00, 0x8E89EB80, - 0x8E88FB00, 0x8E880A80, 0x8E871A00, - 0x8E862980, 0x8E853900, 0x8E844880, - 0x8E835800, 0x8E826780, 0x8E817700, - 0x8E808680, 0x8E7F9600, 0x8E7EA580, - 0x8E7DB500, 0x8E7CC480, 0x8E7BD400, - 0x8E7AE380, 0x8E79F300, 0x8E790280, - 0x8E781200, 0x8E772180, 0x8E763100, - 0x8E754080, 0x8E745000, 0x8E735F80, - 0x8E726F00, 0x8E717E80, 0x8E708E00, - 0x8E6F9D80, 0x8E6EAD00, 0x8E6DBC80, - 0x8E6CCC00, 0x8E6BDB80, 0x8E6AEB00, - 0x8E69FA80, 0x8E690A00, 0x8E681980, - 0x8E672900, 0x8E663880, 0x8E654800, - 0x8E645780, 0x8E636700, 0x8E627680, - 0x8E618600, 0x8E609580, 0x8E5FA500, - 0x8E5EB480, 0x8E5DC400, 0x8E5CD380, - 0x8E5BE300, 0x8E5AF280, 0x8E5A0200, - 0x8E591180, 0x8E582100, 0x8E573080, - 0x8E564000, 0x8E554F80, 0x8E545F00, - 0x8E536E80, 0x8E527E00, 0x8E518D80, - 0x8E509D00, 0x8E4FAC80, 0x8E4EBC00, - 0x8E4DCB80, 0x8E4CDB00, 0x8E4BEA80, - 0x8E4AFA00, 0x8E4A0980, 0x8E491900, - 0x8E482880, 0x8E473800, 0x8E464780, - 0x8E455700, 0x8E446680, 0x8E437600, - 0x8E428580, 0x8E419500, 0x8E40A480, - 0x8E3FB400, 0x8E3EC380, 0x8E3DD300, - 0x8E3CE280, 0x8E3BF200, 0x8E3B0180, - 0x8E3A1100, 0x8E392080, 0x8E383000, - 0x8E373F80, 0x8E364F00, 0x8E355E80, - 0x8E346E00, 0x8E337D80, 0x8E328D00, - 0x8E319C80, 0x8E30AC00, 0x8E2FBB80, - 0x8E2ECB00, 0x8E2DDA80, 0x8E2CEA00, - 0x8E2BF980, 0x8E2B0900, 0x8E2A1880, - 0x8E292800, 0x8E283780, 0x8E274700, - 0x8E265680, 0x8E256600, 0x8E247580, - 0x8E238500, 0x8E229480, 0x8E21A400, - 0x8E20B380, 0x8E1FC300, 0x8E1ED280, - 0x8E1DE200, 0x8E1CF180, 0x8E1C0100, - 0x8E1B1080, 0x8E1A2000, 0x8E192F80, - 0x8E183F00, 0x8E174E80, 0x8E165E00, - 0x8E156D80, 0x8E147D00, 0x8E138C80, - 0x8E129C00, 0x8E11AB80, 0x8E10BB00, - 0x8E0FCA80, 0x8E0EDA00, 0x8E0DE980, - 0x8E0CF900, 0x8E0C0880, 0x8E0B1800, - 0x8E0A2780, 0x8E093700, 0x8E084680, - 0x8E075600, 0x8E066580, 0x8E057500, - 0x8E048480, 0x8E039400, 0x8E02A380, - 0x8E01B300, 0x8E00C280, 0x8DFFD200, - 0x8DFEE180, 0x8DFDF100, 0x8DFD0080, - 0x8DFC1000, 0x8DFB1F80, 0x8DFA2F00, - 0x8DF93E80, 0x8DF84E00, 0x8DF75D80, - 0x8DF66D00, 0x8DF57C80, 0x8DF48C00, - 0x8DF39B80, 0x8DF2AB00, 0x8DF1BA80, - 0x8DF0CA00, 0x8DEFD980, 0x8DEEE900, - 0x8DEDF880, 0x8DED0800, 0x8DEC1780, - 0x8DEB2700, 0x8DEA3680, 0x8DE94600, - 0x8DE85580, 0x8DE76500, 0x8DE67480, - 0x8DE58400, 0x8DE49380, 0x8DE3A300, - 0x8DE2B280, 0x8DE1C200, 0x8DE0D180, - 0x8DDFE100, 0x8DDEF080, 0x8DDE0000, - 0x8DDD0F80, 0x8DDC1F00, 0x8DDB2E80, - 0x8DDA3E00, 0x8DD94D80, 0x8DD85D00, - 0x8DD76C80, 0x8DD67C00, 0x8DD58B80, - 0x8DD49B00, 0x8DD3AA80, 0x8DD2BA00, - 0x8DD1C980, 0x8DD0D900, 0x8DCFE880, - 0x8DCEF800, 0x8DCE0780, 0x8DCD1700, - 0x8DCC2680, 0x8DCB3600, 0x8DCA4580, - 0x8DC95500, 0x8DC86480, 0x8DC77400, - 0x8DC68380, 0x8DC59300, 0x8DC4A280, - 0x8DC3B200, 0x8DC2C180, 0x8DC1D100, - 0x8DC0E080, 0x8DBFF000, 0x8DBEFF80, - 0x8DBE0F00, 0x8DBD1E80, 0x8DBC2E00, - 0x8DBB3D80, 0x8DBA4D00, 0x8DB95C80, - 0x8DB86C00, 0x8DB77B80, 0x8DB68B00, - 0x8DB59A80, 0x8DB4AA00, 0x8DB3B980, - 0x8DB2C900, 0x8DB1D880, 0x8DB0E800, - 0x8DAFF780, 0x8DAF0700, 0x8DAE1680, - 0x8DAD2600, 0x8DAC3580, 0x8DAB4500, - 0x8DAA5480, 0x8DA96400, 0x8DA87380, - 0x8DA78300, 0x8DA69280, 0x8DA5A200, - 0x8DA4B180, 0x8DA3C100, 0x8DA2D080, - 0x8DA1E000, 0x8DA0EF80, 0x8D9FFF00, - 0x8D9F0E80, 0x8D9E1E00, 0x8D9D2D80, - 0x8D9C3D00, 0x8D9B4C80, 0x8D9A5C00, - 0x8D996B80, 0x8D987B00, 0x8D978A80, - 0x8D969A00, 0x8D95A980, 0x8D94B900, - 0x8D93C880, 0x8D92D800, 0x8D91E780, - 0x8D90F700, 0x8D900680, 0x8D8F1600, - 0x8D8E2580, 0x8D8D3500, 0x8D8C4480, - 0x8D8B5400, 0x8D8A6380, 0x8D897300, - 0x8D888280, 0x8D879200, 0x8D86A180, - 0x8D85B100, 0x8D84C080, 0x8D83D000, - 0x8D82DF80, 0x8D81EF00, 0x8D80FE80, - 0x8D800E00, 0x8D7F1D80, 0x8D7E2D00, - 0x8D7D3C80, 0x8D7C4C00, 0x8D7B5B80, - 0x8D7A6B00, 0x8D797A80, 0x8D788A00, - 0x8D779980, 0x8D76A900, 0x8D75B880, - 0x8D74C800, 0x8D73D780, 0x8D72E700, - 0x8D71F680, 0x8D710600, 0x8D701580, - 0x8D6F2500, 0x8D6E3480, 0x8D6D4400, - 0x8D6C5380, 0x8D6B6300, 0x8D6A7280, - 0x8D698200, 0x8D689180, 0x8D67A100, - 0x8D66B080, 0x8D65C000, 0x8D64CF80, - 0x8D63DF00, 0x8D62EE80, 0x8D61FE00, - 0x8D610D80, 0x8D601D00, 0x8D5F2C80, - 0x8D5E3C00, 0x8D5D4B80, 0x8D5C5B00, - 0x8D5B6A80, 0x8D5A7A00, 0x8D598980, - 0x8D589900, 0x8D57A880, 0x8D56B800, - 0x8D55C780, 0x8D54D700, 0x8D53E680, - 0x8D52F600, 0x8D520580, 0x8D511500, - 0x8D502480, 0x8D4F3400, 0x8D4E4380, - 0x8D4D5300, 0x8D4C6280, 0x8D4B7200, - 0x8D4A8180, 0x8D499100, 0x8D48A080, - 0x8D47B000, 0x8D46BF80, 0x8D45CF00, - 0x8D44DE80, 0x8D43EE00, 0x8D42FD80, - 0x8D420D00, 0x8D411C80, 0x8D402C00, - 0x8D3F3B80, 0x8D3E4B00, 0x8D3D5A80, - 0x8D3C6A00, 0x8D3B7980, 0x8D3A8900, - 0x8D399880, 0x8D38A800, 0x8D37B780, - 0x8D36C700, 0x8D35D680, 0x8D34E600, - 0x8D33F580, 0x8D330500, 0x8D321480, - 0x8D312400, 0x8D303380, 0x8D2F4300, - 0x8D2E5280, 0x8D2D6200, 0x8D2C7180, - 0x8D2B8100, 0x8D2A9080, 0x8D29A000, - 0x8D28AF80, 0x8D27BF00, 0x8D26CE80, - 0x8D25DE00, 0x8D24ED80, 0x8D23FD00, - 0x8D230C80, 0x8D221C00, 0x8D212B80, - 0x8D203B00, 0x8D1F4A80, 0x8D1E5A00, - 0x8D1D6980, 0x8D1C7900, 0x8D1B8880, - 0x8D1A9800, 0x8D19A780, 0x8D18B700, - 0x8D17C680, 0x8D16D600, 0x8D15E580, - 0x8D14F500, 0x8D140480, 0x8D131400, - 0x8D122380, 0x8D113300, 0x8D104280, - 0x8D0F5200, 0x8D0E6180, 0x8D0D7100, - 0x8D0C8080, 0x8D0B9000, 0x8D0A9F80, - 0x8D09AF00, 0x8D08BE80, 0x8D07CE00, - 0x8D06DD80, 0x8D05ED00, 0x8D04FC80, - 0x8D040C00, 0x8D031B80, 0x8D022B00, - 0x8D013A80, 0x8D004A00, 0x8CFF5980, - 0x8CFE6900, 0x8CFD7880, 0x8CFC8800, - 0x8CFB9780, 0x8CFAA700, 0x8CF9B680, - 0x8CF8C600, 0x8CF7D580, 0x8CF6E500, - 0x8CF5F480, 0x8CF50400, 0x8CF41380, - 0x8CF32300, 0x8CF23280, 0x8CF14200, - 0x8CF05180, 0x8CEF6100, 0x8CEE7080, - 0x8CED8000, 0x8CEC8F80, 0x8CEB9F00, - 0x8CEAAE80, 0x8CE9BE00, 0x8CE8CD80, - 0x8CE7DD00, 0x8CE6EC80, 0x8CE5FC00, - 0x8CE50B80, 0x8CE41B00, 0x8CE32A80, - 0x8CE23A00, 0x8CE14980, 0x8CE05900, - 0x8CDF6880, 0x8CDE7800, 0x8CDD8780, - 0x8CDC9700, 0x8CDBA680, 0x8CDAB600, - 0x8CD9C580, 0x8CD8D500, 0x8CD7E480, - 0x8CD6F400, 0x8CD60380, 0x8CD51300, - 0x8CD42280, 0x8CD33200, 0x8CD24180, - 0x8CD15100, 0x8CD06080, 0x8CCF7000, - 0x8CCE7F80, 0x8CCD8F00, 0x8CCC9E80, - 0x8CCBAE00, 0x8CCABD80, 0x8CC9CD00, - 0x8CC8DC80, 0x8CC7EC00, 0x8CC6FB80, - 0x8CC60B00, 0x8CC51A80, 0x8CC42A00, - 0x8CC33980, 0x8CC24900, 0x8CC15880, - 0x8CC06800, 0x8CBF7780, 0x8CBE8700, - 0x8CBD9680, 0x8CBCA600, 0x8CBBB580, - 0x8CBAC500, 0x8CB9D480, 0x8CB8E400, - 0x8CB7F380, 0x8CB70300, 0x8CB61280, - 0x8CB52200, 0x8CB43180, 0x8CB34100, - 0x8CB25080, 0x8CB16000, 0x8CB06F80, - 0x8CAF7F00, 0x8CAE8E80, 0x8CAD9E00, - 0x8CACAD80, 0x8CABBD00, 0x8CAACC80, - 0x8CA9DC00, 0x8CA8EB80, 0x8CA7FB00, - 0x8CA70A80, 0x8CA61A00, 0x8CA52980, - 0x8CA43900, 0x8CA34880, 0x8CA25800, - 0x8CA16780, 0x8CA07700, 0x8C9F8680, - 0x8C9E9600, 0x8C9DA580, 0x8C9CB500, - 0x8C9BC480, 0x8C9AD400, 0x8C99E380, - 0x8C98F300, 0x8C980280, 0x8C971200, - 0x8C962180, 0x8C953100, 0x8C944080, - 0x8C935000, 0x8C925F80, 0x8C916F00, - 0x8C907E80, 0x8C8F8E00, 0x8C8E9D80, - 0x8C8DAD00, 0x8C8CBC80, 0x8C8BCC00, - 0x8C8ADB80, 0x8C89EB00, 0x8C88FA80, - 0x8C880A00, 0x8C871980, 0x8C862900, - 0x8C853880, 0x8C844800, 0x8C835780, - 0x8C826700, 0x8C817680, 0x8C808600, - 0x8C7F9580, 0x8C7EA500, 0x8C7DB480, - 0x8C7CC400, 0x8C7BD380, 0x8C7AE300, - 0x8C79F280, 0x8C790200, 0x8C781180, - 0x8C772100, 0x8C763080, 0x8C754000, - 0x8C744F80, 0x8C735F00, 0x8C726E80, - 0x8C717E00, 0x8C708D80, 0x8C6F9D00, - 0x8C6EAC80, 0x8C6DBC00, 0x8C6CCB80, - 0x8C6BDB00, 0x8C6AEA80, 0x8C69FA00, - 0x8C690980, 0x8C681900, 0x8C672880, - 0x8C663800, 0x8C654780, 0x8C645700, - 0x8C636680, 0x8C627600, 0x8C618580, - 0x8C609500, 0x8C5FA480, 0x8C5EB400, - 0x8C5DC380, 0x8C5CD300, 0x8C5BE280, - 0x8C5AF200, 0x8C5A0180, 0x8C591100, - 0x8C582080, 0x8C573000, 0x8C563F80, - 0x8C554F00, 0x8C545E80, 0x8C536E00, - 0x8C527D80, 0x8C518D00, 0x8C509C80, - 0x8C4FAC00, 0x8C4EBB80, 0x8C4DCB00, - 0x8C4CDA80, 0x8C4BEA00, 0x8C4AF980, - 0x8C4A0900, 0x8C491880, 0x8C482800, - 0x8C473780, 0x8C464700, 0x8C455680, - 0x8C446600, 0x8C437580, 0x8C428500, - 0x8C419480, 0x8C40A400, 0x8C3FB380, - 0x8C3EC300, 0x8C3DD280, 0x8C3CE200, - 0x8C3BF180, 0x8C3B0100, 0x8C3A1080, - 0x8C392000, 0x8C382F80, 0x8C373F00, - 0x8C364E80, 0x8C355E00, 0x8C346D80, - 0x8C337D00, 0x8C328C80, 0x8C319C00, - 0x8C30AB80, 0x8C2FBB00, 0x8C2ECA80, - 0x8C2DDA00, 0x8C2CE980, 0x8C2BF900, - 0x8C2B0880, 0x8C2A1800, 0x8C292780, - 0x8C283700, 0x8C274680, 0x8C265600, - 0x8C256580, 0x8C247500, 0x8C238480, - 0x8C229400, 0x8C21A380, 0x8C20B300, - 0x8C1FC280, 0x8C1ED200, 0x8C1DE180, - 0x8C1CF100, 0x8C1C0080, 0x8C1B1000, - 0x8C1A1F80, 0x8C192F00, 0x8C183E80, - 0x8C174E00, 0x8C165D80, 0x8C156D00, - 0x8C147C80, 0x8C138C00, 0x8C129B80, - 0x8C11AB00, 0x8C10BA80, 0x8C0FCA00, - 0x8C0ED980, 0x8C0DE900, 0x8C0CF880, - 0x8C0C0800, 0x8C0B1780, 0x8C0A2700, - 0x8C093680, 0x8C084600, 0x8C075580, - 0x8C066500, 0x8C057480, 0x8C048400, - 0x8C039380, 0x8C02A300, 0x8C01B280, - 0x8C00C200, 0x8BFFD180, 0x8BFEE100, - 0x8BFDF080, 0x8BFD0000, 0x8BFC0F80, - 0x8BFB1F00, 0x8BFA2E80, 0x8BF93E00, - 0x8BF84D80, 0x8BF75D00, 0x8BF66C80, - 0x8BF57C00, 0x8BF48B80, 0x8BF39B00, - 0x8BF2AA80, 0x8BF1BA00, 0x8BF0C980, - 0x8BEFD900, 0x8BEEE880, 0x8BEDF800, - 0x8BED0780, 0x8BEC1700, 0x8BEB2680, - 0x8BEA3600, 0x8BE94580, 0x8BE85500, - 0x8BE76480, 0x8BE67400, 0x8BE58380, - 0x8BE49300, 0x8BE3A280, 0x8BE2B200, - 0x8BE1C180, 0x8BE0D100, 0x8BDFE080, - 0x8BDEF000, 0x8BDDFF80, 0x8BDD0F00, - 0x8BDC1E80, 0x8BDB2E00, 0x8BDA3D80, - 0x8BD94D00, 0x8BD85C80, 0x8BD76C00, - 0x8BD67B80, 0x8BD58B00, 0x8BD49A80, - 0x8BD3AA00, 0x8BD2B980, 0x8BD1C900, - 0x8BD0D880, 0x8BCFE800, 0x8BCEF780, - 0x8BCE0700, 0x8BCD1680, 0x8BCC2600, - 0x8BCB3580, 0x8BCA4500, 0x8BC95480, - 0x8BC86400, 0x8BC77380, 0x8BC68300, - 0x8BC59280, 0x8BC4A200, 0x8BC3B180, - 0x8BC2C100, 0x8BC1D080, 0x8BC0E000, - 0x8BBFEF80, 0x8BBEFF00, 0x8BBE0E80, - 0x8BBD1E00, 0x8BBC2D80, 0x8BBB3D00, - 0x8BBA4C80, 0x8BB95C00, 0x8BB86B80, - 0x8BB77B00, 0x8BB68A80, 0x8BB59A00, - 0x8BB4A980, 0x8BB3B900, 0x8BB2C880, - 0x8BB1D800, 0x8BB0E780, 0x8BAFF700, - 0x8BAF0680, 0x8BAE1600, 0x8BAD2580, - 0x8BAC3500, 0x8BAB4480, 0x8BAA5400, - 0x8BA96380, 0x8BA87300, 0x8BA78280, - 0x8BA69200, 0x8BA5A180, 0x8BA4B100, - 0x8BA3C080, 0x8BA2D000, 0x8BA1DF80, - 0x8BA0EF00, 0x8B9FFE80, 0x8B9F0E00, - 0x8B9E1D80, 0x8B9D2D00, 0x8B9C3C80, - 0x8B9B4C00, 0x8B9A5B80, 0x8B996B00, - 0x8B987A80, 0x8B978A00, 0x8B969980, - 0x8B95A900, 0x8B94B880, 0x8B93C800, - 0x8B92D780, 0x8B91E700, 0x8B90F680, - 0x8B900600, 0x8B8F1580, 0x8B8E2500, - 0x8B8D3480, 0x8B8C4400, 0x8B8B5380, - 0x8B8A6300, 0x8B897280, 0x8B888200, - 0x8B879180, 0x8B86A100, 0x8B85B080, - 0x8B84C000, 0x8B83CF80, 0x8B82DF00, - 0x8B81EE80, 0x8B80FE00, 0x8B800D80, - 0x8B7F1D00, 0x8B7E2C80, 0x8B7D3C00, - 0x8B7C4B80, 0x8B7B5B00, 0x8B7A6A80, - 0x8B797A00, 0x8B788980, 0x8B779900, - 0x8B76A880, 0x8B75B800, 0x8B74C780, - 0x8B73D700, 0x8B72E680, 0x8B71F600, - 0x8B710580, 0x8B701500, 0x8B6F2480, - 0x8B6E3400, 0x8B6D4380, 0x8B6C5300, - 0x8B6B6280, 0x8B6A7200, 0x8B698180, - 0x8B689100, 0x8B67A080, 0x8B66B000, - 0x8B65BF80, 0x8B64CF00, 0x8B63DE80, - 0x8B62EE00, 0x8B61FD80, 0x8B610D00, - 0x8B601C80, 0x8B5F2C00, 0x8B5E3B80, - 0x8B5D4B00, 0x8B5C5A80, 0x8B5B6A00, - 0x8B5A7980, 0x8B598900, 0x8B589880, - 0x8B57A800, 0x8B56B780, 0x8B55C700, - 0x8B54D680, 0x8B53E600, 0x8B52F580, - 0x8B520500, 0x8B511480, 0x8B502400, - 0x8B4F3380, 0x8B4E4300, 0x8B4D5280, - 0x8B4C6200, 0x8B4B7180, 0x8B4A8100, - 0x8B499080, 0x8B48A000, 0x8B47AF80, - 0x8B46BF00, 0x8B45CE80, 0x8B44DE00, - 0x8B43ED80, 0x8B42FD00, 0x8B420C80, - 0x8B411C00, 0x8B402B80, 0x8B3F3B00, - 0x8B3E4A80, 0x8B3D5A00, 0x8B3C6980, - 0x8B3B7900, 0x8B3A8880, 0x8B399800, - 0x8B38A780, 0x8B37B700, 0x8B36C680, - 0x8B35D600, 0x8B34E580, 0x8B33F500, - 0x8B330480, 0x8B321400, 0x8B312380, - 0x8B303300, 0x8B2F4280, 0x8B2E5200, - 0x8B2D6180, 0x8B2C7100, 0x8B2B8080, - 0x8B2A9000, 0x8B299F80, 0x8B28AF00, - 0x8B27BE80, 0x8B26CE00, 0x8B25DD80, - 0x8B24ED00, 0x8B23FC80, 0x8B230C00, - 0x8B221B80, 0x8B212B00, 0x8B203A80, - 0x8B1F4A00, 0x8B1E5980, 0x8B1D6900, - 0x8B1C7880, 0x8B1B8800, 0x8B1A9780, - 0x8B19A700, 0x8B18B680, 0x8B17C600, - 0x8B16D580, 0x8B15E500, 0x8B14F480, - 0x8B140400, 0x8B131380, 0x8B122300, - 0x8B113280, 0x8B104200, 0x8B0F5180, - 0x8B0E6100, 0x8B0D7080, 0x8B0C8000, - 0x8B0B8F80, 0x8B0A9F00, 0x8B09AE80, - 0x8B08BE00, 0x8B07CD80, 0x8B06DD00, - 0x8B05EC80, 0x8B04FC00, 0x8B040B80, - 0x8B031B00, 0x8B022A80, 0x8B013A00, - 0x8B004980, 0x8AFF5900, 0x8AFE6880, - 0x8AFD7800, 0x8AFC8780, 0x8AFB9700, - 0x8AFAA680, 0x8AF9B600, 0x8AF8C580, - 0x8AF7D500, 0x8AF6E480, 0x8AF5F400, - 0x8AF50380, 0x8AF41300, 0x8AF32280, - 0x8AF23200, 0x8AF14180, 0x8AF05100, - 0x8AEF6080, 0x8AEE7000, 0x8AED7F80, - 0x8AEC8F00, 0x8AEB9E80, 0x8AEAAE00, - 0x8AE9BD80, 0x8AE8CD00, 0x8AE7DC80, - 0x8AE6EC00, 0x8AE5FB80, 0x8AE50B00, - 0x8AE41A80, 0x8AE32A00, 0x8AE23980, - 0x8AE14900, 0x8AE05880, 0x8ADF6800, - 0x8ADE7780, 0x8ADD8700, 0x8ADC9680, - 0x8ADBA600, 0x8ADAB580, 0x8AD9C500, - 0x8AD8D480, 0x8AD7E400, 0x8AD6F380, - 0x8AD60300, 0x8AD51280, 0x8AD42200, - 0x8AD33180, 0x8AD24100, 0x8AD15080, - 0x8AD06000, 0x8ACF6F80, 0x8ACE7F00, - 0x8ACD8E80, 0x8ACC9E00, 0x8ACBAD80, - 0x8ACABD00, 0x8AC9CC80, 0x8AC8DC00, - 0x8AC7EB80, 0x8AC6FB00, 0x8AC60A80, - 0x8AC51A00, 0x8AC42980, 0x8AC33900, - 0x8AC24880, 0x8AC15800, 0x8AC06780, - 0x8ABF7700, 0x8ABE8680, 0x8ABD9600, - 0x8ABCA580, 0x8ABBB500, 0x8ABAC480, - 0x8AB9D400, 0x8AB8E380, 0x8AB7F300, - 0x8AB70280, 0x8AB61200, 0x8AB52180, - 0x8AB43100, 0x8AB34080, 0x8AB25000, - 0x8AB15F80, 0x8AB06F00, 0x8AAF7E80, - 0x8AAE8E00, 0x8AAD9D80, 0x8AACAD00, - 0x8AABBC80, 0x8AAACC00, 0x8AA9DB80, - 0x8AA8EB00, 0x8AA7FA80, 0x8AA70A00, - 0x8AA61980, 0x8AA52900, 0x8AA43880, - 0x8AA34800, 0x8AA25780, 0x8AA16700, - 0x8AA07680, 0x8A9F8600, 0x8A9E9580, - 0x8A9DA500, 0x8A9CB480, 0x8A9BC400, - 0x8A9AD380, 0x8A99E300, 0x8A98F280, - 0x8A980200, 0x8A971180, 0x8A962100, - 0x8A953080, 0x8A944000, 0x8A934F80, - 0x8A925F00, 0x8A916E80, 0x8A907E00, - 0x8A8F8D80, 0x8A8E9D00, 0x8A8DAC80, - 0x8A8CBC00, 0x8A8BCB80, 0x8A8ADB00, - 0x8A89EA80, 0x8A88FA00, 0x8A880980, - 0x8A871900, 0x8A862880, 0x8A853800, - 0x8A844780, 0x8A835700, 0x8A826680, - 0x8A817600, 0x8A808580, 0x8A7F9500, - 0x8A7EA480, 0x8A7DB400, 0x8A7CC380, - 0x8A7BD300, 0x8A7AE280, 0x8A79F200, - 0x8A790180, 0x8A781100, 0x8A772080, - 0x8A763000, 0x8A753F80, 0x8A744F00, - 0x8A735E80, 0x8A726E00, 0x8A717D80, - 0x8A708D00, 0x8A6F9C80, 0x8A6EAC00, - 0x8A6DBB80, 0x8A6CCB00, 0x8A6BDA80, - 0x8A6AEA00, 0x8A69F980, 0x8A690900, - 0x8A681880, 0x8A672800, 0x8A663780, - 0x8A654700, 0x8A645680, 0x8A636600, - 0x8A627580, 0x8A618500, 0x8A609480, - 0x8A5FA400, 0x8A5EB380, 0x8A5DC300, - 0x8A5CD280, 0x8A5BE200, 0x8A5AF180, - 0x8A5A0100, 0x8A591080, 0x8A582000, - 0x8A572F80, 0x8A563F00, 0x8A554E80, - 0x8A545E00, 0x8A536D80, 0x8A527D00, - 0x8A518C80, 0x8A509C00, 0x8A4FAB80, - 0x8A4EBB00, 0x8A4DCA80, 0x8A4CDA00, - 0x8A4BE980, 0x8A4AF900, 0x8A4A0880, - 0x8A491800, 0x8A482780, 0x8A473700, - 0x8A464680, 0x8A455600, 0x8A446580, - 0x8A437500, 0x8A428480, 0x8A419400, - 0x8A40A380, 0x8A3FB300, 0x8A3EC280, - 0x8A3DD200, 0x8A3CE180, 0x8A3BF100, - 0x8A3B0080, 0x8A3A1000, 0x8A391F80, - 0x8A382F00, 0x8A373E80, 0x8A364E00, - 0x8A355D80, 0x8A346D00, 0x8A337C80, - 0x8A328C00, 0x8A319B80, 0x8A30AB00, - 0x8A2FBA80, 0x8A2ECA00, 0x8A2DD980, - 0x8A2CE900, 0x8A2BF880, 0x8A2B0800, - 0x8A2A1780, 0x8A292700, 0x8A283680, - 0x8A274600, 0x8A265580, 0x8A256500, - 0x8A247480, 0x8A238400, 0x8A229380, - 0x8A21A300, 0x8A20B280, 0x8A1FC200, - 0x8A1ED180, 0x8A1DE100, 0x8A1CF080, - 0x8A1C0000, 0x8A1B1C80, 0x8A1A3900, - 0x8A195580, 0x8A187200, 0x8A178E80, - 0x8A16AB00, 0x8A15C780, 0x8A14E400, - 0x8A140080, 0x8A131D00, 0x8A123980, - 0x8A115600, 0x8A107280, 0x8A0F8F00, - 0x8A0EAB80, 0x8A0DC800, 0x8A0CE480, - 0x8A0C0100, 0x8A0B1D80, 0x8A0A3A00, - 0x8A095680, 0x8A087300, 0x8A078F80, - 0x8A06AC00, 0x8A05C880, 0x8A04E500, - 0x8A040180, 0x8A031E00, 0x8A023A80, - 0x8A015700, 0x8A007380, 0x89FF9000, - 0x89FEAC80, 0x89FDC900, 0x89FCE580, - 0x89FC0200, 0x89FB1E80, 0x89FA3B00, - 0x89F95780, 0x89F87400, 0x89F79080, - 0x89F6AD00, 0x89F5C980, 0x89F4E600, - 0x89F40280, 0x89F31F00, 0x89F23B80, - 0x89F15800, 0x89F07480, 0x89EF9100, - 0x89EEAD80, 0x89EDCA00, 0x89ECE680, - 0x89EC0300, 0x89EB1F80, 0x89EA3C00, - 0x89E95880, 0x89E87500, 0x89E79180, - 0x89E6AE00, 0x89E5CA80, 0x89E4E700, - 0x89E40380, 0x89E32000, 0x89E23C80, - 0x89E15900, 0x89E07580, 0x89DF9200, - 0x89DEAE80, 0x89DDCB00, 0x89DCE780, - 0x89DC0400, 0x89DB2080, 0x89DA3D00, - 0x89D95980, 0x89D87600, 0x89D79280, - 0x89D6AF00, 0x89D5CB80, 0x89D4E800, - 0x89D40480, 0x89D32100, 0x89D23D80, - 0x89D15A00, 0x89D07680, 0x89CF9300, - 0x89CEAF80, 0x89CDCC00, 0x89CCE880, - 0x89CC0500, 0x89CB2180, 0x89CA3E00, - 0x89C95A80, 0x89C87700, 0x89C79380, - 0x89C6B000, 0x89C5CC80, 0x89C4E900, - 0x89C40580, 0x89C32200, 0x89C23E80, - 0x89C15B00, 0x89C07780, 0x89BF9400, - 0x89BEB080, 0x89BDCD00, 0x89BCE980, - 0x89BC0600, 0x89BB2280, 0x89BA3F00, - 0x89B95B80, 0x89B87800, 0x89B79480, - 0x89B6B100, 0x89B5CD80, 0x89B4EA00, - 0x89B40680, 0x89B32300, 0x89B23F80, - 0x89B15C00, 0x89B07880, 0x89AF9500, - 0x89AEB180, 0x89ADCE00, 0x89ACEA80, - 0x89AC0700, 0x89AB2380, 0x89AA4000, - 0x89A95C80, 0x89A87900, 0x89A79580, - 0x89A6B200, 0x89A5CE80, 0x89A4EB00, - 0x89A40780, 0x89A32400, 0x89A24080, - 0x89A15D00, 0x89A07980, 0x899F9600, - 0x899EB280, 0x899DCF00, 0x899CEB80, - 0x899C0800, 0x899B2480, 0x899A4100, - 0x89995D80, 0x89987A00, 0x89979680, - 0x8996B300, 0x8995CF80, 0x8994EC00, - 0x89940880, 0x89932500, 0x89924180, - 0x89915E00, 0x89907A80, 0x898F9700, - 0x898EB380, 0x898DD000, 0x898CEC80, - 0x898C0900, 0x898B2580, 0x898A4200, - 0x89895E80, 0x89887B00, 0x89879780, - 0x8986B400, 0x8985D080, 0x8984ED00, - 0x89840980, 0x89832600, 0x89824280, - 0x89815F00, 0x89807B80, 0x897F9800, - 0x897EB480, 0x897DD100, 0x897CED80, - 0x897C0A00, 0x897B2680, 0x897A4300, - 0x89795F80, 0x89787C00, 0x89779880, - 0x8976B500, 0x8975D180, 0x8974EE00, - 0x89740A80, 0x89732700, 0x89724380, - 0x89716000, 0x89707C80, 0x896F9900, - 0x896EB580, 0x896DD200, 0x896CEE80, - 0x896C0B00, 0x896B2780, 0x896A4400, - 0x89696080, 0x89687D00, 0x89679980, - 0x8966B600, 0x8965D280, 0x8964EF00, - 0x89640B80, 0x89632800, 0x89624480, - 0x89616100, 0x89607D80, 0x895F9A00, - 0x895EB680, 0x895DD300, 0x895CEF80, - 0x895C0C00, 0x895B2880, 0x895A4500, - 0x89596180, 0x89587E00, 0x89579A80, - 0x8956B700, 0x8955D380, 0x8954F000, - 0x89540C80, 0x89532900, 0x89524580, - 0x89516200, 0x89507E80, 0x894F9B00, - 0x894EB780, 0x894DD400, 0x894CF080, - 0x894C0D00, 0x894B2980, 0x894A4600, - 0x89496280, 0x89487F00, 0x89479B80, - 0x8946B800, 0x8945D480, 0x8944F100, - 0x89440D80, 0x89432A00, 0x89424680, - 0x89416300, 0x89407F80, 0x893F9C00, - 0x893EB880, 0x893DD500, 0x893CF180, - 0x893C0E00, 0x893B2A80, 0x893A4700, - 0x89396380, 0x89388000, 0x89379C80, - 0x8936B900, 0x8935D580, 0x8934F200, - 0x89340E80, 0x89332B00, 0x89324780, - 0x89316400, 0x89308080, 0x892F9D00, - 0x892EB980, 0x892DD600, 0x892CF280, - 0x892C0F00, 0x892B2B80, 0x892A4800, - 0x89296480, 0x89288100, 0x89279D80, - 0x8926BA00, 0x8925D680, 0x8924F300, - 0x89240F80, 0x89232C00, 0x89224880, - 0x89216500, 0x89208180, 0x891F9E00, - 0x891EBA80, 0x891DD700, 0x891CF380, - 0x891C1000, 0x891B2C80, 0x891A4900, - 0x89196580, 0x89188200, 0x89179E80, - 0x8916BB00, 0x8915D780, 0x8914F400, - 0x89141080, 0x89132D00, 0x89124980, - 0x89116600, 0x89108280, 0x890F9F00, - 0x890EBB80, 0x890DD800, 0x890CF480, - 0x890C1100, 0x890B2D80, 0x890A4A00, - 0x89096680, 0x89088300, 0x89079F80, - 0x8906BC00, 0x8905D880, 0x8904F500, - 0x89041180, 0x89032E00, 0x89024A80, - 0x89016700, 0x89008380, 0x88FFA000, - 0x88FEBC80, 0x88FDD900, 0x88FCF580, - 0x88FC1200, 0x88FB2E80, 0x88FA4B00, - 0x88F96780, 0x88F88400, 0x88F7A080, - 0x88F6BD00, 0x88F5D980, 0x88F4F600, - 0x88F41280, 0x88F32F00, 0x88F24B80, - 0x88F16800, 0x88F08480, 0x88EFA100, - 0x88EEBD80, 0x88EDDA00, 0x88ECF680, - 0x88EC1300, 0x88EB2F80, 0x88EA4C00, - 0x88E96880, 0x88E88500, 0x88E7A180, - 0x88E6BE00, 0x88E5DA80, 0x88E4F700, - 0x88E41380, 0x88E33000, 0x88E24C80, - 0x88E16900, 0x88E08580, 0x88DFA200, - 0x88DEBE80, 0x88DDDB00, 0x88DCF780, - 0x88DC1400, 0x88DB3080, 0x88DA4D00, - 0x88D96980, 0x88D88600, 0x88D7A280, - 0x88D6BF00, 0x88D5DB80, 0x88D4F800, - 0x88D41480, 0x88D33100, 0x88D24D80, - 0x88D16A00, 0x88D08680, 0x88CFA300, - 0x88CEBF80, 0x88CDDC00, 0x88CCF880, - 0x88CC1500, 0x88CB3180, 0x88CA4E00, - 0x88C96A80, 0x88C88700, 0x88C7A380, - 0x88C6C000, 0x88C5DC80, 0x88C4F900, - 0x88C41580, 0x88C33200, 0x88C24E80, - 0x88C16B00, 0x88C08780, 0x88BFA400, - 0x88BEC080, 0x88BDDD00, 0x88BCF980, - 0x88BC1600, 0x88BB3280, 0x88BA4F00, - 0x88B96B80, 0x88B88800, 0x88B7A480, - 0x88B6C100, 0x88B5DD80, 0x88B4FA00, - 0x88B41680, 0x88B33300, 0x88B24F80, - 0x88B16C00, 0x88B08880, 0x88AFA500, - 0x88AEC180, 0x88ADDE00, 0x88ACFA80, - 0x88AC1700, 0x88AB3380, 0x88AA5000, - 0x88A96C80, 0x88A88900, 0x88A7A580, - 0x88A6C200, 0x88A5DE80, 0x88A4FB00, - 0x88A41780, 0x88A33400, 0x88A25080, - 0x88A16D00, 0x88A08980, 0x889FA600, - 0x889EC280, 0x889DDF00, 0x889CFB80, - 0x889C1800, 0x889B3480, 0x889A5100, - 0x88996D80, 0x88988A00, 0x8897A680, - 0x8896C300, 0x8895DF80, 0x8894FC00, - 0x88941880, 0x88933500, 0x88925180, - 0x88916E00, 0x88908A80, 0x888FA700, - 0x888EC380, 0x888DE000, 0x888CFC80, - 0x888C1900, 0x888B3580, 0x888A5200, - 0x88896E80, 0x88888B00, 0x8887A780, - 0x8886C400, 0x8885E080, 0x8884FD00, - 0x88841980, 0x88833600, 0x88825280, - 0x88816F00, 0x88808B80, 0x887FA800, - 0x887EC480, 0x887DE100, 0x887CFD80, - 0x887C1A00, 0x887B3680, 0x887A5300, - 0x88796F80, 0x88788C00, 0x8877A880, - 0x8876C500, 0x8875E180, 0x8874FE00, - 0x88741A80, 0x88733700, 0x88725380, - 0x88717000, 0x88708C80, 0x886FA900, - 0x886EC580, 0x886DE200, 0x886CFE80, - 0x886C1B00, 0x886B3780, 0x886A5400, - 0x88697080, 0x88688D00, 0x8867A980, - 0x8866C600, 0x8865E280, 0x8864FF00, - 0x88641B80, 0x88633800, 0x88625480, - 0x88617100, 0x88608D80, 0x885FAA00, - 0x885EC680, 0x885DE300, 0x885CFF80, - 0x885C1C00, 0x885B3880, 0x885A5500, - 0x88597180, 0x88588E00, 0x8857AA80, - 0x8856C700, 0x8855E380, 0x88550000, - 0x88541C80, 0x88533900, 0x88525580, - 0x88517200, 0x88508E80, 0x884FAB00, - 0x884EC780, 0x884DE400, 0x884D0080, - 0x884C1D00, 0x884B3980, 0x884A5600, - 0x88497280, 0x88488F00, 0x8847AB80, - 0x8846C800, 0x8845E480, 0x88450100, - 0x88441D80, 0x88433A00, 0x88425680, - 0x88417300, 0x88408F80, 0x883FAC00, - 0x883EC880, 0x883DE500, 0x883D0180, - 0x883C1E00, 0x883B3A80, 0x883A5700, - 0x88397380, 0x88389000, 0x8837AC80, - 0x8836C900, 0x8835E580, 0x88350200, - 0x88341E80, 0x88333B00, 0x88325780, - 0x88317400, 0x88309080, 0x882FAD00, - 0x882EC980, 0x882DE600, 0x882D0280, - 0x882C1F00, 0x882B3B80, 0x882A5800, - 0x88297480, 0x88289100, 0x8827AD80, - 0x8826CA00, 0x8825E680, 0x88250300, - 0x88241F80, 0x88233C00, 0x88225880, - 0x88217500, 0x88209180, 0x881FAE00, - 0x881ECA80, 0x881DE700, 0x881D0380, - 0x881C2000, 0x881B3C80, 0x881A5900, - 0x88197580, 0x88189200, 0x8817AE80, - 0x8816CB00, 0x8815E780, 0x88150400, - 0x88142080, 0x88133D00, 0x88125980, - 0x88117600, 0x88109280, 0x880FAF00, - 0x880ECB80, 0x880DE800, 0x880D0480, - 0x880C2100, 0x880B3D80, 0x880A5A00, - 0x88097680, 0x88089300, 0x8807AF80, - 0x8806CC00, 0x8805E880, 0x88050500, - 0x88042180, 0x88033E00, 0x88025A80, - 0x88017700, 0x88009380, 0x87FFB000, - 0x87FECC80, 0x87FDE900, 0x87FD0580, - 0x87FC2200, 0x87FB3E80, 0x87FA5B00, - 0x87F97780, 0x87F89400, 0x87F7B080, - 0x87F6CD00, 0x87F5E980, 0x87F50600, - 0x87F42280, 0x87F33F00, 0x87F25B80, - 0x87F17800, 0x87F09480, 0x87EFB100, - 0x87EECD80, 0x87EDEA00, 0x87ED0680, - 0x87EC2300, 0x87EB3F80, 0x87EA5C00, - 0x87E97880, 0x87E89500, 0x87E7B180, - 0x87E6CE00, 0x87E5EA80, 0x87E50700, - 0x87E42380, 0x87E34000, 0x87E25C80, - 0x87E17900, 0x87E09580, 0x87DFB200, - 0x87DECE80, 0x87DDEB00, 0x87DD0780, - 0x87DC2400, 0x87DB4080, 0x87DA5D00, - 0x87D97980, 0x87D89600, 0x87D7B280, - 0x87D6CF00, 0x87D5EB80, 0x87D50800, - 0x87D42480, 0x87D34100, 0x87D25D80, - 0x87D17A00, 0x87D09680, 0x87CFB300, - 0x87CECF80, 0x87CDEC00, 0x87CD0880, - 0x87CC2500, 0x87CB4180, 0x87CA5E00, - 0x87C97A80, 0x87C89700, 0x87C7B380, - 0x87C6D000, 0x87C5EC80, 0x87C50900, - 0x87C42580, 0x87C34200, 0x87C25E80, - 0x87C17B00, 0x87C09780, 0x87BFB400, - 0x87BED080, 0x87BDED00, 0x87BD0980, - 0x87BC2600, 0x87BB4280, 0x87BA5F00, - 0x87B97B80, 0x87B89800, 0x87B7B480, - 0x87B6D100, 0x87B5ED80, 0x87B50A00, - 0x87B42680, 0x87B34300, 0x87B25F80, - 0x87B17C00, 0x87B09880, 0x87AFB500, - 0x87AED180, 0x87ADEE00, 0x87AD0A80, - 0x87AC2700, 0x87AB4380, 0x87AA6000, - 0x87A97C80, 0x87A89900, 0x87A7B580, - 0x87A6D200, 0x87A5EE80, 0x87A50B00, - 0x87A42780, 0x87A34400, 0x87A26080, - 0x87A17D00, 0x87A09980, 0x879FB600, - 0x879ED280, 0x879DEF00, 0x879D0B80, - 0x879C2800, 0x879B4480, 0x879A6100, - 0x87997D80, 0x87989A00, 0x8797B680, - 0x8796D300, 0x8795EF80, 0x87950C00, - 0x87942880, 0x87934500, 0x87926180, - 0x87917E00, 0x87909A80, 0x878FB700, - 0x878ED380, 0x878DF000, 0x878D0C80, - 0x878C2900, 0x878B4580, 0x878A6200, - 0x87897E80, 0x87889B00, 0x8787B780, - 0x8786D400, 0x8785F080, 0x87850D00, - 0x87842980, 0x87834600, 0x87826280, - 0x87817F00, 0x87809B80, 0x877FB800, - 0x877ED480, 0x877DF100, 0x877D0D80, - 0x877C2A00, 0x877B4680, 0x877A6300, - 0x87797F80, 0x87789C00, 0x8777B880, - 0x8776D500, 0x8775F180, 0x87750E00, - 0x87742A80, 0x87734700, 0x87726380, - 0x87718000, 0x87709C80, 0x876FB900, - 0x876ED580, 0x876DF200, 0x876D0E80, - 0x876C2B00, 0x876B4780, 0x876A6400, - 0x87698080, 0x87689D00, 0x8767B980, - 0x8766D600, 0x8765F280, 0x87650F00, - 0x87642B80, 0x87634800, 0x87626480, - 0x87618100, 0x87609D80, 0x875FBA00, - 0x875ED680, 0x875DF300, 0x875D0F80, - 0x875C2C00, 0x875B4880, 0x875A6500, - 0x87598180, 0x87589E00, 0x8757BA80, - 0x8756D700, 0x8755F380, 0x87551000, - 0x87542C80, 0x87534900, 0x87526580, - 0x87518200, 0x87509E80, 0x874FBB00, - 0x874ED780, 0x874DF400, 0x874D1080, - 0x874C2D00, 0x874B4980, 0x874A6600, - 0x87498280, 0x87489F00, 0x8747BB80, - 0x8746D800, 0x8745F480, 0x87451100, - 0x87442D80, 0x87434A00, 0x87426680, - 0x87418300, 0x87409F80, 0x873FBC00, - 0x873ED880, 0x873DF500, 0x873D1180, - 0x873C2E00, 0x873B4A80, 0x873A6700, - 0x87398380, 0x8738A000, 0x8737BC80, - 0x8736D900, 0x8735F580, 0x87351200, - 0x87342E80, 0x87334B00, 0x87326780, - 0x87318400, 0x8730A080, 0x872FBD00, - 0x872ED980, 0x872DF600, 0x872D1280, - 0x872C2F00, 0x872B4B80, 0x872A6800, - 0x87298480, 0x8728A100, 0x8727BD80, - 0x8726DA00, 0x8725F680, 0x87251300, - 0x87242F80, 0x87234C00, 0x87226880, - 0x87218500, 0x8720A180, 0x871FBE00, - 0x871EDA80, 0x871DF700, 0x871D1380, - 0x871C3000, 0x871B4C80, 0x871A6900, - 0x87198580, 0x8718A200, 0x8717BE80, - 0x8716DB00, 0x8715F780, 0x87151400, - 0x87143080, 0x87134D00, 0x87126980, - 0x87118600, 0x8710A280, 0x870FBF00, - 0x870EDB80, 0x870DF800, 0x870D1480, - 0x870C3100, 0x870B4D80, 0x870A6A00, - 0x87098680, 0x8708A300, 0x8707BF80, - 0x8706DC00, 0x8705F880, 0x87051500, - 0x87043180, 0x87034E00, 0x87026A80, - 0x87018700, 0x8700A380, 0x86FFC000, - 0x86FEDC80, 0x86FDF900, 0x86FD1580, - 0x86FC3200, 0x86FB4E80, 0x86FA6B00, - 0x86F98780, 0x86F8A400, 0x86F7C080, - 0x86F6DD00, 0x86F5F980, 0x86F51600, - 0x86F43280, 0x86F34F00, 0x86F26B80, - 0x86F18800, 0x86F0A480, 0x86EFC100, - 0x86EEDD80, 0x86EDFA00, 0x86ED1680, - 0x86EC3300, 0x86EB4F80, 0x86EA6C00, - 0x86E98880, 0x86E8A500, 0x86E7C180, - 0x86E6DE00, 0x86E5FA80, 0x86E51700, - 0x86E43380, 0x86E35000, 0x86E26C80, - 0x86E18900, 0x86E0A580, 0x86DFC200, - 0x86DEDE80, 0x86DDFB00, 0x86DD1780, - 0x86DC3400, 0x86DB5080, 0x86DA6D00, - 0x86D98980, 0x86D8A600, 0x86D7C280, - 0x86D6DF00, 0x86D5FB80, 0x86D51800, - 0x86D43480, 0x86D35100, 0x86D26D80, - 0x86D18A00, 0x86D0A680, 0x86CFC300, - 0x86CEDF80, 0x86CDFC00, 0x86CD1880, - 0x86CC3500, 0x86CB5180, 0x86CA6E00, - 0x86C98A80, 0x86C8A700, 0x86C7C380, - 0x86C6E000, 0x86C5FC80, 0x86C51900, - 0x86C43580, 0x86C35200, 0x86C26E80, - 0x86C18B00, 0x86C0A780, 0x86BFC400, - 0x86BEE080, 0x86BDFD00, 0x86BD1980, - 0x86BC3600, 0x86BB5280, 0x86BA6F00, - 0x86B98B80, 0x86B8A800, 0x86B7C480, - 0x86B6E100, 0x86B5FD80, 0x86B51A00, - 0x86B43680, 0x86B35300, 0x86B26F80, - 0x86B18C00, 0x86B0A880, 0x86AFC500, - 0x86AEE180, 0x86ADFE00, 0x86AD1A80, - 0x86AC3700, 0x86AB5380, 0x86AA7000, - 0x86A98C80, 0x86A8A900, 0x86A7C580, - 0x86A6E200, 0x86A5FE80, 0x86A51B00, - 0x86A43780, 0x86A35400, 0x86A27080, - 0x86A18D00, 0x86A0A980, 0x869FC600, - 0x869EE280, 0x869DFF00, 0x869D1B80, - 0x869C3800, 0x869B5480, 0x869A7100, - 0x86998D80, 0x8698AA00, 0x8697C680, - 0x8696E300, 0x8695FF80, 0x86951C00, - 0x86943880, 0x86935500, 0x86927180, - 0x86918E00, 0x8690AA80, 0x868FC700, - 0x868EE380, 0x868E0000, 0x868D1C80, - 0x868C3900, 0x868B5580, 0x868A7200, - 0x86898E80, 0x8688AB00, 0x8687C780, - 0x8686E400, 0x86860080, 0x86851D00, - 0x86843980, 0x86835600, 0x86827280, - 0x86818F00, 0x8680AB80, 0x867FC800, - 0x867EE480, 0x867E0100, 0x867D1D80, - 0x867C3A00, 0x867B5680, 0x867A7300, - 0x86798F80, 0x8678AC00, 0x8677C880, - 0x8676E500, 0x86760180, 0x86751E00, - 0x86743A80, 0x86735700, 0x86727380, - 0x86719000, 0x8670AC80, 0x866FC900, - 0x866EE580, 0x866E0200, 0x866D1E80, - 0x866C3B00, 0x866B5780, 0x866A7400, - 0x86699080, 0x8668AD00, 0x8667C980, - 0x8666E600, 0x86660280, 0x86651F00, - 0x86643B80, 0x86635800, 0x86627480, - 0x86619100, 0x8660AD80, 0x865FCA00, - 0x865EE680, 0x865E0300, 0x865D1F80, - 0x865C3C00, 0x865B5880, 0x865A7500, - 0x86599180, 0x8658AE00, 0x8657CA80, - 0x8656E700, 0x86560380, 0x86552000, - 0x86543C80, 0x86535900, 0x86527580, - 0x86519200, 0x8650AE80, 0x864FCB00, - 0x864EE780, 0x864E0400, 0x864D2080, - 0x864C3D00, 0x864B5980, 0x864A7600, - 0x86499280, 0x8648AF00, 0x8647CB80, - 0x8646E800, 0x86460480, 0x86452100, - 0x86443D80, 0x86435A00, 0x86427680, - 0x86419300, 0x8640AF80, 0x863FCC00, - 0x863EE880, 0x863E0500, 0x863D2180, - 0x863C3E00, 0x863B5A80, 0x863A7700, - 0x86399380, 0x8638B000, 0x8637CC80, - 0x8636E900, 0x86360580, 0x86352200, - 0x86343E80, 0x86335B00, 0x86327780, - 0x86319400, 0x8630B080, 0x862FCD00, - 0x862EE980, 0x862E0600, 0x862D2280, - 0x862C3F00, 0x862B5B80, 0x862A7800, - 0x86299480, 0x8628B100, 0x8627CD80, - 0x8626EA00, 0x86260680, 0x86252300, - 0x86243F80, 0x86235C00, 0x86227880, - 0x86219500, 0x8620B180, 0x861FCE00, - 0x861EEA80, 0x861E0700, 0x861D2380, - 0x861C4000, 0x861B5C80, 0x861A7900, - 0x86199580, 0x8618B200, 0x8617CE80, - 0x8616EB00, 0x86160780, 0x86152400, - 0x86144080, 0x86135D00, 0x86127980, - 0x86119600, 0x8610B280, 0x860FCF00, - 0x860EEB80, 0x860E0800, 0x860D2480, - 0x860C4100, 0x860B5D80, 0x860A7A00, - 0x86099680, 0x8608B300, 0x8607CF80, - 0x8606EC00, 0x86060880, 0x86052500, - 0x86044180, 0x86035E00, 0x86027A80, - 0x86019700, 0x8600B380, 0x85FFD000, - 0x85FEEC80, 0x85FE0900, 0x85FD2580, - 0x85FC4200, 0x85FB5E80, 0x85FA7B00, - 0x85F99780, 0x85F8B400, 0x85F7D080, - 0x85F6ED00, 0x85F60980, 0x85F52600, - 0x85F44280, 0x85F35F00, 0x85F27B80, - 0x85F19800, 0x85F0B480, 0x85EFD100, - 0x85EEED80, 0x85EE0A00, 0x85ED2680, - 0x85EC4300, 0x85EB5F80, 0x85EA7C00, - 0x85E99880, 0x85E8B500, 0x85E7D180, - 0x85E6EE00, 0x85E60A80, 0x85E52700, - 0x85E44380, 0x85E36000, 0x85E27C80, - 0x85E19900, 0x85E0B580, 0x85DFD200, - 0x85DEEE80, 0x85DE0B00, 0x85DD2780, - 0x85DC4400, 0x85DB6080, 0x85DA7D00, - 0x85D99980, 0x85D8B600, 0x85D7D280, - 0x85D6EF00, 0x85D60B80, 0x85D52800, - 0x85D44480, 0x85D36100, 0x85D27D80, - 0x85D19A00, 0x85D0B680, 0x85CFD300, - 0x85CEEF80, 0x85CE0C00, 0x85CD2880, - 0x85CC4500, 0x85CB6180, 0x85CA7E00, - 0x85C99A80, 0x85C8B700, 0x85C7D380, - 0x85C6F000, 0x85C60C80, 0x85C52900, - 0x85C44580, 0x85C36200, 0x85C27E80, - 0x85C19B00, 0x85C0B780, 0x85BFD400, - 0x85BEF080, 0x85BE0D00, 0x85BD2980, - 0x85BC4600, 0x85BB6280, 0x85BA7F00, - 0x85B99B80, 0x85B8B800, 0x85B7D480, - 0x85B6F100, 0x85B60D80, 0x85B52A00, - 0x85B44680, 0x85B36300, 0x85B27F80, - 0x85B19C00, 0x85B0B880, 0x85AFD500, - 0x85AEF180, 0x85AE0E00, 0x85AD2A80, - 0x85AC4700, 0x85AB6380, 0x85AA8000, - 0x85A99C80, 0x85A8B900, 0x85A7D580, - 0x85A6F200, 0x85A60E80, 0x85A52B00, - 0x85A44780, 0x85A36400, 0x85A28080, - 0x85A19D00, 0x85A0B980, 0x859FD600, - 0x859EF280, 0x859E0F00, 0x859D2B80, - 0x859C4800, 0x859B6480, 0x859A8100, - 0x85999D80, 0x8598BA00, 0x8597D680, - 0x8596F300, 0x85960F80, 0x85952C00, - 0x85944880, 0x85936500, 0x85928180, - 0x85919E00, 0x8590BA80, 0x858FD700, - 0x858EF380, 0x858E1000, 0x858D2C80, - 0x858C4900, 0x858B6580, 0x858A8200, - 0x85899E80, 0x8588BB00, 0x8587D780, - 0x8586F400, 0x85861080, 0x85852D00, - 0x85844980, 0x85836600, 0x85828280, - 0x85819F00, 0x8580BB80, 0x857FD800, - 0x857EF480, 0x857E1100, 0x857D2D80, - 0x857C4A00, 0x857B6680, 0x857A8300, - 0x85799F80, 0x8578BC00, 0x8577D880, - 0x8576F500, 0x85761180, 0x85752E00, - 0x85744A80, 0x85736700, 0x85728380, - 0x8571A000, 0x8570BC80, 0x856FD900, - 0x856EF580, 0x856E1200, 0x856D2E80, - 0x856C4B00, 0x856B6780, 0x856A8400, - 0x8569A080, 0x8568BD00, 0x8567D980, - 0x8566F600, 0x85661280, 0x85652F00, - 0x85644B80, 0x85636800, 0x85628480, - 0x8561A100, 0x8560BD80, 0x855FDA00, - 0x855EF680, 0x855E1300, 0x855D2F80, - 0x855C4C00, 0x855B6880, 0x855A8500, - 0x8559A180, 0x8558BE00, 0x8557DA80, - 0x8556F700, 0x85561380, 0x85553000, - 0x85544C80, 0x85536900, 0x85528580, - 0x8551A200, 0x8550BE80, 0x854FDB00, - 0x854EF780, 0x854E1400, 0x854D3080, - 0x854C4D00, 0x854B6980, 0x854A8600, - 0x8549A280, 0x8548BF00, 0x8547DB80, - 0x8546F800, 0x85461480, 0x85453100, - 0x85444D80, 0x85436A00, 0x85428680, - 0x8541A300, 0x8540BF80, 0x853FDC00, - 0x853EF880, 0x853E1500, 0x853D3180, - 0x853C4E00, 0x853B6A80, 0x853A8700, - 0x8539A380, 0x8538C000, 0x8537DC80, - 0x8536F900, 0x85361580, 0x85353200, - 0x85344E80, 0x85336B00, 0x85328780, - 0x8531A400, 0x8530C080, 0x852FDD00, - 0x852EF980, 0x852E1600, 0x852D3280, - 0x852C4F00, 0x852B6B80, 0x852A8800, - 0x8529A480, 0x8528C100, 0x8527DD80, - 0x8526FA00, 0x85261680, 0x85253300, - 0x85244F80, 0x85236C00, 0x85228880, - 0x8521A500, 0x8520C180, 0x851FDE00, - 0x851EFA80, 0x851E1700, 0x851D3380, - 0x851C5000, 0x851B6C80, 0x851A8900, - 0x8519A580, 0x8518C200, 0x8517DE80, - 0x8516FB00, 0x85161780, 0x85153400, - 0x85145080, 0x85136D00, 0x85128980, - 0x8511A600, 0x8510C280, 0x850FDF00, - 0x850EFB80, 0x850E1800, 0x850D3480, - 0x850C5100, 0x850B6D80, 0x850A8A00, - 0x8509A680, 0x8508C300, 0x8507DF80, - 0x8506FC00, 0x85061880, 0x85053500, - 0x85045180, 0x85036E00, 0x85028A80, - 0x8501A700, 0x8500C380, 0x84FFE000, - 0x84FEFC80, 0x84FE1900, 0x84FD3580, - 0x84FC5200, 0x84FB6E80, 0x84FA8B00, - 0x84F9A780, 0x84F8C400, 0x84F7E080, - 0x84F6FD00, 0x84F61980, 0x84F53600, - 0x84F45280, 0x84F36F00, 0x84F28B80, - 0x84F1A800, 0x84F0C480, 0x84EFE100, - 0x84EEFD80, 0x84EE1A00, 0x84ED3680, - 0x84EC5300, 0x84EB6F80, 0x84EA8C00, - 0x84E9A880, 0x84E8C500, 0x84E7E180, - 0x84E6FE00, 0x84E61A80, 0x84E53700, - 0x84E45380, 0x84E37000, 0x84E28C80, - 0x84E1A900, 0x84E0C580, 0x84DFE200, - 0x84DEFE80, 0x84DE1B00, 0x84DD3780, - 0x84DC5400, 0x84DB7080, 0x84DA8D00, - 0x84D9A980, 0x84D8C600, 0x84D7E280, - 0x84D6FF00, 0x84D61B80, 0x84D53800, - 0x84D45480, 0x84D37100, 0x84D28D80, - 0x84D1AA00, 0x84D0C680, 0x84CFE300, - 0x84CEFF80, 0x84CE1C00, 0x84CD3880, - 0x84CC5500, 0x84CB7180, 0x84CA8E00, - 0x84C9AA80, 0x84C8C700, 0x84C7E380, - 0x84C70000, 0x84C61C80, 0x84C53900, - 0x84C45580, 0x84C37200, 0x84C28E80, - 0x84C1AB00, 0x84C0C780, 0x84BFE400, - 0x84BF0080, 0x84BE1D00, 0x84BD3980, - 0x84BC5600, 0x84BB7280, 0x84BA8F00, - 0x84B9AB80, 0x84B8C800, 0x84B7E480, - 0x84B70100, 0x84B61D80, 0x84B53A00, - 0x84B45680, 0x84B37300, 0x84B28F80, - 0x84B1AC00, 0x84B0C880, 0x84AFE500, - 0x84AF0180, 0x84AE1E00, 0x84AD3A80, - 0x84AC5700, 0x84AB7380, 0x84AA9000, - 0x84A9AC80, 0x84A8C900, 0x84A7E580, - 0x84A70200, 0x84A61E80, 0x84A53B00, - 0x84A45780, 0x84A37400, 0x84A29080, - 0x84A1AD00, 0x84A0C980, 0x849FE600, - 0x849F0280, 0x849E1F00, 0x849D3B80, - 0x849C5800, 0x849B7480, 0x849A9100, - 0x8499AD80, 0x8498CA00, 0x8497E680, - 0x84970300, 0x84961F80, 0x84953C00, - 0x84945880, 0x84937500, 0x84929180, - 0x8491AE00, 0x8490CA80, 0x848FE700, - 0x848F0380, 0x848E2000, 0x848D3C80, - 0x848C5900, 0x848B7580, 0x848A9200, - 0x8489AE80, 0x8488CB00, 0x8487E780, - 0x84870400, 0x84862080, 0x84853D00, - 0x84845980, 0x84837600, 0x84829280, - 0x8481AF00, 0x8480CB80, 0x847FE800, - 0x847F0480, 0x847E2100, 0x847D3D80, - 0x847C5A00, 0x847B7680, 0x847A9300, - 0x8479AF80, 0x8478CC00, 0x8477E880, - 0x84770500, 0x84762180, 0x84753E00, - 0x84745A80, 0x84737700, 0x84729380, - 0x8471B000, 0x8470CC80, 0x846FE900, - 0x846F0580, 0x846E2200, 0x846D3E80, - 0x846C5B00, 0x846B7780, 0x846A9400, - 0x8469B080, 0x8468CD00, 0x8467E980, - 0x84670600, 0x84662280, 0x84653F00, - 0x84645B80, 0x84637800, 0x84629480, - 0x8461B100, 0x8460CD80, 0x845FEA00, - 0x845F0680, 0x845E2300, 0x845D3F80, - 0x845C5C00, 0x845B7880, 0x845A9500, - 0x8459B180, 0x8458CE00, 0x8457EA80, - 0x84570700, 0x84562380, 0x84554000, - 0x84545C80, 0x84537900, 0x84529580, - 0x8451B200, 0x8450CE80, 0x844FEB00, - 0x844F0780, 0x844E2400, 0x844D4080, - 0x844C5D00, 0x844B7980, 0x844A9600, - 0x8449B280, 0x8448CF00, 0x8447EB80, - 0x84470800, 0x84462480, 0x84454100, - 0x84445D80, 0x84437A00, 0x84429680, - 0x8441B300, 0x8440CF80, 0x843FEC00, - 0x843F0880, 0x843E2500, 0x843D4180, - 0x843C5E00, 0x843B7A80, 0x843A9700, - 0x8439B380, 0x8438D000, 0x8437EC80, - 0x84370900, 0x84362580, 0x84354200, - 0x84345E80, 0x84337B00, 0x84329780, - 0x8431B400, 0x8430D080, 0x842FED00, - 0x842F0980, 0x842E2600, 0x842D4280, - 0x842C5F00, 0x842B7B80, 0x842A9800, - 0x8429B480, 0x8428D100, 0x8427ED80, - 0x84270A00, 0x84262680, 0x84254300, - 0x84245F80, 0x84237C00, 0x84229880, - 0x8421B500, 0x8420D180, 0x841FEE00, - 0x841F0A80, 0x841E2700, 0x841D4380, - 0x841C6000, 0x841B7C80, 0x841A9900, - 0x8419B580, 0x8418D200, 0x8417EE80, - 0x84170B00, 0x84162780, 0x84154400, - 0x84146080, 0x84137D00, 0x84129980, - 0x8411B600, 0x8410D280, 0x840FEF00, - 0x840F0B80, 0x840E2800, 0x840D4480, - 0x840C6100, 0x840B7D80, 0x840A9A00, - 0x8409B680, 0x8408D300, 0x8407EF80, - 0x84070C00, 0x84062880, 0x84054500, - 0x84046180, 0x84037E00, 0x84029A80, - 0x8401B700, 0x8400D380, 0x83FFF000, - 0x83FF0C80, 0x83FE2900, 0x83FD4580, - 0x83FC6200, 0x83FB7E80, 0x83FA9B00, - 0x83F9B780, 0x83F8D400, 0x83F7F080, - 0x83F70D00, 0x83F62980, 0x83F54600, - 0x83F46280, 0x83F37F00, 0x83F29B80, - 0x83F1B800, 0x83F0D480, 0x83EFF100, - 0x83EF0D80, 0x83EE2A00, 0x83ED4680, - 0x83EC6300, 0x83EB7F80, 0x83EA9C00, - 0x83E9B880, 0x83E8D500, 0x83E7F180, - 0x83E70E00, 0x83E62A80, 0x83E54700, - 0x83E46380, 0x83E38000, 0x83E29C80, - 0x83E1B900, 0x83E0D580, 0x83DFF200, - 0x83DF0E80, 0x83DE2B00, 0x83DD4780, - 0x83DC6400, 0x83DB8080, 0x83DA9D00, - 0x83D9B980, 0x83D8D600, 0x83D7F280, - 0x83D70F00, 0x83D62B80, 0x83D54800, - 0x83D46480, 0x83D38100, 0x83D29D80, - 0x83D1BA00, 0x83D0D680, 0x83CFF300, - 0x83CF0F80, 0x83CE2C00, 0x83CD4880, - 0x83CC6500, 0x83CB8180, 0x83CA9E00, - 0x83C9BA80, 0x83C8D700, 0x83C7F380, - 0x83C71000, 0x83C62C80, 0x83C54900, - 0x83C46580, 0x83C38200, 0x83C29E80, - 0x83C1BB00, 0x83C0D780, 0x83BFF400, - 0x83BF1080, 0x83BE2D00, 0x83BD4980, - 0x83BC6600, 0x83BB8280, 0x83BA9F00, - 0x83B9BB80, 0x83B8D800, 0x83B7F480, - 0x83B71100, 0x83B62D80, 0x83B54A00, - 0x83B46680, 0x83B38300, 0x83B29F80, - 0x83B1BC00, 0x83B0D880, 0x83AFF500, - 0x83AF1180, 0x83AE2E00, 0x83AD4A80, - 0x83AC6700, 0x83AB8380, 0x83AAA000, - 0x83A9BC80, 0x83A8D900, 0x83A7F580, - 0x83A71200, 0x83A62E80, 0x83A54B00, - 0x83A46780, 0x83A38400, 0x83A2A080, - 0x83A1BD00, 0x83A0D980, 0x839FF600, - 0x839F1280, 0x839E2F00, 0x839D4B80, - 0x839C6800, 0x839B8480, 0x839AA100, - 0x8399BD80, 0x8398DA00, 0x8397F680, - 0x83971300, 0x83962F80, 0x83954C00, - 0x83946880, 0x83938500, 0x8392A180, - 0x8391BE00, 0x8390DA80, 0x838FF700, - 0x838F1380, 0x838E3000, 0x838D4C80, - 0x838C6900, 0x838B8580, 0x838AA200, - 0x8389BE80, 0x8388DB00, 0x8387F780, - 0x83871400, 0x83863080, 0x83854D00, - 0x83846980, 0x83838600, 0x8382A280, - 0x8381BF00, 0x8380DB80, 0x837FF800, - 0x837F1480, 0x837E3100, 0x837D4D80, - 0x837C6A00, 0x837B8680, 0x837AA300, - 0x8379BF80, 0x8378DC00, 0x8377F880, - 0x83771500, 0x83763180, 0x83754E00, - 0x83746A80, 0x83738700, 0x8372A380, - 0x8371C000, 0x8370DC80, 0x836FF900, - 0x836F1580, 0x836E3200, 0x836D4E80, - 0x836C6B00, 0x836B8780, 0x836AA400, - 0x8369C080, 0x8368DD00, 0x8367F980, - 0x83671600, 0x83663280, 0x83654F00, - 0x83646B80, 0x83638800, 0x8362A480, - 0x8361C100, 0x8360DD80, 0x835FFA00, - 0x835F1680, 0x835E3300, 0x835D4F80, - 0x835C6C00, 0x835B8880, 0x835AA500, - 0x8359C180, 0x8358DE00, 0x8357FA80, - 0x83571700, 0x83563380, 0x83555000, - 0x83546C80, 0x83538900, 0x8352A580, - 0x8351C200, 0x8350DE80, 0x834FFB00, - 0x834F1780, 0x834E3400, 0x834D5080, - 0x834C6D00, 0x834B8980, 0x834AA600, - 0x8349C280, 0x8348DF00, 0x8347FB80, - 0x83471800, 0x83463480, 0x83455100, - 0x83446D80, 0x83438A00, 0x8342A680, - 0x8341C300, 0x8340DF80, 0x833FFC00, - 0x833F1880, 0x833E3500, 0x833D5180, - 0x833C6E00, 0x833B8A80, 0x833AA700, - 0x8339C380, 0x8338E000, 0x8337FC80, - 0x83371900, 0x83363580, 0x83355200, - 0x83346E80, 0x83338B00, 0x8332A780, - 0x8331C400, 0x8330E080, 0x832FFD00, - 0x832F1980, 0x832E3600, 0x832D5280, - 0x832C6F00, 0x832B8B80, 0x832AA800, - 0x8329C480, 0x8328E100, 0x8327FD80, - 0x83271A00, 0x83263680, 0x83255300, - 0x83246F80, 0x83238C00, 0x8322A880, - 0x8321C500, 0x8320E180, 0x831FFE00, - 0x831F1A80, 0x831E3700, 0x831D5380, - 0x831C7000, 0x831B8C80, 0x831AA900, - 0x8319C580, 0x8318E200, 0x8317FE80, - 0x83171B00, 0x83163780, 0x83155400, - 0x83147080, 0x83138D00, 0x8312A980, - 0x8311C600, 0x8310E280, 0x830FFF00, - 0x830F1B80, 0x830E3800, 0x830D5480, - 0x830C7100, 0x830B8D80, 0x830AAA00, - 0x8309C680, 0x8308E300, 0x8307FF80, - 0x83071C00, 0x83063880, 0x83055500, - 0x83047180, 0x83038E00, 0x8302AA80, - 0x8301C700, 0x8300E380, 0x83040000, - 0x83032880, 0x83025100, 0x83017980, - 0x8300A200, 0x82FFCA80, 0x82FEF300, - 0x82FE1B80, 0x82FD4400, 0x82FC6C80, - 0x82FB9500, 0x82FABD80, 0x82F9E600, - 0x82F90E80, 0x82F83700, 0x82F75F80, - 0x82F68800, 0x82F5B080, 0x82F4D900, - 0x82F40180, 0x82F32A00, 0x82F25280, - 0x82F17B00, 0x82F0A380, 0x82EFCC00, - 0x82EEF480, 0x82EE1D00, 0x82ED4580, - 0x82EC6E00, 0x82EB9680, 0x82EABF00, - 0x82E9E780, 0x82E91000, 0x82E83880, - 0x82E76100, 0x82E68980, 0x82E5B200, - 0x82E4DA80, 0x82E40300, 0x82E32B80, - 0x82E25400, 0x82E17C80, 0x82E0A500, - 0x82DFCD80, 0x82DEF600, 0x82DE1E80, - 0x82DD4700, 0x82DC6F80, 0x82DB9800, - 0x82DAC080, 0x82D9E900, 0x82D91180, - 0x82D83A00, 0x82D76280, 0x82D68B00, - 0x82D5B380, 0x82D4DC00, 0x82D40480, - 0x82D32D00, 0x82D25580, 0x82D17E00, - 0x82D0A680, 0x82CFCF00, 0x82CEF780, - 0x82CE2000, 0x82CD4880, 0x82CC7100, - 0x82CB9980, 0x82CAC200, 0x82C9EA80, - 0x82C91300, 0x82C83B80, 0x82C76400, - 0x82C68C80, 0x82C5B500, 0x82C4DD80, - 0x82C40600, 0x82C32E80, 0x82C25700, - 0x82C17F80, 0x82C0A800, 0x82BFD080, - 0x82BEF900, 0x82BE2180, 0x82BD4A00, - 0x82BC7280, 0x82BB9B00, 0x82BAC380, - 0x82B9EC00, 0x82B91480, 0x82B83D00, - 0x82B76580, 0x82B68E00, 0x82B5B680, - 0x82B4DF00, 0x82B40780, 0x82B33000, - 0x82B25880, 0x82B18100, 0x82B0A980, - 0x82AFD200, 0x82AEFA80, 0x82AE2300, - 0x82AD4B80, 0x82AC7400, 0x82AB9C80, - 0x82AAC500, 0x82A9ED80, 0x82A91600, - 0x82A83E80, 0x82A76700, 0x82A68F80, - 0x82A5B800, 0x82A4E080, 0x82A40900, - 0x82A33180, 0x82A25A00, 0x82A18280, - 0x82A0AB00, 0x829FD380, 0x829EFC00, - 0x829E2480, 0x829D4D00, 0x829C7580, - 0x829B9E00, 0x829AC680, 0x8299EF00, - 0x82991780, 0x82984000, 0x82976880, - 0x82969100, 0x8295B980, 0x8294E200, - 0x82940A80, 0x82933300, 0x82925B80, - 0x82918400, 0x8290AC80, 0x828FD500, - 0x828EFD80, 0x828E2600, 0x828D4E80, - 0x828C7700, 0x828B9F80, 0x828AC800, - 0x8289F080, 0x82891900, 0x82884180, - 0x82876A00, 0x82869280, 0x8285BB00, - 0x8284E380, 0x82840C00, 0x82833480, - 0x82825D00, 0x82818580, 0x8280AE00, - 0x827FD680, 0x827EFF00, 0x827E2780, - 0x827D5000, 0x827C7880, 0x827BA100, - 0x827AC980, 0x8279F200, 0x82791A80, - 0x82784300, 0x82776B80, 0x82769400, - 0x8275BC80, 0x8274E500, 0x82740D80, - 0x82733600, 0x82725E80, 0x82718700, - 0x8270AF80, 0x826FD800, 0x826F0080, - 0x826E2900, 0x826D5180, 0x826C7A00, - 0x826BA280, 0x826ACB00, 0x8269F380, - 0x82691C00, 0x82684480, 0x82676D00, - 0x82669580, 0x8265BE00, 0x8264E680, - 0x82640F00, 0x82633780, 0x82626000, - 0x82618880, 0x8260B100, 0x825FD980, - 0x825F0200, 0x825E2A80, 0x825D5300, - 0x825C7B80, 0x825BA400, 0x825ACC80, - 0x8259F500, 0x82591D80, 0x82584600, - 0x82576E80, 0x82569700, 0x8255BF80, - 0x8254E800, 0x82541080, 0x82533900, - 0x82526180, 0x82518A00, 0x8250B280, - 0x824FDB00, 0x824F0380, 0x824E2C00, - 0x824D5480, 0x824C7D00, 0x824BA580, - 0x824ACE00, 0x8249F680, 0x82491F00, - 0x82484780, 0x82477000, 0x82469880, - 0x8245C100, 0x8244E980, 0x82441200, - 0x82433A80, 0x82426300, 0x82418B80, - 0x8240B400, 0x823FDC80, 0x823F0500, - 0x823E2D80, 0x823D5600, 0x823C7E80, - 0x823BA700, 0x823ACF80, 0x8239F800, - 0x82392080, 0x82384900, 0x82377180, - 0x82369A00, 0x8235C280, 0x8234EB00, - 0x82341380, 0x82333C00, 0x82326480, - 0x82318D00, 0x8230B580, 0x822FDE00, - 0x822F0680, 0x822E2F00, 0x822D5780, - 0x822C8000, 0x822BA880, 0x822AD100, - 0x8229F980, 0x82292200, 0x82284A80, - 0x82277300, 0x82269B80, 0x8225C400, - 0x8224EC80, 0x82241500, 0x82233D80, - 0x82226600, 0x82218E80, 0x8220B700, - 0x821FDF80, 0x821F0800, 0x821E3080, - 0x821D5900, 0x821C8180, 0x821BAA00, - 0x821AD280, 0x8219FB00, 0x82192380, - 0x82184C00, 0x82177480, 0x82169D00, - 0x8215C580, 0x8214EE00, 0x82141680, - 0x82133F00, 0x82126780, 0x82119000, - 0x8210B880, 0x820FE100, 0x820F0980, - 0x820E3200, 0x820D5A80, 0x820C8300, - 0x820BAB80, 0x820AD400, 0x8209FC80, - 0x82092500, 0x82084D80, 0x82077600, - 0x82069E80, 0x8205C700, 0x8204EF80, - 0x82041800, 0x82034080, 0x82026900, - 0x82019180, 0x8200BA00, 0x81FFE280, - 0x81FF0B00, 0x81FE3380, 0x81FD5C00, - 0x81FC8480, 0x81FBAD00, 0x81FAD580, - 0x81F9FE00, 0x81F92680, 0x81F84F00, - 0x81F77780, 0x81F6A000, 0x81F5C880, - 0x81F4F100, 0x81F41980, 0x81F34200, - 0x81F26A80, 0x81F19300, 0x81F0BB80, - 0x81EFE400, 0x81EF0C80, 0x81EE3500, - 0x81ED5D80, 0x81EC8600, 0x81EBAE80, - 0x81EAD700, 0x81E9FF80, 0x81E92800, - 0x81E85080, 0x81E77900, 0x81E6A180, - 0x81E5CA00, 0x81E4F280, 0x81E41B00, - 0x81E34380, 0x81E26C00, 0x81E19480, - 0x81E0BD00, 0x81DFE580, 0x81DF0E00, - 0x81DE3680, 0x81DD5F00, 0x81DC8780, - 0x81DBB000, 0x81DAD880, 0x81DA0100, - 0x81D92980, 0x81D85200, 0x81D77A80, - 0x81D6A300, 0x81D5CB80, 0x81D4F400, - 0x81D41C80, 0x81D34500, 0x81D26D80, - 0x81D19600, 0x81D0BE80, 0x81CFE700, - 0x81CF0F80, 0x81CE3800, 0x81CD6080, - 0x81CC8900, 0x81CBB180, 0x81CADA00, - 0x81CA0280, 0x81C92B00, 0x81C85380, - 0x81C77C00, 0x81C6A480, 0x81C5CD00, - 0x81C4F580, 0x81C41E00, 0x81C34680, - 0x81C26F00, 0x81C19780, 0x81C0C000, - 0x81BFE880, 0x81BF1100, 0x81BE3980, - 0x81BD6200, 0x81BC8A80, 0x81BBB300, - 0x81BADB80, 0x81BA0400, 0x81B92C80, - 0x81B85500, 0x81B77D80, 0x81B6A600, - 0x81B5CE80, 0x81B4F700, 0x81B41F80, - 0x81B34800, 0x81B27080, 0x81B19900, - 0x81B0C180, 0x81AFEA00, 0x81AF1280, - 0x81AE3B00, 0x81AD6380, 0x81AC8C00, - 0x81ABB480, 0x81AADD00, 0x81AA0580, - 0x81A92E00, 0x81A85680, 0x81A77F00, - 0x81A6A780, 0x81A5D000, 0x81A4F880, - 0x81A42100, 0x81A34980, 0x81A27200, - 0x81A19A80, 0x81A0C300, 0x819FEB80, - 0x819F1400, 0x819E3C80, 0x819D6500, - 0x819C8D80, 0x819BB600, 0x819ADE80, - 0x819A0700, 0x81992F80, 0x81985800, - 0x81978080, 0x8196A900, 0x8195D180, - 0x8194FA00, 0x81942280, 0x81934B00, - 0x81927380, 0x81919C00, 0x8190C480, - 0x818FED00, 0x818F1580, 0x818E3E00, - 0x818D6680, 0x818C8F00, 0x818BB780, - 0x818AE000, 0x818A0880, 0x81893100, - 0x81885980, 0x81878200, 0x8186AA80, - 0x8185D300, 0x8184FB80, 0x81842400, - 0x81834C80, 0x81827500, 0x81819D80, - 0x8180C600, 0x817FEE80, 0x817F1700, - 0x817E3F80, 0x817D6800, 0x817C9080, - 0x817BB900, 0x817AE180, 0x817A0A00, - 0x81793280, 0x81785B00, 0x81778380, - 0x8176AC00, 0x8175D480, 0x8174FD00, - 0x81742580, 0x81734E00, 0x81727680, - 0x81719F00, 0x8170C780, 0x816FF000, - 0x816F1880, 0x816E4100, 0x816D6980, - 0x816C9200, 0x816BBA80, 0x816AE300, - 0x816A0B80, 0x81693400, 0x81685C80, - 0x81678500, 0x8166AD80, 0x8165D600, - 0x8164FE80, 0x81642700, 0x81634F80, - 0x81627800, 0x8161A080, 0x8160C900, - 0x815FF180, 0x815F1A00, 0x815E4280, - 0x815D6B00, 0x815C9380, 0x815BBC00, - 0x815AE480, 0x815A0D00, 0x81593580, - 0x81585E00, 0x81578680, 0x8156AF00, - 0x8155D780, 0x81550000, 0x81542880, - 0x81535100, 0x81527980, 0x8151A200, - 0x8150CA80, 0x814FF300, 0x814F1B80, - 0x814E4400, 0x814D6C80, 0x814C9500, - 0x814BBD80, 0x814AE600, 0x814A0E80, - 0x81493700, 0x81485F80, 0x81478800, - 0x8146B080, 0x8145D900, 0x81450180, - 0x81442A00, 0x81435280, 0x81427B00, - 0x8141A380, 0x8140CC00, 0x813FF480, - 0x813F1D00, 0x813E4580, 0x813D6E00, - 0x813C9680, 0x813BBF00, 0x813AE780, - 0x813A1000, 0x81393880, 0x81386100, - 0x81378980, 0x8136B200, 0x8135DA80, - 0x81350300, 0x81342B80, 0x81335400, - 0x81327C80, 0x8131A500, 0x8130CD80, - 0x812FF600, 0x812F1E80, 0x812E4700, - 0x812D6F80, 0x812C9800, 0x812BC080, - 0x812AE900, 0x812A1180, 0x81293A00, - 0x81286280, 0x81278B00, 0x8126B380, - 0x8125DC00, 0x81250480, 0x81242D00, - 0x81235580, 0x81227E00, 0x8121A680, - 0x8120CF00, 0x811FF780, 0x811F2000, - 0x811E4880, 0x811D7100, 0x811C9980, - 0x811BC200, 0x811AEA80, 0x811A1300, - 0x81193B80, 0x81186400, 0x81178C80, - 0x8116B500, 0x8115DD80, 0x81150600, - 0x81142E80, 0x81135700, 0x81127F80, - 0x8111A800, 0x8110D080, 0x810FF900, - 0x810F2180, 0x810E4A00, 0x810D7280, - 0x810C9B00, 0x810BC380, 0x810AEC00, - 0x810A1480, 0x81093D00, 0x81086580, - 0x81078E00, 0x8106B680, 0x8105DF00, - 0x81050780, 0x81043000, 0x81035880, - 0x81028100, 0x8101A980, 0x8100D200, - 0x80FFFA80, 0x80FF2300, 0x80FE4B80, - 0x80FD7400, 0x80FC9C80, 0x80FBC500, - 0x80FAED80, 0x80FA1600, 0x80F93E80, - 0x80F86700, 0x80F78F80, 0x80F6B800, - 0x80F5E080, 0x80F50900, 0x80F43180, - 0x80F35A00, 0x80F28280, 0x80F1AB00, - 0x80F0D380, 0x80EFFC00, 0x80EF2480, - 0x80EE4D00, 0x80ED7580, 0x80EC9E00, - 0x80EBC680, 0x80EAEF00, 0x80EA1780, - 0x80E94000, 0x80E86880, 0x80E79100, - 0x80E6B980, 0x80E5E200, 0x80E50A80, - 0x80E43300, 0x80E35B80, 0x80E28400, - 0x80E1AC80, 0x80E0D500, 0x80DFFD80, - 0x80DF2600, 0x80DE4E80, 0x80DD7700, - 0x80DC9F80, 0x80DBC800, 0x80DAF080, - 0x80DA1900, 0x80D94180, 0x80D86A00, - 0x80D79280, 0x80D6BB00, 0x80D5E380, - 0x80D50C00, 0x80D43480, 0x80D35D00, - 0x80D28580, 0x80D1AE00, 0x80D0D680, - 0x80CFFF00, 0x80CF2780, 0x80CE5000, - 0x80CD7880, 0x80CCA100, 0x80CBC980, - 0x80CAF200, 0x80CA1A80, 0x80C94300, - 0x80C86B80, 0x80C79400, 0x80C6BC80, - 0x80C5E500, 0x80C50D80, 0x80C43600, - 0x80C35E80, 0x80C28700, 0x80C1AF80, - 0x80C0D800, 0x80C00080, 0x80BF2900, - 0x80BE5180, 0x80BD7A00, 0x80BCA280, - 0x80BBCB00, 0x80BAF380, 0x80BA1C00, - 0x80B94480, 0x80B86D00, 0x80B79580, - 0x80B6BE00, 0x80B5E680, 0x80B50F00, - 0x80B43780, 0x80B36000, 0x80B28880, - 0x80B1B100, 0x80B0D980, 0x80B00200, - 0x80AF2A80, 0x80AE5300, 0x80AD7B80, - 0x80ACA400, 0x80ABCC80, 0x80AAF500, - 0x80AA1D80, 0x80A94600, 0x80A86E80, - 0x80A79700, 0x80A6BF80, 0x80A5E800, - 0x80A51080, 0x80A43900, 0x80A36180, - 0x80A28A00, 0x80A1B280, 0x80A0DB00, - 0x80A00380, 0x809F2C00, 0x809E5480, - 0x809D7D00, 0x809CA580, 0x809BCE00, - 0x809AF680, 0x809A1F00, 0x80994780, - 0x80987000, 0x80979880, 0x8096C100, - 0x8095E980, 0x80951200, 0x80943A80, - 0x80936300, 0x80928B80, 0x8091B400, - 0x8090DC80, 0x80900500, 0x808F2D80, - 0x808E5600, 0x808D7E80, 0x808CA700, - 0x808BCF80, 0x808AF800, 0x808A2080, - 0x80894900, 0x80887180, 0x80879A00, - 0x8086C280, 0x8085EB00, 0x80851380, - 0x80843C00, 0x80836480, 0x80828D00, - 0x8081B580, 0x8080DE00, 0x80800680, - 0x807F2F00, 0x807E5780, 0x807D8000, - 0x807CA880, 0x807BD100, 0x807AF980, - 0x807A2200, 0x80794A80, 0x80787300, - 0x80779B80, 0x8076C400, 0x8075EC80, - 0x80751500, 0x80743D80, 0x80736600, - 0x80728E80, 0x8071B700, 0x8070DF80, - 0x80700800, 0x806F3080, 0x806E5900, - 0x806D8180, 0x806CAA00, 0x806BD280, - 0x806AFB00, 0x806A2380, 0x80694C00, - 0x80687480, 0x80679D00, 0x8066C580, - 0x8065EE00, 0x80651680, 0x80643F00, - 0x80636780, 0x80629000, 0x8061B880, - 0x8060E100, 0x80600980, 0x805F3200, - 0x805E5A80, 0x805D8300, 0x805CAB80, - 0x805BD400, 0x805AFC80, 0x805A2500, - 0x80594D80, 0x80587600, 0x80579E80, - 0x8056C700, 0x8055EF80, 0x80551800, - 0x80544080, 0x80536900, 0x80529180, - 0x8051BA00, 0x8050E280, 0x80500B00, - 0x804F3380, 0x804E5C00, 0x804D8480, - 0x804CAD00, 0x804BD580, 0x804AFE00, - 0x804A2680, 0x80494F00, 0x80487780, - 0x8047A000, 0x8046C880, 0x8045F100, - 0x80451980, 0x80444200, 0x80436A80, - 0x80429300, 0x8041BB80, 0x8040E400, - 0x80400C80, 0x803F3500, 0x803E5D80, - 0x803D8600, 0x803CAE80, 0x803BD700, - 0x803AFF80, 0x803A2800, 0x80395080, - 0x80387900, 0x8037A180, 0x8036CA00, - 0x8035F280, 0x80351B00, 0x80344380, - 0x80336C00, 0x80329480, 0x8031BD00, - 0x8030E580, 0x80300E00, 0x802F3680, - 0x802E5F00, 0x802D8780, 0x802CB000, - 0x802BD880, 0x802B0100, 0x802A2980, - 0x80295200, 0x80287A80, 0x8027A300, - 0x8026CB80, 0x8025F400, 0x80251C80, - 0x80244500, 0x80236D80, 0x80229600, - 0x8021BE80, 0x8020E700, 0x80200F80, - 0x801F3800, 0x801E6080, 0x801D8900, - 0x801CB180, 0x801BDA00, 0x801B0280, - 0x801A2B00, 0x80195380, 0x80187C00, - 0x8017A480, 0x8016CD00, 0x8015F580, - 0x80151E00, 0x80144680, 0x80136F00, - 0x80129780, 0x8011C000, 0x8010E880, - 0x80101100, 0x800F3980, 0x800E6200, - 0x800D8A80, 0x800CB300, 0x800BDB80, - 0x800B0400, 0x800A2C80, 0x80095500, - 0x80087D80, 0x8007A600, 0x8006CE80, - 0x8005F700, 0x80051F80, 0x80044800, - 0x80037080, 0x80029900, 0x8001C180, - 0x8000EA00, 0x80001280, 0x7FFF3B00, - 0x7FFE6380, 0x7FFD8C00, 0x7FFCB480, - 0x7FFBDD00, 0x7FFB0580, 0x7FFA2E00, - 0x7FF95680, 0x7FF87F00, 0x7FF7A780, - 0x7FF6D000, 0x7FF5F880, 0x7FF52100, - 0x7FF44980, 0x7FF37200, 0x7FF29A80, - 0x7FF1C300, 0x7FF0EB80, 0x7FF01400, - 0x7FEF3C80, 0x7FEE6500, 0x7FED8D80, - 0x7FECB600, 0x7FEBDE80, 0x7FEB0700, - 0x7FEA2F80, 0x7FE95800, 0x7FE88080, - 0x7FE7A900, 0x7FE6D180, 0x7FE5FA00, - 0x7FE52280, 0x7FE44B00, 0x7FE37380, - 0x7FE29C00, 0x7FE1C480, 0x7FE0ED00, - 0x7FE01580, 0x7FDF3E00, 0x7FDE6680, - 0x7FDD8F00, 0x7FDCB780, 0x7FDBE000, - 0x7FDB0880, 0x7FDA3100, 0x7FD95980, - 0x7FD88200, 0x7FD7AA80, 0x7FD6D300, - 0x7FD5FB80, 0x7FD52400, 0x7FD44C80, - 0x7FD37500, 0x7FD29D80, 0x7FD1C600, - 0x7FD0EE80, 0x7FD01700, 0x7FCF3F80, - 0x7FCE6800, 0x7FCD9080, 0x7FCCB900, - 0x7FCBE180, 0x7FCB0A00, 0x7FCA3280, - 0x7FC95B00, 0x7FC88380, 0x7FC7AC00, - 0x7FC6D480, 0x7FC5FD00, 0x7FC52580, - 0x7FC44E00, 0x7FC37680, 0x7FC29F00, - 0x7FC1C780, 0x7FC0F000, 0x7FC01880, - 0x7FBF4100, 0x7FBE6980, 0x7FBD9200, - 0x7FBCBA80, 0x7FBBE300, 0x7FBB0B80, - 0x7FBA3400, 0x7FB95C80, 0x7FB88500, - 0x7FB7AD80, 0x7FB6D600, 0x7FB5FE80, - 0x7FB52700, 0x7FB44F80, 0x7FB37800, - 0x7FB2A080, 0x7FB1C900, 0x7FB0F180, - 0x7FB01A00, 0x7FAF4280, 0x7FAE6B00, - 0x7FAD9380, 0x7FACBC00, 0x7FABE480, - 0x7FAB0D00, 0x7FAA3580, 0x7FA95E00, - 0x7FA88680, 0x7FA7AF00, 0x7FA6D780, - 0x7FA60000, 0x7FA52880, 0x7FA45100, - 0x7FA37980, 0x7FA2A200, 0x7FA1CA80, - 0x7FA0F300, 0x7FA01B80, 0x7F9F4400, - 0x7F9E6C80, 0x7F9D9500, 0x7F9CBD80, - 0x7F9BE600, 0x7F9B0E80, 0x7F9A3700, - 0x7F995F80, 0x7F988800, 0x7F97B080, - 0x7F96D900, 0x7F960180, 0x7F952A00, - 0x7F945280, 0x7F937B00, 0x7F92A380, - 0x7F91CC00, 0x7F90F480, 0x7F901D00, - 0x7F8F4580, 0x7F8E6E00, 0x7F8D9680, - 0x7F8CBF00, 0x7F8BE780, 0x7F8B1000, - 0x7F8A3880, 0x7F896100, 0x7F888980, - 0x7F87B200, 0x7F86DA80, 0x7F860300, - 0x7F852B80, 0x7F845400, 0x7F837C80, - 0x7F82A500, 0x7F81CD80, 0x7F80F600, - 0x7F801E80, 0x7F7F4700, 0x7F7E6F80, - 0x7F7D9800, 0x7F7CC080, 0x7F7BE900, - 0x7F7B1180, 0x7F7A3A00, 0x7F796280, - 0x7F788B00, 0x7F77B380, 0x7F76DC00, - 0x7F760480, 0x7F752D00, 0x7F745580, - 0x7F737E00, 0x7F72A680, 0x7F71CF00, - 0x7F70F780, 0x7F702000, 0x7F6F4880, - 0x7F6E7100, 0x7F6D9980, 0x7F6CC200, - 0x7F6BEA80, 0x7F6B1300, 0x7F6A3B80, - 0x7F696400, 0x7F688C80, 0x7F67B500, - 0x7F66DD80, 0x7F660600, 0x7F652E80, - 0x7F645700, 0x7F637F80, 0x7F62A800, - 0x7F61D080, 0x7F60F900, 0x7F602180, - 0x7F5F4A00, 0x7F5E7280, 0x7F5D9B00, - 0x7F5CC380, 0x7F5BEC00, 0x7F5B1480, - 0x7F5A3D00, 0x7F596580, 0x7F588E00, - 0x7F57B680, 0x7F56DF00, 0x7F560780, - 0x7F553000, 0x7F545880, 0x7F538100, - 0x7F52A980, 0x7F51D200, 0x7F50FA80, - 0x7F502300, 0x7F4F4B80, 0x7F4E7400, - 0x7F4D9C80, 0x7F4CC500, 0x7F4BED80, - 0x7F4B1600, 0x7F4A3E80, 0x7F496700, - 0x7F488F80, 0x7F47B800, 0x7F46E080, - 0x7F460900, 0x7F453180, 0x7F445A00, - 0x7F438280, 0x7F42AB00, 0x7F41D380, - 0x7F40FC00, 0x7F402480, 0x7F3F4D00, - 0x7F3E7580, 0x7F3D9E00, 0x7F3CC680, - 0x7F3BEF00, 0x7F3B1780, 0x7F3A4000, - 0x7F396880, 0x7F389100, 0x7F37B980, - 0x7F36E200, 0x7F360A80, 0x7F353300, - 0x7F345B80, 0x7F338400, 0x7F32AC80, - 0x7F31D500, 0x7F30FD80, 0x7F302600, - 0x7F2F4E80, 0x7F2E7700, 0x7F2D9F80, - 0x7F2CC800, 0x7F2BF080, 0x7F2B1900, - 0x7F2A4180, 0x7F296A00, 0x7F289280, - 0x7F27BB00, 0x7F26E380, 0x7F260C00, - 0x7F253480, 0x7F245D00, 0x7F238580, - 0x7F22AE00, 0x7F21D680, 0x7F20FF00, - 0x7F202780, 0x7F1F5000, 0x7F1E7880, - 0x7F1DA100, 0x7F1CC980, 0x7F1BF200, - 0x7F1B1A80, 0x7F1A4300, 0x7F196B80, - 0x7F189400, 0x7F17BC80, 0x7F16E500, - 0x7F160D80, 0x7F153600, 0x7F145E80, - 0x7F138700, 0x7F12AF80, 0x7F11D800, - 0x7F110080, 0x7F102900, 0x7F0F5180, - 0x7F0E7A00, 0x7F0DA280, 0x7F0CCB00, - 0x7F0BF380, 0x7F0B1C00, 0x7F0A4480, - 0x7F096D00, 0x7F089580, 0x7F07BE00, - 0x7F06E680, 0x7F060F00, 0x7F053780, - 0x7F046000, 0x7F038880, 0x7F02B100, - 0x7F01D980, 0x7F010200, 0x7F002A80, - 0x7EFF5300, 0x7EFE7B80, 0x7EFDA400, - 0x7EFCCC80, 0x7EFBF500, 0x7EFB1D80, - 0x7EFA4600, 0x7EF96E80, 0x7EF89700, - 0x7EF7BF80, 0x7EF6E800, 0x7EF61080, - 0x7EF53900, 0x7EF46180, 0x7EF38A00, - 0x7EF2B280, 0x7EF1DB00, 0x7EF10380, - 0x7EF02C00, 0x7EEF5480, 0x7EEE7D00, - 0x7EEDA580, 0x7EECCE00, 0x7EEBF680, - 0x7EEB1F00, 0x7EEA4780, 0x7EE97000, - 0x7EE89880, 0x7EE7C100, 0x7EE6E980, - 0x7EE61200, 0x7EE53A80, 0x7EE46300, - 0x7EE38B80, 0x7EE2B400, 0x7EE1DC80, - 0x7EE10500, 0x7EE02D80, 0x7EDF5600, - 0x7EDE7E80, 0x7EDDA700, 0x7EDCCF80, - 0x7EDBF800, 0x7EDB2080, 0x7EDA4900, - 0x7ED97180, 0x7ED89A00, 0x7ED7C280, - 0x7ED6EB00, 0x7ED61380, 0x7ED53C00, - 0x7ED46480, 0x7ED38D00, 0x7ED2B580, - 0x7ED1DE00, 0x7ED10680, 0x7ED02F00, - 0x7ECF5780, 0x7ECE8000, 0x7ECDA880, - 0x7ECCD100, 0x7ECBF980, 0x7ECB2200, - 0x7ECA4A80, 0x7EC97300, 0x7EC89B80, - 0x7EC7C400, 0x7EC6EC80, 0x7EC61500, - 0x7EC53D80, 0x7EC46600, 0x7EC38E80, - 0x7EC2B700, 0x7EC1DF80, 0x7EC10800, - 0x7EC03080, 0x7EBF5900, 0x7EBE8180, - 0x7EBDAA00, 0x7EBCD280, 0x7EBBFB00, - 0x7EBB2380, 0x7EBA4C00, 0x7EB97480, - 0x7EB89D00, 0x7EB7C580, 0x7EB6EE00, - 0x7EB61680, 0x7EB53F00, 0x7EB46780, - 0x7EB39000, 0x7EB2B880, 0x7EB1E100, - 0x7EB10980, 0x7EB03200, 0x7EAF5A80, - 0x7EAE8300, 0x7EADAB80, 0x7EACD400, - 0x7EABFC80, 0x7EAB2500, 0x7EAA4D80, - 0x7EA97600, 0x7EA89E80, 0x7EA7C700, - 0x7EA6EF80, 0x7EA61800, 0x7EA54080, - 0x7EA46900, 0x7EA39180, 0x7EA2BA00, - 0x7EA1E280, 0x7EA10B00, 0x7EA03380, - 0x7E9F5C00, 0x7E9E8480, 0x7E9DAD00, - 0x7E9CD580, 0x7E9BFE00, 0x7E9B2680, - 0x7E9A4F00, 0x7E997780, 0x7E98A000, - 0x7E97C880, 0x7E96F100, 0x7E961980, - 0x7E954200, 0x7E946A80, 0x7E939300, - 0x7E92BB80, 0x7E91E400, 0x7E910C80, - 0x7E903500, 0x7E8F5D80, 0x7E8E8600, - 0x7E8DAE80, 0x7E8CD700, 0x7E8BFF80, - 0x7E8B2800, 0x7E8A5080, 0x7E897900, - 0x7E88A180, 0x7E87CA00, 0x7E86F280, - 0x7E861B00, 0x7E854380, 0x7E846C00, - 0x7E839480, 0x7E82BD00, 0x7E81E580, - 0x7E810E00, 0x7E803680, 0x7E7F5F00, - 0x7E7E8780, 0x7E7DB000, 0x7E7CD880, - 0x7E7C0100, 0x7E7B2980, 0x7E7A5200, - 0x7E797A80, 0x7E78A300, 0x7E77CB80, - 0x7E76F400, 0x7E761C80, 0x7E754500, - 0x7E746D80, 0x7E739600, 0x7E72BE80, - 0x7E71E700, 0x7E710F80, 0x7E703800, - 0x7E6F6080, 0x7E6E8900, 0x7E6DB180, - 0x7E6CDA00, 0x7E6C0280, 0x7E6B2B00, - 0x7E6A5380, 0x7E697C00, 0x7E68A480, - 0x7E67CD00, 0x7E66F580, 0x7E661E00, - 0x7E654680, 0x7E646F00, 0x7E639780, - 0x7E62C000, 0x7E61E880, 0x7E611100, - 0x7E603980, 0x7E5F6200, 0x7E5E8A80, - 0x7E5DB300, 0x7E5CDB80, 0x7E5C0400, - 0x7E5B2C80, 0x7E5A5500, 0x7E597D80, - 0x7E58A600, 0x7E57CE80, 0x7E56F700, - 0x7E561F80, 0x7E554800, 0x7E547080, - 0x7E539900, 0x7E52C180, 0x7E51EA00, - 0x7E511280, 0x7E503B00, 0x7E4F6380, - 0x7E4E8C00, 0x7E4DB480, 0x7E4CDD00, - 0x7E4C0580, 0x7E4B2E00, 0x7E4A5680, - 0x7E497F00, 0x7E48A780, 0x7E47D000, - 0x7E46F880, 0x7E462100, 0x7E454980, - 0x7E447200, 0x7E439A80, 0x7E42C300, - 0x7E41EB80, 0x7E411400, 0x7E403C80, - 0x7E3F6500, 0x7E3E8D80, 0x7E3DB600, - 0x7E3CDE80, 0x7E3C0700, 0x7E3B2F80, - 0x7E3A5800, 0x7E398080, 0x7E38A900, - 0x7E37D180, 0x7E36FA00, 0x7E362280, - 0x7E354B00, 0x7E347380, 0x7E339C00, - 0x7E32C480, 0x7E31ED00, 0x7E311580, - 0x7E303E00, 0x7E2F6680, 0x7E2E8F00, - 0x7E2DB780, 0x7E2CE000, 0x7E2C0880, - 0x7E2B3100, 0x7E2A5980, 0x7E298200, - 0x7E28AA80, 0x7E27D300, 0x7E26FB80, - 0x7E262400, 0x7E254C80, 0x7E247500, - 0x7E239D80, 0x7E22C600, 0x7E21EE80, - 0x7E211700, 0x7E203F80, 0x7E1F6800, - 0x7E1E9080, 0x7E1DB900, 0x7E1CE180, - 0x7E1C0A00, 0x7E1B3280, 0x7E1A5B00, - 0x7E198380, 0x7E18AC00, 0x7E17D480, - 0x7E16FD00, 0x7E162580, 0x7E154E00, - 0x7E147680, 0x7E139F00, 0x7E12C780, - 0x7E11F000, 0x7E111880, 0x7E104100, - 0x7E0F6980, 0x7E0E9200, 0x7E0DBA80, - 0x7E0CE300, 0x7E0C0B80, 0x7E0B3400, - 0x7E0A5C80, 0x7E098500, 0x7E08AD80, - 0x7E07D600, 0x7E06FE80, 0x7E062700, - 0x7E054F80, 0x7E047800, 0x7E03A080, - 0x7E02C900, 0x7E01F180, 0x7E011A00, - 0x7E004280, 0x7DFF6B00, 0x7DFE9380, - 0x7DFDBC00, 0x7DFCE480, 0x7DFC0D00, - 0x7DFB3580, 0x7DFA5E00, 0x7DF98680, - 0x7DF8AF00, 0x7DF7D780, 0x7DF70000, - 0x7DF62880, 0x7DF55100, 0x7DF47980, - 0x7DF3A200, 0x7DF2CA80, 0x7DF1F300, - 0x7DF11B80, 0x7DF04400, 0x7DEF6C80, - 0x7DEE9500, 0x7DEDBD80, 0x7DECE600, - 0x7DEC0E80, 0x7DEB3700, 0x7DEA5F80, - 0x7DE98800, 0x7DE8B080, 0x7DE7D900, - 0x7DE70180, 0x7DE62A00, 0x7DE55280, - 0x7DE47B00, 0x7DE3A380, 0x7DE2CC00, - 0x7DE1F480, 0x7DE11D00, 0x7DE04580, - 0x7DDF6E00, 0x7DDE9680, 0x7DDDBF00, - 0x7DDCE780, 0x7DDC1000, 0x7DDB3880, - 0x7DDA6100, 0x7DD98980, 0x7DD8B200, - 0x7DD7DA80, 0x7DD70300, 0x7DD62B80, - 0x7DD55400, 0x7DD47C80, 0x7DD3A500, - 0x7DD2CD80, 0x7DD1F600, 0x7DD11E80, - 0x7DD04700, 0x7DCF6F80, 0x7DCE9800, - 0x7DCDC080, 0x7DCCE900, 0x7DCC1180, - 0x7DCB3A00, 0x7DCA6280, 0x7DC98B00, - 0x7DC8B380, 0x7DC7DC00, 0x7DC70480, - 0x7DC62D00, 0x7DC55580, 0x7DC47E00, - 0x7DC3A680, 0x7DC2CF00, 0x7DC1F780, - 0x7DC12000, 0x7DC04880, 0x7DBF7100, - 0x7DBE9980, 0x7DBDC200, 0x7DBCEA80, - 0x7DBC1300, 0x7DBB3B80, 0x7DBA6400, - 0x7DB98C80, 0x7DB8B500, 0x7DB7DD80, - 0x7DB70600, 0x7DB62E80, 0x7DB55700, - 0x7DB47F80, 0x7DB3A800, 0x7DB2D080, - 0x7DB1F900, 0x7DB12180, 0x7DB04A00, - 0x7DAF7280, 0x7DAE9B00, 0x7DADC380, - 0x7DACEC00, 0x7DAC1480, 0x7DAB3D00, - 0x7DAA6580, 0x7DA98E00, 0x7DA8B680, - 0x7DA7DF00, 0x7DA70780, 0x7DA63000, - 0x7DA55880, 0x7DA48100, 0x7DA3A980, - 0x7DA2D200, 0x7DA1FA80, 0x7DA12300, - 0x7DA04B80, 0x7D9F7400, 0x7D9E9C80, - 0x7D9DC500, 0x7D9CED80, 0x7D9C1600, - 0x7D9B3E80, 0x7D9A6700, 0x7D998F80, - 0x7D98B800, 0x7D97E080, 0x7D970900, - 0x7D963180, 0x7D955A00, 0x7D948280, - 0x7D93AB00, 0x7D92D380, 0x7D91FC00, - 0x7D912480, 0x7D904D00, 0x7D8F7580, - 0x7D8E9E00, 0x7D8DC680, 0x7D8CEF00, - 0x7D8C1780, 0x7D8B4000, 0x7D8A6880, - 0x7D899100, 0x7D88B980, 0x7D87E200, - 0x7D870A80, 0x7D863300, 0x7D855B80, - 0x7D848400, 0x7D83AC80, 0x7D82D500, - 0x7D81FD80, 0x7D812600, 0x7D804E80, - 0x7D7F7700, 0x7D7E9F80, 0x7D7DC800, - 0x7D7CF080, 0x7D7C1900, 0x7D7B4180, - 0x7D7A6A00, 0x7D799280, 0x7D78BB00, - 0x7D77E380, 0x7D770C00, 0x7D763480, - 0x7D755D00, 0x7D748580, 0x7D73AE00, - 0x7D72D680, 0x7D71FF00, 0x7D712780, - 0x7D705000, 0x7D6F7880, 0x7D6EA100, - 0x7D6DC980, 0x7D6CF200, 0x7D6C1A80, - 0x7D6B4300, 0x7D6A6B80, 0x7D699400, - 0x7D68BC80, 0x7D67E500, 0x7D670D80, - 0x7D663600, 0x7D655E80, 0x7D648700, - 0x7D63AF80, 0x7D62D800, 0x7D620080, - 0x7D612900, 0x7D605180, 0x7D5F7A00, - 0x7D5EA280, 0x7D5DCB00, 0x7D5CF380, - 0x7D5C1C00, 0x7D5B4480, 0x7D5A6D00, - 0x7D599580, 0x7D58BE00, 0x7D57E680, - 0x7D570F00, 0x7D563780, 0x7D556000, - 0x7D548880, 0x7D53B100, 0x7D52D980, - 0x7D520200, 0x7D512A80, 0x7D505300, - 0x7D4F7B80, 0x7D4EA400, 0x7D4DCC80, - 0x7D4CF500, 0x7D4C1D80, 0x7D4B4600, - 0x7D4A6E80, 0x7D499700, 0x7D48BF80, - 0x7D47E800, 0x7D471080, 0x7D463900, - 0x7D456180, 0x7D448A00, 0x7D43B280, - 0x7D42DB00, 0x7D420380, 0x7D412C00, - 0x7D405480, 0x7D3F7D00, 0x7D3EA580, - 0x7D3DCE00, 0x7D3CF680, 0x7D3C1F00, - 0x7D3B4780, 0x7D3A7000, 0x7D399880, - 0x7D38C100, 0x7D37E980, 0x7D371200, - 0x7D363A80, 0x7D356300, 0x7D348B80, - 0x7D33B400, 0x7D32DC80, 0x7D320500, - 0x7D312D80, 0x7D305600, 0x7D2F7E80, - 0x7D2EA700, 0x7D2DCF80, 0x7D2CF800, - 0x7D2C2080, 0x7D2B4900, 0x7D2A7180, - 0x7D299A00, 0x7D28C280, 0x7D27EB00, - 0x7D271380, 0x7D263C00, 0x7D256480, - 0x7D248D00, 0x7D23B580, 0x7D22DE00, - 0x7D220680, 0x7D212F00, 0x7D205780, - 0x7D1F8000, 0x7D1EA880, 0x7D1DD100, - 0x7D1CF980, 0x7D1C2200, 0x7D1B4A80, - 0x7D1A7300, 0x7D199B80, 0x7D18C400, - 0x7D17EC80, 0x7D171500, 0x7D163D80, - 0x7D156600, 0x7D148E80, 0x7D13B700, - 0x7D12DF80, 0x7D120800, 0x7D113080, - 0x7D105900, 0x7D0F8180, 0x7D0EAA00, - 0x7D0DD280, 0x7D0CFB00, 0x7D0C2380, - 0x7D0B4C00, 0x7D0A7480, 0x7D099D00, - 0x7D08C580, 0x7D07EE00, 0x7D071680, - 0x7D063F00, 0x7D056780, 0x7D049000, - 0x7D03B880, 0x7D02E100, 0x7D020980, - 0x7D013200, 0x7D005A80, 0x7CFF8300, - 0x7CFEAB80, 0x7CFDD400, 0x7CFCFC80, - 0x7CFC2500, 0x7CFB4D80, 0x7CFA7600, - 0x7CF99E80, 0x7CF8C700, 0x7CF7EF80, - 0x7CF71800, 0x7CF64080, 0x7CF56900, - 0x7CF49180, 0x7CF3BA00, 0x7CF2E280, - 0x7CF20B00, 0x7CF13380, 0x7CF05C00, - 0x7CEF8480, 0x7CEEAD00, 0x7CEDD580, - 0x7CECFE00, 0x7CEC2680, 0x7CEB4F00, - 0x7CEA7780, 0x7CE9A000, 0x7CE8C880, - 0x7CE7F100, 0x7CE71980, 0x7CE64200, - 0x7CE56A80, 0x7CE49300, 0x7CE3BB80, - 0x7CE2E400, 0x7CE20C80, 0x7CE13500, - 0x7CE05D80, 0x7CDF8600, 0x7CDEAE80, - 0x7CDDD700, 0x7CDCFF80, 0x7CDC2800, - 0x7CDB5080, 0x7CDA7900, 0x7CD9A180, - 0x7CD8CA00, 0x7CD7F280, 0x7CD71B00, - 0x7CD64380, 0x7CD56C00, 0x7CD49480, - 0x7CD3BD00, 0x7CD2E580, 0x7CD20E00, - 0x7CD13680, 0x7CD05F00, 0x7CCF8780, - 0x7CCEB000, 0x7CCDD880, 0x7CCD0100, - 0x7CCC2980, 0x7CCB5200, 0x7CCA7A80, - 0x7CC9A300, 0x7CC8CB80, 0x7CC7F400, - 0x7CC71C80, 0x7CC64500, 0x7CC56D80, - 0x7CC49600, 0x7CC3BE80, 0x7CC2E700, - 0x7CC20F80, 0x7CC13800, 0x7CC06080, - 0x7CBF8900, 0x7CBEB180, 0x7CBDDA00, - 0x7CBD0280, 0x7CBC2B00, 0x7CBB5380, - 0x7CBA7C00, 0x7CB9A480, 0x7CB8CD00, - 0x7CB7F580, 0x7CB71E00, 0x7CB64680, - 0x7CB56F00, 0x7CB49780, 0x7CB3C000, - 0x7CB2E880, 0x7CB21100, 0x7CB13980, - 0x7CB06200, 0x7CAF8A80, 0x7CAEB300, - 0x7CADDB80, 0x7CAD0400, 0x7CAC2C80, - 0x7CAB5500, 0x7CAA7D80, 0x7CA9A600, - 0x7CA8CE80, 0x7CA7F700, 0x7CA71F80, - 0x7CA64800, 0x7CA57080, 0x7CA49900, - 0x7CA3C180, 0x7CA2EA00, 0x7CA21280, - 0x7CA13B00, 0x7CA06380, 0x7C9F8C00, - 0x7C9EB480, 0x7C9DDD00, 0x7C9D0580, - 0x7C9C2E00, 0x7C9B5680, 0x7C9A7F00, - 0x7C99A780, 0x7C98D000, 0x7C97F880, - 0x7C972100, 0x7C964980, 0x7C957200, - 0x7C949A80, 0x7C93C300, 0x7C92EB80, - 0x7C921400, 0x7C913C80, 0x7C906500, - 0x7C8F8D80, 0x7C8EB600, 0x7C8DDE80, - 0x7C8D0700, 0x7C8C2F80, 0x7C8B5800, - 0x7C8A8080, 0x7C89A900, 0x7C88D180, - 0x7C87FA00, 0x7C872280, 0x7C864B00, - 0x7C857380, 0x7C849C00, 0x7C83C480, - 0x7C82ED00, 0x7C821580, 0x7C813E00, - 0x7C806680, 0x7C7F8F00, 0x7C7EB780, - 0x7C7DE000, 0x7C7D0880, 0x7C7C3100, - 0x7C7B5980, 0x7C7A8200, 0x7C79AA80, - 0x7C78D300, 0x7C77FB80, 0x7C772400, - 0x7C764C80, 0x7C757500, 0x7C749D80, - 0x7C73C600, 0x7C72EE80, 0x7C721700, - 0x7C713F80, 0x7C706800, 0x7C6F9080, - 0x7C6EB900, 0x7C6DE180, 0x7C6D0A00, - 0x7C6C3280, 0x7C6B5B00, 0x7C6A8380, - 0x7C69AC00, 0x7C68D480, 0x7C67FD00, - 0x7C672580, 0x7C664E00, 0x7C657680, - 0x7C649F00, 0x7C63C780, 0x7C62F000, - 0x7C621880, 0x7C614100, 0x7C606980, - 0x7C5F9200, 0x7C5EBA80, 0x7C5DE300, - 0x7C5D0B80, 0x7C5C3400, 0x7C5B5C80, - 0x7C5A8500, 0x7C59AD80, 0x7C58D600, - 0x7C57FE80, 0x7C572700, 0x7C564F80, - 0x7C557800, 0x7C54A080, 0x7C53C900, - 0x7C52F180, 0x7C521A00, 0x7C514280, - 0x7C506B00, 0x7C4F9380, 0x7C4EBC00, - 0x7C4DE480, 0x7C4D0D00, 0x7C4C3580, - 0x7C4B5E00, 0x7C4A8680, 0x7C49AF00, - 0x7C48D780, 0x7C480000, 0x7C473380, - 0x7C466700, 0x7C459A80, 0x7C44CE00, - 0x7C440180, 0x7C433500, 0x7C426880, - 0x7C419C00, 0x7C40CF80, 0x7C400300, - 0x7C3F3680, 0x7C3E6A00, 0x7C3D9D80, - 0x7C3CD100, 0x7C3C0480, 0x7C3B3800, - 0x7C3A6B80, 0x7C399F00, 0x7C38D280, - 0x7C380600, 0x7C373980, 0x7C366D00, - 0x7C35A080, 0x7C34D400, 0x7C340780, - 0x7C333B00, 0x7C326E80, 0x7C31A200, - 0x7C30D580, 0x7C300900, 0x7C2F3C80, - 0x7C2E7000, 0x7C2DA380, 0x7C2CD700, - 0x7C2C0A80, 0x7C2B3E00, 0x7C2A7180, - 0x7C29A500, 0x7C28D880, 0x7C280C00, - 0x7C273F80, 0x7C267300, 0x7C25A680, - 0x7C24DA00, 0x7C240D80, 0x7C234100, - 0x7C227480, 0x7C21A800, 0x7C20DB80, - 0x7C200F00, 0x7C1F4280, 0x7C1E7600, - 0x7C1DA980, 0x7C1CDD00, 0x7C1C1080, - 0x7C1B4400, 0x7C1A7780, 0x7C19AB00, - 0x7C18DE80, 0x7C181200, 0x7C174580, - 0x7C167900, 0x7C15AC80, 0x7C14E000, - 0x7C141380, 0x7C134700, 0x7C127A80, - 0x7C11AE00, 0x7C10E180, 0x7C101500, - 0x7C0F4880, 0x7C0E7C00, 0x7C0DAF80, - 0x7C0CE300, 0x7C0C1680, 0x7C0B4A00, - 0x7C0A7D80, 0x7C09B100, 0x7C08E480, - 0x7C081800, 0x7C074B80, 0x7C067F00, - 0x7C05B280, 0x7C04E600, 0x7C041980, - 0x7C034D00, 0x7C028080, 0x7C01B400, - 0x7C00E780, 0x7C001B00, 0x7BFF4E80, - 0x7BFE8200, 0x7BFDB580, 0x7BFCE900, - 0x7BFC1C80, 0x7BFB5000, 0x7BFA8380, - 0x7BF9B700, 0x7BF8EA80, 0x7BF81E00, - 0x7BF75180, 0x7BF68500, 0x7BF5B880, - 0x7BF4EC00, 0x7BF41F80, 0x7BF35300, - 0x7BF28680, 0x7BF1BA00, 0x7BF0ED80, - 0x7BF02100, 0x7BEF5480, 0x7BEE8800, - 0x7BEDBB80, 0x7BECEF00, 0x7BEC2280, - 0x7BEB5600, 0x7BEA8980, 0x7BE9BD00, - 0x7BE8F080, 0x7BE82400, 0x7BE75780, - 0x7BE68B00, 0x7BE5BE80, 0x7BE4F200, - 0x7BE42580, 0x7BE35900, 0x7BE28C80, - 0x7BE1C000, 0x7BE0F380, 0x7BE02700, - 0x7BDF5A80, 0x7BDE8E00, 0x7BDDC180, - 0x7BDCF500, 0x7BDC2880, 0x7BDB5C00, - 0x7BDA8F80, 0x7BD9C300, 0x7BD8F680, - 0x7BD82A00, 0x7BD75D80, 0x7BD69100, - 0x7BD5C480, 0x7BD4F800, 0x7BD42B80, - 0x7BD35F00, 0x7BD29280, 0x7BD1C600, - 0x7BD0F980, 0x7BD02D00, 0x7BCF6080, - 0x7BCE9400, 0x7BCDC780, 0x7BCCFB00, - 0x7BCC2E80, 0x7BCB6200, 0x7BCA9580, - 0x7BC9C900, 0x7BC8FC80, 0x7BC83000, - 0x7BC76380, 0x7BC69700, 0x7BC5CA80, - 0x7BC4FE00, 0x7BC43180, 0x7BC36500, - 0x7BC29880, 0x7BC1CC00, 0x7BC0FF80, - 0x7BC03300, 0x7BBF6680, 0x7BBE9A00, - 0x7BBDCD80, 0x7BBD0100, 0x7BBC3480, - 0x7BBB6800, 0x7BBA9B80, 0x7BB9CF00, - 0x7BB90280, 0x7BB83600, 0x7BB76980, - 0x7BB69D00, 0x7BB5D080, 0x7BB50400, - 0x7BB43780, 0x7BB36B00, 0x7BB29E80, - 0x7BB1D200, 0x7BB10580, 0x7BB03900, - 0x7BAF6C80, 0x7BAEA000, 0x7BADD380, - 0x7BAD0700, 0x7BAC3A80, 0x7BAB6E00, - 0x7BAAA180, 0x7BA9D500, 0x7BA90880, - 0x7BA83C00, 0x7BA76F80, 0x7BA6A300, - 0x7BA5D680, 0x7BA50A00, 0x7BA43D80, - 0x7BA37100, 0x7BA2A480, 0x7BA1D800, - 0x7BA10B80, 0x7BA03F00, 0x7B9F7280, - 0x7B9EA600, 0x7B9DD980, 0x7B9D0D00, - 0x7B9C4080, 0x7B9B7400, 0x7B9AA780, - 0x7B99DB00, 0x7B990E80, 0x7B984200, - 0x7B977580, 0x7B96A900, 0x7B95DC80, - 0x7B951000, 0x7B944380, 0x7B937700, - 0x7B92AA80, 0x7B91DE00, 0x7B911180, - 0x7B904500, 0x7B8F7880, 0x7B8EAC00, - 0x7B8DDF80, 0x7B8D1300, 0x7B8C4680, - 0x7B8B7A00, 0x7B8AAD80, 0x7B89E100, - 0x7B891480, 0x7B884800, 0x7B877B80, - 0x7B86AF00, 0x7B85E280, 0x7B851600, - 0x7B844980, 0x7B837D00, 0x7B82B080, - 0x7B81E400, 0x7B811780, 0x7B804B00, - 0x7B7F7E80, 0x7B7EB200, 0x7B7DE580, - 0x7B7D1900, 0x7B7C4C80, 0x7B7B8000, - 0x7B7AB380, 0x7B79E700, 0x7B791A80, - 0x7B784E00, 0x7B778180, 0x7B76B500, - 0x7B75E880, 0x7B751C00, 0x7B744F80, - 0x7B738300, 0x7B72B680, 0x7B71EA00, - 0x7B711D80, 0x7B705100, 0x7B6F8480, - 0x7B6EB800, 0x7B6DEB80, 0x7B6D1F00, - 0x7B6C5280, 0x7B6B8600, 0x7B6AB980, - 0x7B69ED00, 0x7B692080, 0x7B685400, - 0x7B678780, 0x7B66BB00, 0x7B65EE80, - 0x7B652200, 0x7B645580, 0x7B638900, - 0x7B62BC80, 0x7B61F000, 0x7B612380, - 0x7B605700, 0x7B5F8A80, 0x7B5EBE00, - 0x7B5DF180, 0x7B5D2500, 0x7B5C5880, - 0x7B5B8C00, 0x7B5ABF80, 0x7B59F300, - 0x7B592680, 0x7B585A00, 0x7B578D80, - 0x7B56C100, 0x7B55F480, 0x7B552800, - 0x7B545B80, 0x7B538F00, 0x7B52C280, - 0x7B51F600, 0x7B512980, 0x7B505D00, - 0x7B4F9080, 0x7B4EC400, 0x7B4DF780, - 0x7B4D2B00, 0x7B4C5E80, 0x7B4B9200, - 0x7B4AC580, 0x7B49F900, 0x7B492C80, - 0x7B486000, 0x7B479380, 0x7B46C700, - 0x7B45FA80, 0x7B452E00, 0x7B446180, - 0x7B439500, 0x7B42C880, 0x7B41FC00, - 0x7B412F80, 0x7B406300, 0x7B3F9680, - 0x7B3ECA00, 0x7B3DFD80, 0x7B3D3100, - 0x7B3C6480, 0x7B3B9800, 0x7B3ACB80, - 0x7B39FF00, 0x7B393280, 0x7B386600, - 0x7B379980, 0x7B36CD00, 0x7B360080, - 0x7B353400, 0x7B346780, 0x7B339B00, - 0x7B32CE80, 0x7B320200, 0x7B313580, - 0x7B306900, 0x7B2F9C80, 0x7B2ED000, - 0x7B2E0380, 0x7B2D3700, 0x7B2C6A80, - 0x7B2B9E00, 0x7B2AD180, 0x7B2A0500, - 0x7B293880, 0x7B286C00, 0x7B279F80, - 0x7B26D300, 0x7B260680, 0x7B253A00, - 0x7B246D80, 0x7B23A100, 0x7B22D480, - 0x7B220800, 0x7B213B80, 0x7B206F00, - 0x7B1FA280, 0x7B1ED600, 0x7B1E0980, - 0x7B1D3D00, 0x7B1C7080, 0x7B1BA400, - 0x7B1AD780, 0x7B1A0B00, 0x7B193E80, - 0x7B187200, 0x7B17A580, 0x7B16D900, - 0x7B160C80, 0x7B154000, 0x7B147380, - 0x7B13A700, 0x7B12DA80, 0x7B120E00, - 0x7B114180, 0x7B107500, 0x7B0FA880, - 0x7B0EDC00, 0x7B0E0F80, 0x7B0D4300, - 0x7B0C7680, 0x7B0BAA00, 0x7B0ADD80, - 0x7B0A1100, 0x7B094480, 0x7B087800, - 0x7B07AB80, 0x7B06DF00, 0x7B061280, - 0x7B054600, 0x7B047980, 0x7B03AD00, - 0x7B02E080, 0x7B021400, 0x7B014780, - 0x7B007B00, 0x7AFFAE80, 0x7AFEE200, - 0x7AFE1580, 0x7AFD4900, 0x7AFC7C80, - 0x7AFBB000, 0x7AFAE380, 0x7AFA1700, - 0x7AF94A80, 0x7AF87E00, 0x7AF7B180, - 0x7AF6E500, 0x7AF61880, 0x7AF54C00, - 0x7AF47F80, 0x7AF3B300, 0x7AF2E680, - 0x7AF21A00, 0x7AF14D80, 0x7AF08100, - 0x7AEFB480, 0x7AEEE800, 0x7AEE1B80, - 0x7AED4F00, 0x7AEC8280, 0x7AEBB600, - 0x7AEAE980, 0x7AEA1D00, 0x7AE95080, - 0x7AE88400, 0x7AE7B780, 0x7AE6EB00, - 0x7AE61E80, 0x7AE55200, 0x7AE48580, - 0x7AE3B900, 0x7AE2EC80, 0x7AE22000, - 0x7AE15380, 0x7AE08700, 0x7ADFBA80, - 0x7ADEEE00, 0x7ADE2180, 0x7ADD5500, - 0x7ADC8880, 0x7ADBBC00, 0x7ADAEF80, - 0x7ADA2300, 0x7AD95680, 0x7AD88A00, - 0x7AD7BD80, 0x7AD6F100, 0x7AD62480, - 0x7AD55800, 0x7AD48B80, 0x7AD3BF00, - 0x7AD2F280, 0x7AD22600, 0x7AD15980, - 0x7AD08D00, 0x7ACFC080, 0x7ACEF400, - 0x7ACE2780, 0x7ACD5B00, 0x7ACC8E80, - 0x7ACBC200, 0x7ACAF580, 0x7ACA2900, - 0x7AC95C80, 0x7AC89000, 0x7AC7C380, - 0x7AC6F700, 0x7AC62A80, 0x7AC55E00, - 0x7AC49180, 0x7AC3C500, 0x7AC2F880, - 0x7AC22C00, 0x7AC15F80, 0x7AC09300, - 0x7ABFC680, 0x7ABEFA00, 0x7ABE2D80, - 0x7ABD6100, 0x7ABC9480, 0x7ABBC800, - 0x7ABAFB80, 0x7ABA2F00, 0x7AB96280, - 0x7AB89600, 0x7AB7C980, 0x7AB6FD00, - 0x7AB63080, 0x7AB56400, 0x7AB49780, - 0x7AB3CB00, 0x7AB2FE80, 0x7AB23200, - 0x7AB16580, 0x7AB09900, 0x7AAFCC80, - 0x7AAF0000, 0x7AAE3380, 0x7AAD6700, - 0x7AAC9A80, 0x7AABCE00, 0x7AAB0180, - 0x7AAA3500, 0x7AA96880, 0x7AA89C00, - 0x7AA7CF80, 0x7AA70300, 0x7AA63680, - 0x7AA56A00, 0x7AA49D80, 0x7AA3D100, - 0x7AA30480, 0x7AA23800, 0x7AA16B80, - 0x7AA09F00, 0x7A9FD280, 0x7A9F0600, - 0x7A9E3980, 0x7A9D6D00, 0x7A9CA080, - 0x7A9BD400, 0x7A9B0780, 0x7A9A3B00, - 0x7A996E80, 0x7A98A200, 0x7A97D580, - 0x7A970900, 0x7A963C80, 0x7A957000, - 0x7A94A380, 0x7A93D700, 0x7A930A80, - 0x7A923E00, 0x7A917180, 0x7A90A500, - 0x7A8FD880, 0x7A8F0C00, 0x7A8E3F80, - 0x7A8D7300, 0x7A8CA680, 0x7A8BDA00, - 0x7A8B0D80, 0x7A8A4100, 0x7A897480, - 0x7A88A800, 0x7A87DB80, 0x7A870F00, - 0x7A864280, 0x7A857600, 0x7A84A980, - 0x7A83DD00, 0x7A831080, 0x7A824400, - 0x7A817780, 0x7A80AB00, 0x7A7FDE80, - 0x7A7F1200, 0x7A7E4580, 0x7A7D7900, - 0x7A7CAC80, 0x7A7BE000, 0x7A7B1380, - 0x7A7A4700, 0x7A797A80, 0x7A78AE00, - 0x7A77E180, 0x7A771500, 0x7A764880, - 0x7A757C00, 0x7A74AF80, 0x7A73E300, - 0x7A731680, 0x7A724A00, 0x7A717D80, - 0x7A70B100, 0x7A6FE480, 0x7A6F1800, - 0x7A6E4B80, 0x7A6D7F00, 0x7A6CB280, - 0x7A6BE600, 0x7A6B1980, 0x7A6A4D00, - 0x7A698080, 0x7A68B400, 0x7A67E780, - 0x7A671B00, 0x7A664E80, 0x7A658200, - 0x7A64B580, 0x7A63E900, 0x7A631C80, - 0x7A625000, 0x7A618380, 0x7A60B700, - 0x7A5FEA80, 0x7A5F1E00, 0x7A5E5180, - 0x7A5D8500, 0x7A5CB880, 0x7A5BEC00, - 0x7A5B1F80, 0x7A5A5300, 0x7A598680, - 0x7A58BA00, 0x7A57ED80, 0x7A572100, - 0x7A565480, 0x7A558800, 0x7A54BB80, - 0x7A53EF00, 0x7A532280, 0x7A525600, - 0x7A518980, 0x7A50BD00, 0x7A4FF080, - 0x7A4F2400, 0x7A4E5780, 0x7A4D8B00, - 0x7A4CBE80, 0x7A4BF200, 0x7A4B2580, - 0x7A4A5900, 0x7A498C80, 0x7A48C000, - 0x7A47F380, 0x7A472700, 0x7A465A80, - 0x7A458E00, 0x7A44C180, 0x7A43F500, - 0x7A432880, 0x7A425C00, 0x7A418F80, - 0x7A40C300, 0x7A3FF680, 0x7A3F2A00, - 0x7A3E5D80, 0x7A3D9100, 0x7A3CC480, - 0x7A3BF800, 0x7A3B2B80, 0x7A3A5F00, - 0x7A399280, 0x7A38C600, 0x7A37F980, - 0x7A372D00, 0x7A366080, 0x7A359400, - 0x7A34C780, 0x7A33FB00, 0x7A332E80, - 0x7A326200, 0x7A319580, 0x7A30C900, - 0x7A2FFC80, 0x7A2F3000, 0x7A2E6380, - 0x7A2D9700, 0x7A2CCA80, 0x7A2BFE00, - 0x7A2B3180, 0x7A2A6500, 0x7A299880, - 0x7A28CC00, 0x7A27FF80, 0x7A273300, - 0x7A266680, 0x7A259A00, 0x7A24CD80, - 0x7A240100, 0x7A233480, 0x7A226800, - 0x7A219B80, 0x7A20CF00, 0x7A200280, - 0x7A1F3600, 0x7A1E6980, 0x7A1D9D00, - 0x7A1CD080, 0x7A1C0400, 0x7A1B3780, - 0x7A1A6B00, 0x7A199E80, 0x7A18D200, - 0x7A180580, 0x7A173900, 0x7A166C80, - 0x7A15A000, 0x7A14D380, 0x7A140700, - 0x7A133A80, 0x7A126E00, 0x7A11A180, - 0x7A10D500, 0x7A100880, 0x7A0F3C00, - 0x7A0E6F80, 0x7A0DA300, 0x7A0CD680, - 0x7A0C0A00, 0x7A0B3D80, 0x7A0A7100, - 0x7A09A480, 0x7A08D800, 0x7A080B80, - 0x7A073F00, 0x7A067280, 0x7A05A600, - 0x7A04D980, 0x7A040D00, 0x7A034080, - 0x7A027400, 0x7A01A780, 0x7A00DB00, - 0x7A000E80, 0x79FF4200, 0x79FE7580, - 0x79FDA900, 0x79FCDC80, 0x79FC1000, - 0x79FB4380, 0x79FA7700, 0x79F9AA80, - 0x79F8DE00, 0x79F81180, 0x79F74500, - 0x79F67880, 0x79F5AC00, 0x79F4DF80, - 0x79F41300, 0x79F34680, 0x79F27A00, - 0x79F1AD80, 0x79F0E100, 0x79F01480, - 0x79EF4800, 0x79EE7B80, 0x79EDAF00, - 0x79ECE280, 0x79EC1600, 0x79EB4980, - 0x79EA7D00, 0x79E9B080, 0x79E8E400, - 0x79E81780, 0x79E74B00, 0x79E67E80, - 0x79E5B200, 0x79E4E580, 0x79E41900, - 0x79E34C80, 0x79E28000, 0x79E1B380, - 0x79E0E700, 0x79E01A80, 0x79DF4E00, - 0x79DE8180, 0x79DDB500, 0x79DCE880, - 0x79DC1C00, 0x79DB4F80, 0x79DA8300, - 0x79D9B680, 0x79D8EA00, 0x79D81D80, - 0x79D75100, 0x79D68480, 0x79D5B800, - 0x79D4EB80, 0x79D41F00, 0x79D35280, - 0x79D28600, 0x79D1B980, 0x79D0ED00, - 0x79D02080, 0x79CF5400, 0x79CE8780, - 0x79CDBB00, 0x79CCEE80, 0x79CC2200, - 0x79CB5580, 0x79CA8900, 0x79C9BC80, - 0x79C8F000, 0x79C82380, 0x79C75700, - 0x79C68A80, 0x79C5BE00, 0x79C4F180, - 0x79C42500, 0x79C35880, 0x79C28C00, - 0x79C1BF80, 0x79C0F300, 0x79C02680, - 0x79BF5A00, 0x79BE8D80, 0x79BDC100, - 0x79BCF480, 0x79BC2800, 0x79BB5B80, - 0x79BA8F00, 0x79B9C280, 0x79B8F600, - 0x79B82980, 0x79B75D00, 0x79B69080, - 0x79B5C400, 0x79B4F780, 0x79B42B00, - 0x79B35E80, 0x79B29200, 0x79B1C580, - 0x79B0F900, 0x79B02C80, 0x79AF6000, - 0x79AE9380, 0x79ADC700, 0x79ACFA80, - 0x79AC2E00, 0x79AB6180, 0x79AA9500, - 0x79A9C880, 0x79A8FC00, 0x79A82F80, - 0x79A76300, 0x79A69680, 0x79A5CA00, - 0x79A4FD80, 0x79A43100, 0x79A36480, - 0x79A29800, 0x79A1CB80, 0x79A0FF00, - 0x79A03280, 0x799F6600, 0x799E9980, - 0x799DCD00, 0x799D0080, 0x799C3400, - 0x799B6780, 0x799A9B00, 0x7999CE80, - 0x79990200, 0x79983580, 0x79976900, - 0x79969C80, 0x7995D000, 0x79950380, - 0x79943700, 0x79936A80, 0x79929E00, - 0x7991D180, 0x79910500, 0x79903880, - 0x798F6C00, 0x798E9F80, 0x798DD300, - 0x798D0680, 0x798C3A00, 0x798B6D80, - 0x798AA100, 0x7989D480, 0x79890800, - 0x79883B80, 0x79876F00, 0x7986A280, - 0x7985D600, 0x79850980, 0x79843D00, - 0x79837080, 0x7982A400, 0x7981D780, - 0x79810B00, 0x79803E80, 0x797F7200, - 0x797EA580, 0x797DD900, 0x797D0C80, - 0x797C4000, 0x797B7380, 0x797AA700, - 0x7979DA80, 0x79790E00, 0x79784180, - 0x79777500, 0x7976A880, 0x7975DC00, - 0x79750F80, 0x79744300, 0x79737680, - 0x7972AA00, 0x7971DD80, 0x79711100, - 0x79704480, 0x796F7800, 0x796EAB80, - 0x796DDF00, 0x796D1280, 0x796C4600, - 0x796B7980, 0x796AAD00, 0x7969E080, - 0x79691400, 0x79684780, 0x79677B00, - 0x7966AE80, 0x7965E200, 0x79651580, - 0x79644900, 0x79637C80, 0x7962B000, - 0x7961E380, 0x79611700, 0x79604A80, - 0x795F7E00, 0x795EB180, 0x795DE500, - 0x795D1880, 0x795C4C00, 0x795B7F80, - 0x795AB300, 0x7959E680, 0x79591A00, - 0x79584D80, 0x79578100, 0x7956B480, - 0x7955E800, 0x79551B80, 0x79544F00, - 0x79538280, 0x7952B600, 0x7951E980, - 0x79511D00, 0x79505080, 0x794F8400, - 0x794EB780, 0x794DEB00, 0x794D1E80, - 0x794C5200, 0x794B8580, 0x794AB900, - 0x7949EC80, 0x79492000, 0x79485380, - 0x79478700, 0x7946BA80, 0x7945EE00, - 0x79452180, 0x79445500, 0x79438880, - 0x7942BC00, 0x7941EF80, 0x79412300, - 0x79405680, 0x793F8A00, 0x793EBD80, - 0x793DF100, 0x793D2480, 0x793C5800, - 0x793B8B80, 0x793ABF00, 0x7939F280, - 0x79392600, 0x79385980, 0x79378D00, - 0x7936C080, 0x7935F400, 0x79352780, - 0x79345B00, 0x79338E80, 0x7932C200, - 0x7931F580, 0x79312900, 0x79305C80, - 0x792F9000, 0x792EC380, 0x792DF700, - 0x792D2A80, 0x792C5E00, 0x792B9180, - 0x792AC500, 0x7929F880, 0x79292C00, - 0x79285F80, 0x79279300, 0x7926C680, - 0x7925FA00, 0x79252D80, 0x79246100, - 0x79239480, 0x7922C800, 0x7921FB80, - 0x79212F00, 0x79206280, 0x791F9600, - 0x791EC980, 0x791DFD00, 0x791D3080, - 0x791C6400, 0x791B9780, 0x791ACB00, - 0x7919FE80, 0x79193200, 0x79186580, - 0x79179900, 0x7916CC80, 0x79160000, - 0x79153380, 0x79146700, 0x79139A80, - 0x7912CE00, 0x79120180, 0x79113500, - 0x79106880, 0x790F9C00, 0x790ECF80, - 0x790E0300, 0x790D3680, 0x790C6A00, - 0x790B9D80, 0x790AD100, 0x790A0480, - 0x79093800, 0x79086B80, 0x79079F00, - 0x7906D280, 0x79060600, 0x79053980, - 0x79046D00, 0x7903A080, 0x7902D400, - 0x79020780, 0x79013B00, 0x79006E80, - 0x78FFA200, 0x78FED580, 0x78FE0900, - 0x78FD3C80, 0x78FC7000, 0x78FBA380, - 0x78FAD700, 0x78FA0A80, 0x78F93E00, - 0x78F87180, 0x78F7A500, 0x78F6D880, - 0x78F60C00, 0x78F53F80, 0x78F47300, - 0x78F3A680, 0x78F2DA00, 0x78F20D80, - 0x78F14100, 0x78F07480, 0x78EFA800, - 0x78EEDB80, 0x78EE0F00, 0x78ED4280, - 0x78EC7600, 0x78EBA980, 0x78EADD00, - 0x78EA1080, 0x78E94400, 0x78E87780, - 0x78E7AB00, 0x78E6DE80, 0x78E61200, - 0x78E54580, 0x78E47900, 0x78E3AC80, - 0x78E2E000, 0x78E21380, 0x78E14700, - 0x78E07A80, 0x78DFAE00, 0x78DEE180, - 0x78DE1500, 0x78DD4880, 0x78DC7C00, - 0x78DBAF80, 0x78DAE300, 0x78DA1680, - 0x78D94A00, 0x78D87D80, 0x78D7B100, - 0x78D6E480, 0x78D61800, 0x78D54B80, - 0x78D47F00, 0x78D3B280, 0x78D2E600, - 0x78D21980, 0x78D14D00, 0x78D08080, - 0x78CFB400, 0x78CEE780, 0x78CE1B00, - 0x78CD4E80, 0x78CC8200, 0x78CBB580, - 0x78CAE900, 0x78CA1C80, 0x78C95000, - 0x78C88380, 0x78C7B700, 0x78C6EA80, - 0x78C61E00, 0x78C55180, 0x78C48500, - 0x78C3B880, 0x78C2EC00, 0x78C21F80, - 0x78C15300, 0x78C08680, 0x78BFBA00, - 0x78BEED80, 0x78BE2100, 0x78BD5480, - 0x78BC8800, 0x78BBBB80, 0x78BAEF00, - 0x78BA2280, 0x78B95600, 0x78B88980, - 0x78B7BD00, 0x78B6F080, 0x78B62400, - 0x78B55780, 0x78B48B00, 0x78B3BE80, - 0x78B2F200, 0x78B22580, 0x78B15900, - 0x78B08C80, 0x78AFC000, 0x78AEF380, - 0x78AE2700, 0x78AD5A80, 0x78AC8E00, - 0x78ABC180, 0x78AAF500, 0x78AA2880, - 0x78A95C00, 0x78A88F80, 0x78A7C300, - 0x78A6F680, 0x78A62A00, 0x78A55D80, - 0x78A49100, 0x78A3C480, 0x78A2F800, - 0x78A22B80, 0x78A15F00, 0x78A09280, - 0x789FC600, 0x789EF980, 0x789E2D00, - 0x789D6080, 0x789C9400, 0x789BC780, - 0x789AFB00, 0x789A2E80, 0x78996200, - 0x78989580, 0x7897C900, 0x7896FC80, - 0x78963000, 0x78956380, 0x78949700, - 0x7893CA80, 0x7892FE00, 0x78923180, - 0x78916500, 0x78909880, 0x788FCC00, - 0x788EFF80, 0x788E3300, 0x788D6680, - 0x788C9A00, 0x788BCD80, 0x788B0100, - 0x788A3480, 0x78896800, 0x78889B80, - 0x7887CF00, 0x78870280, 0x78863600, - 0x78856980, 0x78849D00, 0x7883D080, - 0x78830400, 0x78823780, 0x78816B00, - 0x78809E80, 0x787FD200, 0x787F0580, - 0x787E3900, 0x787D6C80, 0x787CA000, - 0x787BD380, 0x787B0700, 0x787A3A80, - 0x78796E00, 0x7878A180, 0x7877D500, - 0x78770880, 0x78763C00, 0x78756F80, - 0x7874A300, 0x7873D680, 0x78730A00, - 0x78723D80, 0x78717100, 0x7870A480, - 0x786FD800, 0x786F0B80, 0x786E3F00, - 0x786D7280, 0x786CA600, 0x786BD980, - 0x786B0D00, 0x786A4080, 0x78697400, - 0x7868A780, 0x7867DB00, 0x78670E80, - 0x78664200, 0x78657580, 0x7864A900, - 0x7863DC80, 0x78631000, 0x78624380, - 0x78617700, 0x7860AA80, 0x785FDE00, - 0x785F1180, 0x785E4500, 0x785D7880, - 0x785CAC00, 0x785BDF80, 0x785B1300, - 0x785A4680, 0x78597A00, 0x7858AD80, - 0x7857E100, 0x78571480, 0x78564800, - 0x78557B80, 0x7854AF00, 0x7853E280, - 0x78531600, 0x78524980, 0x78517D00, - 0x7850B080, 0x784FE400, 0x784F1780, - 0x784E4B00, 0x784D7E80, 0x784CB200, - 0x784BE580, 0x784B1900, 0x784A4C80, - 0x78498000, 0x7848B380, 0x7847E700, - 0x78471A80, 0x78464E00, 0x78458180, - 0x7844B500, 0x7843E880, 0x78431C00, - 0x78424F80, 0x78418300, 0x7840B680, - 0x783FEA00, 0x783F1D80, 0x783E5100, - 0x783D8480, 0x783CB800, 0x783BEB80, - 0x783B1F00, 0x783A5280, 0x78398600, - 0x7838B980, 0x7837ED00, 0x78372080, - 0x78365400, 0x78358780, 0x7834BB00, - 0x7833EE80, 0x78332200, 0x78325580, - 0x78318900, 0x7830BC80, 0x782FF000, - 0x782F2380, 0x782E5700, 0x782D8A80, - 0x782CBE00, 0x782BF180, 0x782B2500, - 0x782A5880, 0x78298C00, 0x7828BF80, - 0x7827F300, 0x78272680, 0x78265A00, - 0x78258D80, 0x7824C100, 0x7823F480, - 0x78232800, 0x78225B80, 0x78218F00, - 0x7820C280, 0x781FF600, 0x781F2980, - 0x781E5D00, 0x781D9080, 0x781CC400, - 0x781BF780, 0x781B2B00, 0x781A5E80, - 0x78199200, 0x7818C580, 0x7817F900, - 0x78172C80, 0x78166000, 0x78159380, - 0x7814C700, 0x7813FA80, 0x78132E00, - 0x78126180, 0x78119500, 0x7810C880, - 0x780FFC00, 0x780F2F80, 0x780E6300, - 0x780D9680, 0x780CCA00, 0x780BFD80, - 0x780B3100, 0x780A6480, 0x78099800, - 0x7808CB80, 0x7807FF00, 0x78073280, - 0x78066600, 0x78059980, 0x7804CD00, - 0x78040080, 0x78033400, 0x78026780, - 0x78019B00, 0x7800CE80, 0x78000200, - 0x77FF3580, 0x77FE6900, 0x77FD9C80, - 0x77FCD000, 0x77FC0380, 0x77FB3700, - 0x77FA6A80, 0x77F99E00, 0x77F8D180, - 0x77F80500, 0x77F73880, 0x77F66C00, - 0x77F59F80, 0x77F4D300, 0x77F40680, - 0x77F33A00, 0x77F26D80, 0x77F1A100, - 0x77F0D480, 0x77F00800, 0x77EF3B80, - 0x77EE6F00, 0x77EDA280, 0x77ECD600, - 0x77EC0980, 0x77EB3D00, 0x77EA7080, - 0x77E9A400, 0x77E8D780, 0x77E80B00, - 0x77E73E80, 0x77E67200, 0x77E5A580, - 0x77E4D900, 0x77E40C80, 0x77E34000, - 0x77E27380, 0x77E1A700, 0x77E0DA80, - 0x77E00E00, 0x77DF4180, 0x77DE7500, - 0x77DDA880, 0x77DCDC00, 0x77DC0F80, - 0x77DB4300, 0x77DA7680, 0x77D9AA00, - 0x77D8DD80, 0x77D81100, 0x77D74480, - 0x77D67800, 0x77D5AB80, 0x77D4DF00, - 0x77D41280, 0x77D34600, 0x77D27980, - 0x77D1AD00, 0x77D0E080, 0x77D01400, - 0x77CF4780, 0x77CE7B00, 0x77CDAE80, - 0x77CCE200, 0x77CC1580, 0x77CB4900, - 0x77CA7C80, 0x77C9B000, 0x77C8E380, - 0x77C81700, 0x77C74A80, 0x77C67E00, - 0x77C5B180, 0x77C4E500, 0x77C41880, - 0x77C34C00, 0x77C27F80, 0x77C1B300, - 0x77C0E680, 0x77C01A00, 0x77BF4D80, - 0x77BE8100, 0x77BDB480, 0x77BCE800, - 0x77BC1B80, 0x77BB4F00, 0x77BA8280, - 0x77B9B600, 0x77B8E980, 0x77B81D00, - 0x77B75080, 0x77B68400, 0x77B5B780, - 0x77B4EB00, 0x77B41E80, 0x77B35200, - 0x77B28580, 0x77B1B900, 0x77B0EC80, - 0x77B02000, 0x77AF5380, 0x77AE8700, - 0x77ADBA80, 0x77ACEE00, 0x77AC2180, - 0x77AB5500, 0x77AA8880, 0x77A9BC00, - 0x77A8EF80, 0x77A82300, 0x77A75680, - 0x77A68A00, 0x77A5BD80, 0x77A4F100, - 0x77A42480, 0x77A35800, 0x77A28B80, - 0x77A1BF00, 0x77A0F280, 0x77A02600, - 0x779F5980, 0x779E8D00, 0x779DC080, - 0x779CF400, 0x779C2780, 0x779B5B00, - 0x779A8E80, 0x7799C200, 0x7798F580, - 0x77982900, 0x77975C80, 0x77969000, - 0x7795C380, 0x7794F700, 0x77942A80, - 0x77935E00, 0x77929180, 0x7791C500, - 0x7790F880, 0x77902C00, 0x778F5F80, - 0x778E9300, 0x778DC680, 0x778CFA00, - 0x778C2D80, 0x778B6100, 0x778A9480, - 0x7789C800, 0x7788FB80, 0x77882F00, - 0x77876280, 0x77869600, 0x7785C980, - 0x7784FD00, 0x77843080, 0x77836400, - 0x77829780, 0x7781CB00, 0x7780FE80, - 0x77803200, 0x777F6580, 0x777E9900, - 0x777DCC80, 0x777D0000, 0x777C3380, - 0x777B6700, 0x777A9A80, 0x7779CE00, - 0x77790180, 0x77783500, 0x77776880, - 0x77769C00, 0x7775CF80, 0x77750300, - 0x77743680, 0x77736A00, 0x77729D80, - 0x7771D100, 0x77710480, 0x77703800, - 0x776F6B80, 0x776E9F00, 0x776DD280, - 0x776D0600, 0x776C3980, 0x776B6D00, - 0x776AA080, 0x7769D400, 0x77690780, - 0x77683B00, 0x77676E80, 0x7766A200, - 0x7765D580, 0x77650900, 0x77643C80, - 0x77637000, 0x7762A380, 0x7761D700, - 0x77610A80, 0x77603E00, 0x775F7180, - 0x775EA500, 0x775DD880, 0x775D0C00, - 0x775C3F80, 0x775B7300, 0x775AA680, - 0x7759DA00, 0x77590D80, 0x77584100, - 0x77577480, 0x7756A800, 0x7755DB80, - 0x77550F00, 0x77544280, 0x77537600, - 0x7752A980, 0x7751DD00, 0x77511080, - 0x77504400, 0x774F7780, 0x774EAB00, - 0x774DDE80, 0x774D1200, 0x774C4580, - 0x774B7900, 0x774AAC80, 0x7749E000, - 0x77491380, 0x77484700, 0x77477A80, - 0x7746AE00, 0x7745E180, 0x77451500, - 0x77444880, 0x77437C00, 0x7742AF80, - 0x7741E300, 0x77411680, 0x77404A00, - 0x773F7D80, 0x773EB100, 0x773DE480, - 0x773D1800, 0x773C4B80, 0x773B7F00, - 0x773AB280, 0x7739E600, 0x77391980, - 0x77384D00, 0x77378080, 0x7736B400, - 0x7735E780, 0x77351B00, 0x77344E80, - 0x77338200, 0x7732B580, 0x7731E900, - 0x77311C80, 0x77305000, 0x772F8380, - 0x772EB700, 0x772DEA80, 0x772D1E00, - 0x772C5180, 0x772B8500, 0x772AB880, - 0x7729EC00, 0x77291F80, 0x77285300, - 0x77278680, 0x7726BA00, 0x7725ED80, - 0x77252100, 0x77245480, 0x77238800, - 0x7722BB80, 0x7721EF00, 0x77212280, - 0x77205600, 0x771F8980, 0x771EBD00, - 0x771DF080, 0x771D2400, 0x771C5780, - 0x771B8B00, 0x771ABE80, 0x7719F200, - 0x77192580, 0x77185900, 0x77178C80, - 0x7716C000, 0x7715F380, 0x77152700, - 0x77145A80, 0x77138E00, 0x7712C180, - 0x7711F500, 0x77112880, 0x77105C00, - 0x770F8F80, 0x770EC300, 0x770DF680, - 0x770D2A00, 0x770C5D80, 0x770B9100, - 0x770AC480, 0x7709F800, 0x77092B80, - 0x77085F00, 0x77079280, 0x7706C600, - 0x7705F980, 0x77052D00, 0x77046080, - 0x77039400, 0x7702C780, 0x7701FB00, - 0x77012E80, 0x77006200, 0x76FF9580, - 0x76FEC900, 0x76FDFC80, 0x76FD3000, - 0x76FC6380, 0x76FB9700, 0x76FACA80, - 0x76F9FE00, 0x76F93180, 0x76F86500, - 0x76F79880, 0x76F6CC00, 0x76F5FF80, - 0x76F53300, 0x76F46680, 0x76F39A00, - 0x76F2CD80, 0x76F20100, 0x76F13480, - 0x76F06800, 0x76EF9B80, 0x76EECF00, - 0x76EE0280, 0x76ED3600, 0x76EC6980, - 0x76EB9D00, 0x76EAD080, 0x76EA0400, - 0x76E93780, 0x76E86B00, 0x76E79E80, - 0x76E6D200, 0x76E60580, 0x76E53900, - 0x76E46C80, 0x76E3A000, 0x76E2D380, - 0x76E20700, 0x76E13A80, 0x76E06E00, - 0x76DFA180, 0x76DED500, 0x76DE0880, - 0x76DD3C00, 0x76DC6F80, 0x76DBA300, - 0x76DAD680, 0x76DA0A00, 0x76D93D80, - 0x76D87100, 0x76D7A480, 0x76D6D800, - 0x76D60B80, 0x76D53F00, 0x76D47280, - 0x76D3A600, 0x76D2D980, 0x76D20D00, - 0x76D14080, 0x76D07400, 0x76CFA780, - 0x76CEDB00, 0x76CE0E80, 0x76CD4200, - 0x76CC7580, 0x76CBA900, 0x76CADC80, - 0x76CA1000, 0x76C94380, 0x76C87700, - 0x76C7AA80, 0x76C6DE00, 0x76C61180, - 0x76C54500, 0x76C47880, 0x76C3AC00, - 0x76C2DF80, 0x76C21300, 0x76C14680, - 0x76C07A00, 0x76BFAD80, 0x76BEE100, - 0x76BE1480, 0x76BD4800, 0x76BC7B80, - 0x76BBAF00, 0x76BAE280, 0x76BA1600, - 0x76B94980, 0x76B87D00, 0x76B7B080, - 0x76B6E400, 0x76B61780, 0x76B54B00, - 0x76B47E80, 0x76B3B200, 0x76B2E580, - 0x76B21900, 0x76B14C80, 0x76B08000, - 0x76AFB380, 0x76AEE700, 0x76AE1A80, - 0x76AD4E00, 0x76AC8180, 0x76ABB500, - 0x76AAE880, 0x76AA1C00, 0x76A94F80, - 0x76A88300, 0x76A7B680, 0x76A6EA00, - 0x76A61D80, 0x76A55100, 0x76A48480, - 0x76A3B800, 0x76A2EB80, 0x76A21F00, - 0x76A15280, 0x76A08600, 0x769FB980, - 0x769EED00, 0x769E2080, 0x769D5400, - 0x769C8780, 0x769BBB00, 0x769AEE80, - 0x769A2200, 0x76995580, 0x76988900, - 0x7697BC80, 0x7696F000, 0x76962380, - 0x76955700, 0x76948A80, 0x7693BE00, - 0x7692F180, 0x76922500, 0x76915880, - 0x76908C00, 0x768FBF80, 0x768EF300, - 0x768E2680, 0x768D5A00, 0x768C8D80, - 0x768BC100, 0x768AF480, 0x768A2800, - 0x76895B80, 0x76888F00, 0x7687C280, - 0x7686F600, 0x76862980, 0x76855D00, - 0x76849080, 0x7683C400, 0x7682F780, - 0x76822B00, 0x76815E80, 0x76809200, - 0x767FC580, 0x767EF900, 0x767E2C80, - 0x767D6000, 0x767C9380, 0x767BC700, - 0x767AFA80, 0x767A2E00, 0x76796180, - 0x76789500, 0x7677C880, 0x7676FC00, - 0x76762F80, 0x76756300, 0x76749680, - 0x7673CA00, 0x7672FD80, 0x76723100, - 0x76716480, 0x76709800, 0x766FCB80, - 0x766EFF00, 0x766E3280, 0x766D6600, - 0x766C9980, 0x766BCD00, 0x766B0080, - 0x766A3400, 0x76696780, 0x76689B00, - 0x7667CE80, 0x76670200, 0x76663580, - 0x76656900, 0x76649C80, 0x7663D000, - 0x76630380, 0x76623700, 0x76616A80, - 0x76609E00, 0x765FD180, 0x765F0500, - 0x765E3880, 0x765D6C00, 0x765C9F80, - 0x765BD300, 0x765B0680, 0x765A3A00, - 0x76596D80, 0x7658A100, 0x7657D480, - 0x76570800, 0x76563B80, 0x76556F00, - 0x7654A280, 0x7653D600, 0x76530980, - 0x76523D00, 0x76517080, 0x7650A400, - 0x764FD780, 0x764F0B00, 0x764E3E80, - 0x764D7200, 0x764CA580, 0x764BD900, - 0x764B0C80, 0x764A4000, 0x76497380, - 0x7648A700, 0x7647DA80, 0x76470E00, - 0x76464180, 0x76457500, 0x7644A880, - 0x7643DC00, 0x76430F80, 0x76424300, - 0x76417680, 0x7640AA00, 0x763FDD80, - 0x763F1100, 0x763E4480, 0x763D7800, - 0x763CAB80, 0x763BDF00, 0x763B1280, - 0x763A4600, 0x76397980, 0x7638AD00, - 0x7637E080, 0x76371400, 0x76364780, - 0x76357B00, 0x7634AE80, 0x7633E200, - 0x76331580, 0x76324900, 0x76317C80, - 0x7630B000, 0x762FE380, 0x762F1700, - 0x762E4A80, 0x762D7E00, 0x762CB180, - 0x762BE500, 0x762B1880, 0x762A4C00, - 0x76297F80, 0x7628B300, 0x7627E680, - 0x76271A00, 0x76264D80, 0x76258100, - 0x7624B480, 0x7623E800, 0x76231B80, - 0x76224F00, 0x76218280, 0x7620B600, - 0x761FE980, 0x761F1D00, 0x761E5080, - 0x761D8400, 0x761CB780, 0x761BEB00, - 0x761B1E80, 0x761A5200, 0x76198580, - 0x7618B900, 0x7617EC80, 0x76172000, - 0x76165380, 0x76158700, 0x7614BA80, - 0x7613EE00, 0x76132180, 0x76125500, - 0x76118880, 0x7610BC00, 0x760FEF80, - 0x760F2300, 0x760E5680, 0x760D8A00, - 0x760CBD80, 0x760BF100, 0x760B2480, - 0x760A5800, 0x76098B80, 0x7608BF00, - 0x7607F280, 0x76072600, 0x76065980, - 0x76058D00, 0x7604C080, 0x7603F400, - 0x76032780, 0x76025B00, 0x76018E80, - 0x7600C200, 0x75FFF580, 0x75FF2900, - 0x75FE5C80, 0x75FD9000, 0x75FCC380, - 0x75FBF700, 0x75FB2A80, 0x75FA5E00, - 0x75F99180, 0x75F8C500, 0x75F7F880, - 0x75F72C00, 0x75F65F80, 0x75F59300, - 0x75F4C680, 0x75F3FA00, 0x75F32D80, - 0x75F26100, 0x75F19480, 0x75F0C800, - 0x75EFFB80, 0x75EF2F00, 0x75EE6280, - 0x75ED9600, 0x75ECC980, 0x75EBFD00, - 0x75EB3080, 0x75EA6400, 0x75E99780, - 0x75E8CB00, 0x75E7FE80, 0x75E73200, - 0x75E66580, 0x75E59900, 0x75E4CC80, - 0x75E40000, 0x75E33D80, 0x75E27B00, - 0x75E1B880, 0x75E0F600, 0x75E03380, - 0x75DF7100, 0x75DEAE80, 0x75DDEC00, - 0x75DD2980, 0x75DC6700, 0x75DBA480, - 0x75DAE200, 0x75DA1F80, 0x75D95D00, - 0x75D89A80, 0x75D7D800, 0x75D71580, - 0x75D65300, 0x75D59080, 0x75D4CE00, - 0x75D40B80, 0x75D34900, 0x75D28680, - 0x75D1C400, 0x75D10180, 0x75D03F00, - 0x75CF7C80, 0x75CEBA00, 0x75CDF780, - 0x75CD3500, 0x75CC7280, 0x75CBB000, - 0x75CAED80, 0x75CA2B00, 0x75C96880, - 0x75C8A600, 0x75C7E380, 0x75C72100, - 0x75C65E80, 0x75C59C00, 0x75C4D980, - 0x75C41700, 0x75C35480, 0x75C29200, - 0x75C1CF80, 0x75C10D00, 0x75C04A80, - 0x75BF8800, 0x75BEC580, 0x75BE0300, - 0x75BD4080, 0x75BC7E00, 0x75BBBB80, - 0x75BAF900, 0x75BA3680, 0x75B97400, - 0x75B8B180, 0x75B7EF00, 0x75B72C80, - 0x75B66A00, 0x75B5A780, 0x75B4E500, - 0x75B42280, 0x75B36000, 0x75B29D80, - 0x75B1DB00, 0x75B11880, 0x75B05600, - 0x75AF9380, 0x75AED100, 0x75AE0E80, - 0x75AD4C00, 0x75AC8980, 0x75ABC700, - 0x75AB0480, 0x75AA4200, 0x75A97F80, - 0x75A8BD00, 0x75A7FA80, 0x75A73800, - 0x75A67580, 0x75A5B300, 0x75A4F080, - 0x75A42E00, 0x75A36B80, 0x75A2A900, - 0x75A1E680, 0x75A12400, 0x75A06180, - 0x759F9F00, 0x759EDC80, 0x759E1A00, - 0x759D5780, 0x759C9500, 0x759BD280, - 0x759B1000, 0x759A4D80, 0x75998B00, - 0x7598C880, 0x75980600, 0x75974380, - 0x75968100, 0x7595BE80, 0x7594FC00, - 0x75943980, 0x75937700, 0x7592B480, - 0x7591F200, 0x75912F80, 0x75906D00, - 0x758FAA80, 0x758EE800, 0x758E2580, - 0x758D6300, 0x758CA080, 0x758BDE00, - 0x758B1B80, 0x758A5900, 0x75899680, - 0x7588D400, 0x75881180, 0x75874F00, - 0x75868C80, 0x7585CA00, 0x75850780, - 0x75844500, 0x75838280, 0x7582C000, - 0x7581FD80, 0x75813B00, 0x75807880, - 0x757FB600, 0x757EF380, 0x757E3100, - 0x757D6E80, 0x757CAC00, 0x757BE980, - 0x757B2700, 0x757A6480, 0x7579A200, - 0x7578DF80, 0x75781D00, 0x75775A80, - 0x75769800, 0x7575D580, 0x75751300, - 0x75745080, 0x75738E00, 0x7572CB80, - 0x75720900, 0x75714680, 0x75708400, - 0x756FC180, 0x756EFF00, 0x756E3C80, - 0x756D7A00, 0x756CB780, 0x756BF500, - 0x756B3280, 0x756A7000, 0x7569AD80, - 0x7568EB00, 0x75682880, 0x75676600, - 0x7566A380, 0x7565E100, 0x75651E80, - 0x75645C00, 0x75639980, 0x7562D700, - 0x75621480, 0x75615200, 0x75608F80, - 0x755FCD00, 0x755F0A80, 0x755E4800, - 0x755D8580, 0x755CC300, 0x755C0080, - 0x755B3E00, 0x755A7B80, 0x7559B900, - 0x7558F680, 0x75583400, 0x75577180, - 0x7556AF00, 0x7555EC80, 0x75552A00, - 0x75546780, 0x7553A500, 0x7552E280, - 0x75522000, 0x75515D80, 0x75509B00, - 0x754FD880, 0x754F1600, 0x754E5380, - 0x754D9100, 0x754CCE80, 0x754C0C00, - 0x754B4980, 0x754A8700, 0x7549C480, - 0x75490200, 0x75483F80, 0x75477D00, - 0x7546BA80, 0x7545F800, 0x75453580, - 0x75447300, 0x7543B080, 0x7542EE00, - 0x75422B80, 0x75416900, 0x7540A680, - 0x753FE400, 0x753F2180, 0x753E5F00, - 0x753D9C80, 0x753CDA00, 0x753C1780, - 0x753B5500, 0x753A9280, 0x7539D000, - 0x75390D80, 0x75384B00, 0x75378880, - 0x7536C600, 0x75360380, 0x75354100, - 0x75347E80, 0x7533BC00, 0x7532F980, - 0x75323700, 0x75317480, 0x7530B200, - 0x752FEF80, 0x752F2D00, 0x752E6A80, - 0x752DA800, 0x752CE580, 0x752C2300, - 0x752B6080, 0x752A9E00, 0x7529DB80, - 0x75291900, 0x75285680, 0x75279400, - 0x7526D180, 0x75260F00, 0x75254C80, - 0x75248A00, 0x7523C780, 0x75230500, - 0x75224280, 0x75218000, 0x7520BD80, - 0x751FFB00, 0x751F3880, 0x751E7600, - 0x751DB380, 0x751CF100, 0x751C2E80, - 0x751B6C00, 0x751AA980, 0x7519E700, - 0x75192480, 0x75186200, 0x75179F80, - 0x7516DD00, 0x75161A80, 0x75155800, - 0x75149580, 0x7513D300, 0x75131080, - 0x75124E00, 0x75118B80, 0x7510C900, - 0x75100680, 0x750F4400, 0x750E8180, - 0x750DBF00, 0x750CFC80, 0x750C3A00, - 0x750B7780, 0x750AB500, 0x7509F280, - 0x75093000, 0x75086D80, 0x7507AB00, - 0x7506E880, 0x75062600, 0x75056380, - 0x7504A100, 0x7503DE80, 0x75031C00, - 0x75025980, 0x75019700, 0x7500D480, - 0x75001200, 0x74FF4F80, 0x74FE8D00, - 0x74FDCA80, 0x74FD0800, 0x74FC4580, - 0x74FB8300, 0x74FAC080, 0x74F9FE00, - 0x74F93B80, 0x74F87900, 0x74F7B680, - 0x74F6F400, 0x74F63180, 0x74F56F00, - 0x74F4AC80, 0x74F3EA00, 0x74F32780, - 0x74F26500, 0x74F1A280, 0x74F0E000, - 0x74F01D80, 0x74EF5B00, 0x74EE9880, - 0x74EDD600, 0x74ED1380, 0x74EC5100, - 0x74EB8E80, 0x74EACC00, 0x74EA0980, - 0x74E94700, 0x74E88480, 0x74E7C200, - 0x74E6FF80, 0x74E63D00, 0x74E57A80, - 0x74E4B800, 0x74E3F580, 0x74E33300, - 0x74E27080, 0x74E1AE00, 0x74E0EB80, - 0x74E02900, 0x74DF6680, 0x74DEA400, - 0x74DDE180, 0x74DD1F00, 0x74DC5C80, - 0x74DB9A00, 0x74DAD780, 0x74DA1500, - 0x74D95280, 0x74D89000, 0x74D7CD80, - 0x74D70B00, 0x74D64880, 0x74D58600, - 0x74D4C380, 0x74D40100, 0x74D33E80, - 0x74D27C00, 0x74D1B980, 0x74D0F700, - 0x74D03480, 0x74CF7200, 0x74CEAF80, - 0x74CDED00, 0x74CD2A80, 0x74CC6800, - 0x74CBA580, 0x74CAE300, 0x74CA2080, - 0x74C95E00, 0x74C89B80, 0x74C7D900, - 0x74C71680, 0x74C65400, 0x74C59180, - 0x74C4CF00, 0x74C40C80, 0x74C34A00, - 0x74C28780, 0x74C1C500, 0x74C10280, - 0x74C04000, 0x74BF7D80, 0x74BEBB00, - 0x74BDF880, 0x74BD3600, 0x74BC7380, - 0x74BBB100, 0x74BAEE80, 0x74BA2C00, - 0x74B96980, 0x74B8A700, 0x74B7E480, - 0x74B72200, 0x74B65F80, 0x74B59D00, - 0x74B4DA80, 0x74B41800, 0x74B35580, - 0x74B29300, 0x74B1D080, 0x74B10E00, - 0x74B04B80, 0x74AF8900, 0x74AEC680, - 0x74AE0400, 0x74AD4180, 0x74AC7F00, - 0x74ABBC80, 0x74AAFA00, 0x74AA3780, - 0x74A97500, 0x74A8B280, 0x74A7F000, - 0x74A72D80, 0x74A66B00, 0x74A5A880, - 0x74A4E600, 0x74A42380, 0x74A36100, - 0x74A29E80, 0x74A1DC00, 0x74A11980, - 0x74A05700, 0x749F9480, 0x749ED200, - 0x749E0F80, 0x749D4D00, 0x749C8A80, - 0x749BC800, 0x749B0580, 0x749A4300, - 0x74998080, 0x7498BE00, 0x7497FB80, - 0x74973900, 0x74967680, 0x7495B400, - 0x7494F180, 0x74942F00, 0x74936C80, - 0x7492AA00, 0x7491E780, 0x74912500, - 0x74906280, 0x748FA000, 0x748EDD80, - 0x748E1B00, 0x748D5880, 0x748C9600, - 0x748BD380, 0x748B1100, 0x748A4E80, - 0x74898C00, 0x7488C980, 0x74880700, - 0x74874480, 0x74868200, 0x7485BF80, - 0x7484FD00, 0x74843A80, 0x74837800, - 0x7482B580, 0x7481F300, 0x74813080, - 0x74806E00, 0x747FAB80, 0x747EE900, - 0x747E2680, 0x747D6400, 0x747CA180, - 0x747BDF00, 0x747B1C80, 0x747A5A00, - 0x74799780, 0x7478D500, 0x74781280, - 0x74775000, 0x74768D80, 0x7475CB00, - 0x74750880, 0x74744600, 0x74738380, - 0x7472C100, 0x7471FE80, 0x74713C00, - 0x74707980, 0x746FB700, 0x746EF480, - 0x746E3200, 0x746D6F80, 0x746CAD00, - 0x746BEA80, 0x746B2800, 0x746A6580, - 0x7469A300, 0x7468E080, 0x74681E00, - 0x74675B80, 0x74669900, 0x7465D680, - 0x74651400, 0x74645180, 0x74638F00, - 0x7462CC80, 0x74620A00, 0x74614780, - 0x74608500, 0x745FC280, 0x745F0000, - 0x745E3D80, 0x745D7B00, 0x745CB880, - 0x745BF600, 0x745B3380, 0x745A7100, - 0x7459AE80, 0x7458EC00, 0x74582980, - 0x74576700, 0x7456A480, 0x7455E200, - 0x74551F80, 0x74545D00, 0x74539A80, - 0x7452D800, 0x74521580, 0x74515300, - 0x74509080, 0x744FCE00, 0x744F0B80, - 0x744E4900, 0x744D8680, 0x744CC400, - 0x744C0180, 0x744B3F00, 0x744A7C80, - 0x7449BA00, 0x7448F780, 0x74483500, - 0x74477280, 0x7446B000, 0x7445ED80, - 0x74452B00, 0x74446880, 0x7443A600, - 0x7442E380, 0x74422100, 0x74415E80, - 0x74409C00, 0x743FD980, 0x743F1700, - 0x743E5480, 0x743D9200, 0x743CCF80, - 0x743C0D00, 0x743B4A80, 0x743A8800, - 0x7439C580, 0x74390300, 0x74384080, - 0x74377E00, 0x7436BB80, 0x7435F900, - 0x74353680, 0x74347400, 0x7433B180, - 0x7432EF00, 0x74322C80, 0x74316A00, - 0x7430A780, 0x742FE500, 0x742F2280, - 0x742E6000, 0x742D9D80, 0x742CDB00, - 0x742C1880, 0x742B5600, 0x742A9380, - 0x7429D100, 0x74290E80, 0x74284C00, - 0x74278980, 0x7426C700, 0x74260480, - 0x74254200, 0x74247F80, 0x7423BD00, - 0x7422FA80, 0x74223800, 0x74217580, - 0x7420B300, 0x741FF080, 0x741F2E00, - 0x741E6B80, 0x741DA900, 0x741CE680, - 0x741C2400, 0x741B6180, 0x741A9F00, - 0x7419DC80, 0x74191A00, 0x74185780, - 0x74179500, 0x7416D280, 0x74161000, - 0x74154D80, 0x74148B00, 0x7413C880, - 0x74130600, 0x74124380, 0x74118100, - 0x7410BE80, 0x740FFC00, 0x740F3980, - 0x740E7700, 0x740DB480, 0x740CF200, - 0x740C2F80, 0x740B6D00, 0x740AAA80, - 0x7409E800, 0x74092580, 0x74086300, - 0x7407A080, 0x7406DE00, 0x74061B80, - 0x74055900, 0x74049680, 0x7403D400, - 0x74031180, 0x74024F00, 0x74018C80, - 0x7400CA00, 0x74000780, 0x73FF4500, - 0x73FE8280, 0x73FDC000, 0x73FCFD80, - 0x73FC3B00, 0x73FB7880, 0x73FAB600, - 0x73F9F380, 0x73F93100, 0x73F86E80, - 0x73F7AC00, 0x73F6E980, 0x73F62700, - 0x73F56480, 0x73F4A200, 0x73F3DF80, - 0x73F31D00, 0x73F25A80, 0x73F19800, - 0x73F0D580, 0x73F01300, 0x73EF5080, - 0x73EE8E00, 0x73EDCB80, 0x73ED0900, - 0x73EC4680, 0x73EB8400, 0x73EAC180, - 0x73E9FF00, 0x73E93C80, 0x73E87A00, - 0x73E7B780, 0x73E6F500, 0x73E63280, - 0x73E57000, 0x73E4AD80, 0x73E3EB00, - 0x73E32880, 0x73E26600, 0x73E1A380, - 0x73E0E100, 0x73E01E80, 0x73DF5C00, - 0x73DE9980, 0x73DDD700, 0x73DD1480, - 0x73DC5200, 0x73DB8F80, 0x73DACD00, - 0x73DA0A80, 0x73D94800, 0x73D88580, - 0x73D7C300, 0x73D70080, 0x73D63E00, - 0x73D57B80, 0x73D4B900, 0x73D3F680, - 0x73D33400, 0x73D27180, 0x73D1AF00, - 0x73D0EC80, 0x73D02A00, 0x73CF6780, - 0x73CEA500, 0x73CDE280, 0x73CD2000, - 0x73CC5D80, 0x73CB9B00, 0x73CAD880, - 0x73CA1600, 0x73C95380, 0x73C89100, - 0x73C7CE80, 0x73C70C00, 0x73C64980, - 0x73C58700, 0x73C4C480, 0x73C40200, - 0x73C33F80, 0x73C27D00, 0x73C1BA80, - 0x73C0F800, 0x73C03580, 0x73BF7300, - 0x73BEB080, 0x73BDEE00, 0x73BD2B80, - 0x73BC6900, 0x73BBA680, 0x73BAE400, - 0x73BA2180, 0x73B95F00, 0x73B89C80, - 0x73B7DA00, 0x73B71780, 0x73B65500, - 0x73B59280, 0x73B4D000, 0x73B40D80, - 0x73B34B00, 0x73B28880, 0x73B1C600, - 0x73B10380, 0x73B04100, 0x73AF7E80, - 0x73AEBC00, 0x73ADF980, 0x73AD3700, - 0x73AC7480, 0x73ABB200, 0x73AAEF80, - 0x73AA2D00, 0x73A96A80, 0x73A8A800, - 0x73A7E580, 0x73A72300, 0x73A66080, - 0x73A59E00, 0x73A4DB80, 0x73A41900, - 0x73A35680, 0x73A29400, 0x73A1D180, - 0x73A10F00, 0x73A04C80, 0x739F8A00, - 0x739EC780, 0x739E0500, 0x739D4280, - 0x739C8000, 0x739BBD80, 0x739AFB00, - 0x739A3880, 0x73997600, 0x7398B380, - 0x7397F100, 0x73972E80, 0x73966C00, - 0x7395A980, 0x7394E700, 0x73942480, - 0x73936200, 0x73929F80, 0x7391DD00, - 0x73911A80, 0x73905800, 0x738F9580, - 0x738ED300, 0x738E1080, 0x738D4E00, - 0x738C8B80, 0x738BC900, 0x738B0680, - 0x738A4400, 0x73898180, 0x7388BF00, - 0x7387FC80, 0x73873A00, 0x73867780, - 0x7385B500, 0x7384F280, 0x73843000, - 0x73836D80, 0x7382AB00, 0x7381E880, - 0x73812600, 0x73806380, 0x737FA100, - 0x737EDE80, 0x737E1C00, 0x737D5980, - 0x737C9700, 0x737BD480, 0x737B1200, - 0x737A4F80, 0x73798D00, 0x7378CA80, - 0x73780800, 0x73774580, 0x73768300, - 0x7375C080, 0x7374FE00, 0x73743B80, - 0x73737900, 0x7372B680, 0x7371F400, - 0x73713180, 0x73706F00, 0x736FAC80, - 0x736EEA00, 0x736E2780, 0x736D6500, - 0x736CA280, 0x736BE000, 0x736B1D80, - 0x736A5B00, 0x73699880, 0x7368D600, - 0x73681380, 0x73675100, 0x73668E80, - 0x7365CC00, 0x73650980, 0x73644700, - 0x73638480, 0x7362C200, 0x7361FF80, - 0x73613D00, 0x73607A80, 0x735FB800, - 0x735EF580, 0x735E3300, 0x735D7080, - 0x735CAE00, 0x735BEB80, 0x735B2900, - 0x735A6680, 0x7359A400, 0x7358E180, - 0x73581F00, 0x73575C80, 0x73569A00, - 0x7355D780, 0x73551500, 0x73545280, - 0x73539000, 0x7352CD80, 0x73520B00, - 0x73514880, 0x73508600, 0x734FC380, - 0x734F0100, 0x734E3E80, 0x734D7C00, - 0x734CB980, 0x734BF700, 0x734B3480, - 0x734A7200, 0x7349AF80, 0x7348ED00, - 0x73482A80, 0x73476800, 0x7346A580, - 0x7345E300, 0x73452080, 0x73445E00, - 0x73439B80, 0x7342D900, 0x73421680, - 0x73415400, 0x73409180, 0x733FCF00, - 0x733F0C80, 0x733E4A00, 0x733D8780, - 0x733CC500, 0x733C0280, 0x733B4000, - 0x733A7D80, 0x7339BB00, 0x7338F880, - 0x73383600, 0x73377380, 0x7336B100, - 0x7335EE80, 0x73352C00, 0x73346980, - 0x7333A700, 0x7332E480, 0x73322200, - 0x73315F80, 0x73309D00, 0x732FDA80, - 0x732F1800, 0x732E5580, 0x732D9300, - 0x732CD080, 0x732C0E00, 0x732B4B80, - 0x732A8900, 0x7329C680, 0x73290400, - 0x73284180, 0x73277F00, 0x7326BC80, - 0x7325FA00, 0x73253780, 0x73247500, - 0x7323B280, 0x7322F000, 0x73222D80, - 0x73216B00, 0x7320A880, 0x731FE600, - 0x731F2380, 0x731E6100, 0x731D9E80, - 0x731CDC00, 0x731C1980, 0x731B5700, - 0x731A9480, 0x7319D200, 0x73190F80, - 0x73184D00, 0x73178A80, 0x7316C800, - 0x73160580, 0x73154300, 0x73148080, - 0x7313BE00, 0x7312FB80, 0x73123900, - 0x73117680, 0x7310B400, 0x730FF180, - 0x730F2F00, 0x730E6C80, 0x730DAA00, - 0x730CE780, 0x730C2500, 0x730B6280, - 0x730AA000, 0x7309DD80, 0x73091B00, - 0x73085880, 0x73079600, 0x7306D380, - 0x73061100, 0x73054E80, 0x73048C00, - 0x7303C980, 0x73030700, 0x73024480, - 0x73018200, 0x7300BF80, 0x72FFFD00, - 0x72FF3A80, 0x72FE7800, 0x72FDB580, - 0x72FCF300, 0x72FC3080, 0x72FB6E00, - 0x72FAAB80, 0x72F9E900, 0x72F92680, - 0x72F86400, 0x72F7A180, 0x72F6DF00, - 0x72F61C80, 0x72F55A00, 0x72F49780, - 0x72F3D500, 0x72F31280, 0x72F25000, - 0x72F18D80, 0x72F0CB00, 0x72F00880, - 0x72EF4600, 0x72EE8380, 0x72EDC100, - 0x72ECFE80, 0x72EC3C00, 0x72EB7980, - 0x72EAB700, 0x72E9F480, 0x72E93200, - 0x72E86F80, 0x72E7AD00, 0x72E6EA80, - 0x72E62800, 0x72E56580, 0x72E4A300, - 0x72E3E080, 0x72E31E00, 0x72E25B80, - 0x72E19900, 0x72E0D680, 0x72E01400, - 0x72DF5180, 0x72DE8F00, 0x72DDCC80, - 0x72DD0A00, 0x72DC4780, 0x72DB8500, - 0x72DAC280, 0x72DA0000, 0x72D93D80, - 0x72D87B00, 0x72D7B880, 0x72D6F600, - 0x72D63380, 0x72D57100, 0x72D4AE80, - 0x72D3EC00, 0x72D32980, 0x72D26700, - 0x72D1A480, 0x72D0E200, 0x72D01F80, - 0x72CF5D00, 0x72CE9A80, 0x72CDD800, - 0x72CD1580, 0x72CC5300, 0x72CB9080, - 0x72CACE00, 0x72CA0B80, 0x72C94900, - 0x72C88680, 0x72C7C400, 0x72C70180, - 0x72C63F00, 0x72C57C80, 0x72C4BA00, - 0x72C3F780, 0x72C33500, 0x72C27280, - 0x72C1B000, 0x72C0ED80, 0x72C02B00, - 0x72BF6880, 0x72BEA600, 0x72BDE380, - 0x72BD2100, 0x72BC5E80, 0x72BB9C00, - 0x72BAD980, 0x72BA1700, 0x72B95480, - 0x72B89200, 0x72B7CF80, 0x72B70D00, - 0x72B64A80, 0x72B58800, 0x72B4C580, - 0x72B40300, 0x72B34080, 0x72B27E00, - 0x72B1BB80, 0x72B0F900, 0x72B03680, - 0x72AF7400, 0x72AEB180, 0x72ADEF00, - 0x72AD2C80, 0x72AC6A00, 0x72ABA780, - 0x72AAE500, 0x72AA2280, 0x72A96000, - 0x72A89D80, 0x72A7DB00, 0x72A71880, - 0x72A65600, 0x72A59380, 0x72A4D100, - 0x72A40E80, 0x72A34C00, 0x72A28980, - 0x72A1C700, 0x72A10480, 0x72A04200, - 0x729F7F80, 0x729EBD00, 0x729DFA80, - 0x729D3800, 0x729C7580, 0x729BB300, - 0x729AF080, 0x729A2E00, 0x72996B80, - 0x7298A900, 0x7297E680, 0x72972400, - 0x72966180, 0x72959F00, 0x7294DC80, - 0x72941A00, 0x72935780, 0x72929500, - 0x7291D280, 0x72911000, 0x72904D80, - 0x728F8B00, 0x728EC880, 0x728E0600, - 0x728D4380, 0x728C8100, 0x728BBE80, - 0x728AFC00, 0x728A3980, 0x72897700, - 0x7288B480, 0x7287F200, 0x72872F80, - 0x72866D00, 0x7285AA80, 0x7284E800, - 0x72842580, 0x72836300, 0x7282A080, - 0x7281DE00, 0x72811B80, 0x72805900, - 0x727F9680, 0x727ED400, 0x727E1180, - 0x727D4F00, 0x727C8C80, 0x727BCA00, - 0x727B0780, 0x727A4500, 0x72798280, - 0x7278C000, 0x7277FD80, 0x72773B00, - 0x72767880, 0x7275B600, 0x7274F380, - 0x72743100, 0x72736E80, 0x7272AC00, - 0x7271E980, 0x72712700, 0x72706480, - 0x726FA200, 0x726EDF80, 0x726E1D00, - 0x726D5A80, 0x726C9800, 0x726BD580, - 0x726B1300, 0x726A5080, 0x72698E00, - 0x7268CB80, 0x72680900, 0x72674680, - 0x72668400, 0x7265C180, 0x7264FF00, - 0x72643C80, 0x72637A00, 0x7262B780, - 0x7261F500, 0x72613280, 0x72607000, - 0x725FAD80, 0x725EEB00, 0x725E2880, - 0x725D6600, 0x725CA380, 0x725BE100, - 0x725B1E80, 0x725A5C00, 0x72599980, - 0x7258D700, 0x72581480, 0x72575200, - 0x72568F80, 0x7255CD00, 0x72550A80, - 0x72544800, 0x72538580, 0x7252C300, - 0x72520080, 0x72513E00, 0x72507B80, - 0x724FB900, 0x724EF680, 0x724E3400, - 0x724D7180, 0x724CAF00, 0x724BEC80, - 0x724B2A00, 0x724A6780, 0x7249A500, - 0x7248E280, 0x72482000, 0x72475D80, - 0x72469B00, 0x7245D880, 0x72451600, - 0x72445380, 0x72439100, 0x7242CE80, - 0x72420C00, 0x72414980, 0x72408700, - 0x723FC480, 0x723F0200, 0x723E3F80, - 0x723D7D00, 0x723CBA80, 0x723BF800, - 0x723B3580, 0x723A7300, 0x7239B080, - 0x7238EE00, 0x72382B80, 0x72376900, - 0x7236A680, 0x7235E400, 0x72352180, - 0x72345F00, 0x72339C80, 0x7232DA00, - 0x72321780, 0x72315500, 0x72309280, - 0x722FD000, 0x722F0D80, 0x722E4B00, - 0x722D8880, 0x722CC600, 0x722C0380, - 0x722B4100, 0x722A7E80, 0x7229BC00, - 0x7228F980, 0x72283700, 0x72277480, - 0x7226B200, 0x7225EF80, 0x72252D00, - 0x72246A80, 0x7223A800, 0x7222E580, - 0x72222300, 0x72216080, 0x72209E00, - 0x721FDB80, 0x721F1900, 0x721E5680, - 0x721D9400, 0x721CD180, 0x721C0F00, - 0x721B4C80, 0x721A8A00, 0x7219C780, - 0x72190500, 0x72184280, 0x72178000, - 0x7216BD80, 0x7215FB00, 0x72153880, - 0x72147600, 0x7213B380, 0x7212F100, - 0x72122E80, 0x72116C00, 0x7210A980, - 0x720FE700, 0x720F2480, 0x720E6200, - 0x720D9F80, 0x720CDD00, 0x720C1A80, - 0x720B5800, 0x720A9580, 0x7209D300, - 0x72091080, 0x72084E00, 0x72078B80, - 0x7206C900, 0x72060680, 0x72054400, - 0x72048180, 0x7203BF00, 0x7202FC80, - 0x72023A00, 0x72017780, 0x7200B500, - 0x71FFF280, 0x71FF3000, 0x71FE6D80, - 0x71FDAB00, 0x71FCE880, 0x71FC2600, - 0x71FB6380, 0x71FAA100, 0x71F9DE80, - 0x71F91C00, 0x71F85980, 0x71F79700, - 0x71F6D480, 0x71F61200, 0x71F54F80, - 0x71F48D00, 0x71F3CA80, 0x71F30800, - 0x71F24580, 0x71F18300, 0x71F0C080, - 0x71EFFE00, 0x71EF3B80, 0x71EE7900, - 0x71EDB680, 0x71ECF400, 0x71EC3180, - 0x71EB6F00, 0x71EAAC80, 0x71E9EA00, - 0x71E92780, 0x71E86500, 0x71E7A280, - 0x71E6E000, 0x71E61D80, 0x71E55B00, - 0x71E49880, 0x71E3D600, 0x71E31380, - 0x71E25100, 0x71E18E80, 0x71E0CC00, - 0x71E00980, 0x71DF4700, 0x71DE8480, - 0x71DDC200, 0x71DCFF80, 0x71DC3D00, - 0x71DB7A80, 0x71DAB800, 0x71D9F580, - 0x71D93300, 0x71D87080, 0x71D7AE00, - 0x71D6EB80, 0x71D62900, 0x71D56680, - 0x71D4A400, 0x71D3E180, 0x71D31F00, - 0x71D25C80, 0x71D19A00, 0x71D0D780, - 0x71D01500, 0x71CF5280, 0x71CE9000, - 0x71CDCD80, 0x71CD0B00, 0x71CC4880, - 0x71CB8600, 0x71CAC380, 0x71CA0100, - 0x71C93E80, 0x71C87C00, 0x71C7B980, - 0x71C6F700, 0x71C63480, 0x71C57200, - 0x71C4AF80, 0x71C3ED00, 0x71C32A80, - 0x71C26800, 0x71C1A580, 0x71C0E300, - 0x71C02080, 0x71BF5E00, 0x71BE9B80, - 0x71BDD900, 0x71BD1680, 0x71BC5400, - 0x71BB9180, 0x71BACF00, 0x71BA0C80, - 0x71B94A00, 0x71B88780, 0x71B7C500, - 0x71B70280, 0x71B64000, 0x71B57D80, - 0x71B4BB00, 0x71B3F880, 0x71B33600, - 0x71B27380, 0x71B1B100, 0x71B0EE80, - 0x71B02C00, 0x71AF6980, 0x71AEA700, - 0x71ADE480, 0x71AD2200, 0x71AC5F80, - 0x71AB9D00, 0x71AADA80, 0x71AA1800, - 0x71A95580, 0x71A89300, 0x71A7D080, - 0x71A70E00, 0x71A64B80, 0x71A58900, - 0x71A4C680, 0x71A40400, 0x71A34180, - 0x71A27F00, 0x71A1BC80, 0x71A0FA00, - 0x71A03780, 0x719F7500, 0x719EB280, - 0x719DF000, 0x719D2D80, 0x719C6B00, - 0x719BA880, 0x719AE600, 0x719A2380, - 0x71996100, 0x71989E80, 0x7197DC00, - 0x71971980, 0x71965700, 0x71959480, - 0x7194D200, 0x71940F80, 0x71934D00, - 0x71928A80, 0x7191C800, 0x71910580, - 0x71904300, 0x718F8080, 0x718EBE00, - 0x718DFB80, 0x718D3900, 0x718C7680, - 0x718BB400, 0x718AF180, 0x718A2F00, - 0x71896C80, 0x7188AA00, 0x7187E780, - 0x71872500, 0x71866280, 0x7185A000, - 0x7184DD80, 0x71841B00, 0x71835880, - 0x71829600, 0x7181D380, 0x71811100, - 0x71804E80, 0x717F8C00, 0x717EC980, - 0x717E0700, 0x717D4480, 0x717C8200, - 0x717BBF80, 0x717AFD00, 0x717A3A80, - 0x71797800, 0x7178B580, 0x7177F300, - 0x71773080, 0x71766E00, 0x7175AB80, - 0x7174E900, 0x71742680, 0x71736400, - 0x7172A180, 0x7171DF00, 0x71711C80, - 0x71705A00, 0x716F9780, 0x716ED500, - 0x716E1280, 0x716D5000, 0x716C8D80, - 0x716BCB00, 0x716B0880, 0x716A4600, - 0x71698380, 0x7168C100, 0x7167FE80, - 0x71673C00, 0x71667980, 0x7165B700, - 0x7164F480, 0x71643200, 0x71636F80, - 0x7162AD00, 0x7161EA80, 0x71612800, - 0x71606580, 0x715FA300, 0x715EE080, - 0x715E1E00, 0x715D5B80, 0x715C9900, - 0x715BD680, 0x715B1400, 0x715A5180, - 0x71598F00, 0x7158CC80, 0x71580A00, - 0x71574780, 0x71568500, 0x7155C280, - 0x71550000, 0x71543D80, 0x71537B00, - 0x7152B880, 0x7151F600, 0x71513380, - 0x71507100, 0x714FAE80, 0x714EEC00, - 0x714E2980, 0x714D6700, 0x714CA480, - 0x714BE200, 0x714B1F80, 0x714A5D00, - 0x71499A80, 0x7148D800, 0x71481580, - 0x71475300, 0x71469080, 0x7145CE00, - 0x71450B80, 0x71444900, 0x71438680, - 0x7142C400, 0x71420180, 0x71413F00, - 0x71407C80, 0x713FBA00, 0x713EF780, - 0x713E3500, 0x713D7280, 0x713CB000, - 0x713BED80, 0x713B2B00, 0x713A6880, - 0x7139A600, 0x7138E380, 0x71382100, - 0x71375E80, 0x71369C00, 0x7135D980, - 0x71351700, 0x71345480, 0x71339200, - 0x7132CF80, 0x71320D00, 0x71314A80, - 0x71308800, 0x712FC580, 0x712F0300, - 0x712E4080, 0x712D7E00, 0x712CBB80, - 0x712BF900, 0x712B3680, 0x712A7400, - 0x7129B180, 0x7128EF00, 0x71282C80, - 0x71276A00, 0x7126A780, 0x7125E500, - 0x71252280, 0x71246000, 0x71239D80, - 0x7122DB00, 0x71221880, 0x71215600, - 0x71209380, 0x711FD100, 0x711F0E80, - 0x711E4C00, 0x711D8980, 0x711CC700, - 0x711C0480, 0x711B4200, 0x711A7F80, - 0x7119BD00, 0x7118FA80, 0x71183800, - 0x71177580, 0x7116B300, 0x7115F080, - 0x71152E00, 0x71146B80, 0x7113A900, - 0x7112E680, 0x71122400, 0x71116180, - 0x71109F00, 0x710FDC80, 0x710F1A00, - 0x710E5780, 0x710D9500, 0x710CD280, - 0x710C1000, 0x710B4D80, 0x710A8B00, - 0x7109C880, 0x71090600, 0x71084380, - 0x71078100, 0x7106BE80, 0x7105FC00, - 0x71053980, 0x71047700, 0x7103B480, - 0x7102F200, 0x71022F80, 0x71016D00, - 0x7100AA80, 0x70FFE800, 0x70FF2580, - 0x70FE6300, 0x70FDA080, 0x70FCDE00, - 0x70FC1B80, 0x70FB5900, 0x70FA9680, - 0x70F9D400, 0x70F91180, 0x70F84F00, - 0x70F78C80, 0x70F6CA00, 0x70F60780, - 0x70F54500, 0x70F48280, 0x70F3C000, - 0x70F2FD80, 0x70F23B00, 0x70F17880, - 0x70F0B600, 0x70EFF380, 0x70EF3100, - 0x70EE6E80, 0x70EDAC00, 0x70ECE980, - 0x70EC2700, 0x70EB6480, 0x70EAA200, - 0x70E9DF80, 0x70E91D00, 0x70E85A80, - 0x70E79800, 0x70E6D580, 0x70E61300, - 0x70E55080, 0x70E48E00, 0x70E3CB80, - 0x70E30900, 0x70E24680, 0x70E18400, - 0x70E0C180, 0x70DFFF00, 0x70DF3C80, - 0x70DE7A00, 0x70DDB780, 0x70DCF500, - 0x70DC3280, 0x70DB7000, 0x70DAAD80, - 0x70D9EB00, 0x70D92880, 0x70D86600, - 0x70D7A380, 0x70D6E100, 0x70D61E80, - 0x70D55C00, 0x70D49980, 0x70D3D700, - 0x70D31480, 0x70D25200, 0x70D18F80, - 0x70D0CD00, 0x70D00A80, 0x70CF4800, - 0x70CE8580, 0x70CDC300, 0x70CD0080, - 0x70CC3E00, 0x70CB7B80, 0x70CAB900, - 0x70C9F680, 0x70C93400, 0x70C87180, - 0x70C7AF00, 0x70C6EC80, 0x70C62A00, - 0x70C56780, 0x70C4A500, 0x70C3E280, - 0x70C32000, 0x70C25D80, 0x70C19B00, - 0x70C0D880, 0x70C01600, 0x70BF5380, - 0x70BE9100, 0x70BDCE80, 0x70BD0C00, - 0x70BC4980, 0x70BB8700, 0x70BAC480, - 0x70BA0200, 0x70B93F80, 0x70B87D00, - 0x70B7BA80, 0x70B6F800, 0x70B63580, - 0x70B57300, 0x70B4B080, 0x70B3EE00, - 0x70B32B80, 0x70B26900, 0x70B1A680, - 0x70B0E400, 0x70B02180, 0x70AF5F00, - 0x70AE9C80, 0x70ADDA00, 0x70AD1780, - 0x70AC5500, 0x70AB9280, 0x70AAD000, - 0x70AA0D80, 0x70A94B00, 0x70A88880, - 0x70A7C600, 0x70A70380, 0x70A64100, - 0x70A57E80, 0x70A4BC00, 0x70A3F980, - 0x70A33700, 0x70A27480, 0x70A1B200, - 0x70A0EF80, 0x70A02D00, 0x709F6A80, - 0x709EA800, 0x709DE580, 0x709D2300, - 0x709C6080, 0x709B9E00, 0x709ADB80, - 0x709A1900, 0x70995680, 0x70989400, - 0x7097D180, 0x70970F00, 0x70964C80, - 0x70958A00, 0x7094C780, 0x70940500, - 0x70934280, 0x70928000, 0x7091BD80, - 0x7090FB00, 0x70903880, 0x708F7600, - 0x708EB380, 0x708DF100, 0x708D2E80, - 0x708C6C00, 0x708BA980, 0x708AE700, - 0x708A2480, 0x70896200, 0x70889F80, - 0x7087DD00, 0x70871A80, 0x70865800, - 0x70859580, 0x7084D300, 0x70841080, - 0x70834E00, 0x70828B80, 0x7081C900, - 0x70810680, 0x70804400, 0x707F8180, - 0x707EBF00, 0x707DFC80, 0x707D3A00, - 0x707C7780, 0x707BB500, 0x707AF280, - 0x707A3000, 0x70796D80, 0x7078AB00, - 0x7077E880, 0x70772600, 0x70766380, - 0x7075A100, 0x7074DE80, 0x70741C00, - 0x70735980, 0x70729700, 0x7071D480, - 0x70711200, 0x70704F80, 0x706F8D00, - 0x706ECA80, 0x706E0800, 0x706D4580, - 0x706C8300, 0x706BC080, 0x706AFE00, - 0x706A3B80, 0x70697900, 0x7068B680, - 0x7067F400, 0x70673180, 0x70666F00, - 0x7065AC80, 0x7064EA00, 0x70642780, - 0x70636500, 0x7062A280, 0x7061E000, - 0x70611D80, 0x70605B00, 0x705F9880, - 0x705ED600, 0x705E1380, 0x705D5100, - 0x705C8E80, 0x705BCC00, 0x705B0980, - 0x705A4700, 0x70598480, 0x7058C200, - 0x7057FF80, 0x70573D00, 0x70567A80, - 0x7055B800, 0x7054F580, 0x70543300, - 0x70537080, 0x7052AE00, 0x7051EB80, - 0x70512900, 0x70506680, 0x704FA400, - 0x704EE180, 0x704E1F00, 0x704D5C80, - 0x704C9A00, 0x704BD780, 0x704B1500, - 0x704A5280, 0x70499000, 0x7048CD80, - 0x70480B00, 0x70474880, 0x70468600, - 0x7045C380, 0x70450100, 0x70443E80, - 0x70437C00, 0x7042B980, 0x7041F700, - 0x70413480, 0x70407200, 0x703FAF80, - 0x703EED00, 0x703E2A80, 0x703D6800, - 0x703CA580, 0x703BE300, 0x703B2080, - 0x703A5E00, 0x70399B80, 0x7038D900, - 0x70381680, 0x70375400, 0x70369180, - 0x7035CF00, 0x70350C80, 0x70344A00, - 0x70338780, 0x7032C500, 0x70320280, - 0x70314000, 0x70307D80, 0x702FBB00, - 0x702EF880, 0x702E3600, 0x702D7380, - 0x702CB100, 0x702BEE80, 0x702B2C00, - 0x702A6980, 0x7029A700, 0x7028E480, - 0x70282200, 0x70275F80, 0x70269D00, - 0x7025DA80, 0x70251800, 0x70245580, - 0x70239300, 0x7022D080, 0x70220E00, - 0x70214B80, 0x70208900, 0x701FC680, - 0x701F0400, 0x701E4180, 0x701D7F00, - 0x701CBC80, 0x701BFA00, 0x701B3780, - 0x701A7500, 0x7019B280, 0x7018F000, - 0x70182D80, 0x70176B00, 0x7016A880, - 0x7015E600, 0x70152380, 0x70146100, - 0x70139E80, 0x7012DC00, 0x70121980, - 0x70115700, 0x70109480, 0x700FD200, - 0x700F0F80, 0x700E4D00, 0x700D8A80, - 0x700CC800, 0x700C0580, 0x700B4300, - 0x700A8080, 0x7009BE00, 0x7008FB80, - 0x70083900, 0x70077680, 0x7006B400, - 0x7005F180, 0x70052F00, 0x70046C80, - 0x7003AA00, 0x7002E780, 0x70022500, - 0x70016280, 0x7000A000, 0x6FFFDD80, - 0x6FFF1B00, 0x6FFE5880, 0x6FFD9600, - 0x6FFCD380, 0x6FFC1100, 0x6FFB4E80, - 0x6FFA8C00, 0x6FF9C980, 0x6FF90700, - 0x6FF84480, 0x6FF78200, 0x6FF6BF80, - 0x6FF5FD00, 0x6FF53A80, 0x6FF47800, - 0x6FF3B580, 0x6FF2F300, 0x6FF23080, - 0x6FF16E00, 0x6FF0AB80, 0x6FEFE900, - 0x6FEF2680, 0x6FEE6400, 0x6FEDA180, - 0x6FECDF00, 0x6FEC1C80, 0x6FEB5A00, - 0x6FEA9780, 0x6FE9D500, 0x6FE91280, - 0x6FE85000, 0x6FE78D80, 0x6FE6CB00, - 0x6FE60880, 0x6FE54600, 0x6FE48380, - 0x6FE3C100, 0x6FE2FE80, 0x6FE23C00, - 0x6FE17980, 0x6FE0B700, 0x6FDFF480, - 0x6FDF3200, 0x6FDE6F80, 0x6FDDAD00, - 0x6FDCEA80, 0x6FDC2800, 0x6FDB6580, - 0x6FDAA300, 0x6FD9E080, 0x6FD91E00, - 0x6FD85B80, 0x6FD79900, 0x6FD6D680, - 0x6FD61400, 0x6FD55180, 0x6FD48F00, - 0x6FD3CC80, 0x6FD30A00, 0x6FD24780, - 0x6FD18500, 0x6FD0C280, 0x6FD00000, - 0x6FCF4680, 0x6FCE8D00, 0x6FCDD380, - 0x6FCD1A00, 0x6FCC6080, 0x6FCBA700, - 0x6FCAED80, 0x6FCA3400, 0x6FC97A80, - 0x6FC8C100, 0x6FC80780, 0x6FC74E00, - 0x6FC69480, 0x6FC5DB00, 0x6FC52180, - 0x6FC46800, 0x6FC3AE80, 0x6FC2F500, - 0x6FC23B80, 0x6FC18200, 0x6FC0C880, - 0x6FC00F00, 0x6FBF5580, 0x6FBE9C00, - 0x6FBDE280, 0x6FBD2900, 0x6FBC6F80, - 0x6FBBB600, 0x6FBAFC80, 0x6FBA4300, - 0x6FB98980, 0x6FB8D000, 0x6FB81680, - 0x6FB75D00, 0x6FB6A380, 0x6FB5EA00, - 0x6FB53080, 0x6FB47700, 0x6FB3BD80, - 0x6FB30400, 0x6FB24A80, 0x6FB19100, - 0x6FB0D780, 0x6FB01E00, 0x6FAF6480, - 0x6FAEAB00, 0x6FADF180, 0x6FAD3800, - 0x6FAC7E80, 0x6FABC500, 0x6FAB0B80, - 0x6FAA5200, 0x6FA99880, 0x6FA8DF00, - 0x6FA82580, 0x6FA76C00, 0x6FA6B280, - 0x6FA5F900, 0x6FA53F80, 0x6FA48600, - 0x6FA3CC80, 0x6FA31300, 0x6FA25980, - 0x6FA1A000, 0x6FA0E680, 0x6FA02D00, - 0x6F9F7380, 0x6F9EBA00, 0x6F9E0080, - 0x6F9D4700, 0x6F9C8D80, 0x6F9BD400, - 0x6F9B1A80, 0x6F9A6100, 0x6F99A780, - 0x6F98EE00, 0x6F983480, 0x6F977B00, - 0x6F96C180, 0x6F960800, 0x6F954E80, - 0x6F949500, 0x6F93DB80, 0x6F932200, - 0x6F926880, 0x6F91AF00, 0x6F90F580, - 0x6F903C00, 0x6F8F8280, 0x6F8EC900, - 0x6F8E0F80, 0x6F8D5600, 0x6F8C9C80, - 0x6F8BE300, 0x6F8B2980, 0x6F8A7000, - 0x6F89B680, 0x6F88FD00, 0x6F884380, - 0x6F878A00, 0x6F86D080, 0x6F861700, - 0x6F855D80, 0x6F84A400, 0x6F83EA80, - 0x6F833100, 0x6F827780, 0x6F81BE00, - 0x6F810480, 0x6F804B00, 0x6F7F9180, - 0x6F7ED800, 0x6F7E1E80, 0x6F7D6500, - 0x6F7CAB80, 0x6F7BF200, 0x6F7B3880, - 0x6F7A7F00, 0x6F79C580, 0x6F790C00, - 0x6F785280, 0x6F779900, 0x6F76DF80, - 0x6F762600, 0x6F756C80, 0x6F74B300, - 0x6F73F980, 0x6F734000, 0x6F728680, - 0x6F71CD00, 0x6F711380, 0x6F705A00, - 0x6F6FA080, 0x6F6EE700, 0x6F6E2D80, - 0x6F6D7400, 0x6F6CBA80, 0x6F6C0100, - 0x6F6B4780, 0x6F6A8E00, 0x6F69D480, - 0x6F691B00, 0x6F686180, 0x6F67A800, - 0x6F66EE80, 0x6F663500, 0x6F657B80, - 0x6F64C200, 0x6F640880, 0x6F634F00, - 0x6F629580, 0x6F61DC00, 0x6F612280, - 0x6F606900, 0x6F5FAF80, 0x6F5EF600, - 0x6F5E3C80, 0x6F5D8300, 0x6F5CC980, - 0x6F5C1000, 0x6F5B5680, 0x6F5A9D00, - 0x6F59E380, 0x6F592A00, 0x6F587080, - 0x6F57B700, 0x6F56FD80, 0x6F564400, - 0x6F558A80, 0x6F54D100, 0x6F541780, - 0x6F535E00, 0x6F52A480, 0x6F51EB00, - 0x6F513180, 0x6F507800, 0x6F4FBE80, - 0x6F4F0500, 0x6F4E4B80, 0x6F4D9200, - 0x6F4CD880, 0x6F4C1F00, 0x6F4B6580, - 0x6F4AAC00, 0x6F49F280, 0x6F493900, - 0x6F487F80, 0x6F47C600, 0x6F470C80, - 0x6F465300, 0x6F459980, 0x6F44E000, - 0x6F442680, 0x6F436D00, 0x6F42B380, - 0x6F41FA00, 0x6F414080, 0x6F408700, - 0x6F3FCD80, 0x6F3F1400, 0x6F3E5A80, - 0x6F3DA100, 0x6F3CE780, 0x6F3C2E00, - 0x6F3B7480, 0x6F3ABB00, 0x6F3A0180, - 0x6F394800, 0x6F388E80, 0x6F37D500, - 0x6F371B80, 0x6F366200, 0x6F35A880, - 0x6F34EF00, 0x6F343580, 0x6F337C00, - 0x6F32C280, 0x6F320900, 0x6F314F80, - 0x6F309600, 0x6F2FDC80, 0x6F2F2300, - 0x6F2E6980, 0x6F2DB000, 0x6F2CF680, - 0x6F2C3D00, 0x6F2B8380, 0x6F2ACA00, - 0x6F2A1080, 0x6F295700, 0x6F289D80, - 0x6F27E400, 0x6F272A80, 0x6F267100, - 0x6F25B780, 0x6F24FE00, 0x6F244480, - 0x6F238B00, 0x6F22D180, 0x6F221800, - 0x6F215E80, 0x6F20A500, 0x6F1FEB80, - 0x6F1F3200, 0x6F1E7880, 0x6F1DBF00, - 0x6F1D0580, 0x6F1C4C00, 0x6F1B9280, - 0x6F1AD900, 0x6F1A1F80, 0x6F196600, - 0x6F18AC80, 0x6F17F300, 0x6F173980, - 0x6F168000, 0x6F15C680, 0x6F150D00, - 0x6F145380, 0x6F139A00, 0x6F12E080, - 0x6F122700, 0x6F116D80, 0x6F10B400, - 0x6F0FFA80, 0x6F0F4100, 0x6F0E8780, - 0x6F0DCE00, 0x6F0D1480, 0x6F0C5B00, - 0x6F0BA180, 0x6F0AE800, 0x6F0A2E80, - 0x6F097500, 0x6F08BB80, 0x6F080200, - 0x6F074880, 0x6F068F00, 0x6F05D580, - 0x6F051C00, 0x6F046280, 0x6F03A900, - 0x6F02EF80, 0x6F023600, 0x6F017C80, - 0x6F00C300, 0x6F000980, 0x6EFF5000, - 0x6EFE9680, 0x6EFDDD00, 0x6EFD2380, - 0x6EFC6A00, 0x6EFBB080, 0x6EFAF700, - 0x6EFA3D80, 0x6EF98400, 0x6EF8CA80, - 0x6EF81100, 0x6EF75780, 0x6EF69E00, - 0x6EF5E480, 0x6EF52B00, 0x6EF47180, - 0x6EF3B800, 0x6EF2FE80, 0x6EF24500, - 0x6EF18B80, 0x6EF0D200, 0x6EF01880, - 0x6EEF5F00, 0x6EEEA580, 0x6EEDEC00, - 0x6EED3280, 0x6EEC7900, 0x6EEBBF80, - 0x6EEB0600, 0x6EEA4C80, 0x6EE99300, - 0x6EE8D980, 0x6EE82000, 0x6EE76680, - 0x6EE6AD00, 0x6EE5F380, 0x6EE53A00, - 0x6EE48080, 0x6EE3C700, 0x6EE30D80, - 0x6EE25400, 0x6EE19A80, 0x6EE0E100, - 0x6EE02780, 0x6EDF6E00, 0x6EDEB480, - 0x6EDDFB00, 0x6EDD4180, 0x6EDC8800, - 0x6EDBCE80, 0x6EDB1500, 0x6EDA5B80, - 0x6ED9A200, 0x6ED8E880, 0x6ED82F00, - 0x6ED77580, 0x6ED6BC00, 0x6ED60280, - 0x6ED54900, 0x6ED48F80, 0x6ED3D600, - 0x6ED31C80, 0x6ED26300, 0x6ED1A980, - 0x6ED0F000, 0x6ED03680, 0x6ECF7D00, - 0x6ECEC380, 0x6ECE0A00, 0x6ECD5080, - 0x6ECC9700, 0x6ECBDD80, 0x6ECB2400, - 0x6ECA6A80, 0x6EC9B100, 0x6EC8F780, - 0x6EC83E00, 0x6EC78480, 0x6EC6CB00, - 0x6EC61180, 0x6EC55800, 0x6EC49E80, - 0x6EC3E500, 0x6EC32B80, 0x6EC27200, - 0x6EC1B880, 0x6EC0FF00, 0x6EC04580, - 0x6EBF8C00, 0x6EBED280, 0x6EBE1900, - 0x6EBD5F80, 0x6EBCA600, 0x6EBBEC80, - 0x6EBB3300, 0x6EBA7980, 0x6EB9C000, - 0x6EB90680, 0x6EB84D00, 0x6EB79380, - 0x6EB6DA00, 0x6EB62080, 0x6EB56700, - 0x6EB4AD80, 0x6EB3F400, 0x6EB33A80, - 0x6EB28100, 0x6EB1C780, 0x6EB10E00, - 0x6EB05480, 0x6EAF9B00, 0x6EAEE180, - 0x6EAE2800, 0x6EAD6E80, 0x6EACB500, - 0x6EABFB80, 0x6EAB4200, 0x6EAA8880, - 0x6EA9CF00, 0x6EA91580, 0x6EA85C00, - 0x6EA7A280, 0x6EA6E900, 0x6EA62F80, - 0x6EA57600, 0x6EA4BC80, 0x6EA40300, - 0x6EA34980, 0x6EA29000, 0x6EA1D680, - 0x6EA11D00, 0x6EA06380, 0x6E9FAA00, - 0x6E9EF080, 0x6E9E3700, 0x6E9D7D80, - 0x6E9CC400, 0x6E9C0A80, 0x6E9B5100, - 0x6E9A9780, 0x6E99DE00, 0x6E992480, - 0x6E986B00, 0x6E97B180, 0x6E96F800, - 0x6E963E80, 0x6E958500, 0x6E94CB80, - 0x6E941200, 0x6E935880, 0x6E929F00, - 0x6E91E580, 0x6E912C00, 0x6E907280, - 0x6E8FB900, 0x6E8EFF80, 0x6E8E4600, - 0x6E8D8C80, 0x6E8CD300, 0x6E8C1980, - 0x6E8B6000, 0x6E8AA680, 0x6E89ED00, - 0x6E893380, 0x6E887A00, 0x6E87C080, - 0x6E870700, 0x6E864D80, 0x6E859400, - 0x6E84DA80, 0x6E842100, 0x6E836780, - 0x6E82AE00, 0x6E81F480, 0x6E813B00, - 0x6E808180, 0x6E7FC800, 0x6E7F0E80, - 0x6E7E5500, 0x6E7D9B80, 0x6E7CE200, - 0x6E7C2880, 0x6E7B6F00, 0x6E7AB580, - 0x6E79FC00, 0x6E794280, 0x6E788900, - 0x6E77CF80, 0x6E771600, 0x6E765C80, - 0x6E75A300, 0x6E74E980, 0x6E743000, - 0x6E737680, 0x6E72BD00, 0x6E720380, - 0x6E714A00, 0x6E709080, 0x6E6FD700, - 0x6E6F1D80, 0x6E6E6400, 0x6E6DAA80, - 0x6E6CF100, 0x6E6C3780, 0x6E6B7E00, - 0x6E6AC480, 0x6E6A0B00, 0x6E695180, - 0x6E689800, 0x6E67DE80, 0x6E672500, - 0x6E666B80, 0x6E65B200, 0x6E64F880, - 0x6E643F00, 0x6E638580, 0x6E62CC00, - 0x6E621280, 0x6E615900, 0x6E609F80, - 0x6E5FE600, 0x6E5F2C80, 0x6E5E7300, - 0x6E5DB980, 0x6E5D0000, 0x6E5C4680, - 0x6E5B8D00, 0x6E5AD380, 0x6E5A1A00, - 0x6E596080, 0x6E58A700, 0x6E57ED80, - 0x6E573400, 0x6E567A80, 0x6E55C100, - 0x6E550780, 0x6E544E00, 0x6E539480, - 0x6E52DB00, 0x6E522180, 0x6E516800, - 0x6E50AE80, 0x6E4FF500, 0x6E4F3B80, - 0x6E4E8200, 0x6E4DC880, 0x6E4D0F00, - 0x6E4C5580, 0x6E4B9C00, 0x6E4AE280, - 0x6E4A2900, 0x6E496F80, 0x6E48B600, - 0x6E47FC80, 0x6E474300, 0x6E468980, - 0x6E45D000, 0x6E451680, 0x6E445D00, - 0x6E43A380, 0x6E42EA00, 0x6E423080, - 0x6E417700, 0x6E40BD80, 0x6E400400, - 0x6E3F4A80, 0x6E3E9100, 0x6E3DD780, - 0x6E3D1E00, 0x6E3C6480, 0x6E3BAB00, - 0x6E3AF180, 0x6E3A3800, 0x6E397E80, - 0x6E38C500, 0x6E380B80, 0x6E375200, - 0x6E369880, 0x6E35DF00, 0x6E352580, - 0x6E346C00, 0x6E33B280, 0x6E32F900, - 0x6E323F80, 0x6E318600, 0x6E30CC80, - 0x6E301300, 0x6E2F5980, 0x6E2EA000, - 0x6E2DE680, 0x6E2D2D00, 0x6E2C7380, - 0x6E2BBA00, 0x6E2B0080, 0x6E2A4700, - 0x6E298D80, 0x6E28D400, 0x6E281A80, - 0x6E276100, 0x6E26A780, 0x6E25EE00, - 0x6E253480, 0x6E247B00, 0x6E23C180, - 0x6E230800, 0x6E224E80, 0x6E219500, - 0x6E20DB80, 0x6E202200, 0x6E1F6880, - 0x6E1EAF00, 0x6E1DF580, 0x6E1D3C00, - 0x6E1C8280, 0x6E1BC900, 0x6E1B0F80, - 0x6E1A5600, 0x6E199C80, 0x6E18E300, - 0x6E182980, 0x6E177000, 0x6E16B680, - 0x6E15FD00, 0x6E154380, 0x6E148A00, - 0x6E13D080, 0x6E131700, 0x6E125D80, - 0x6E11A400, 0x6E10EA80, 0x6E103100, - 0x6E0F7780, 0x6E0EBE00, 0x6E0E0480, - 0x6E0D4B00, 0x6E0C9180, 0x6E0BD800, - 0x6E0B1E80, 0x6E0A6500, 0x6E09AB80, - 0x6E08F200, 0x6E083880, 0x6E077F00, - 0x6E06C580, 0x6E060C00, 0x6E055280, - 0x6E049900, 0x6E03DF80, 0x6E032600, - 0x6E026C80, 0x6E01B300, 0x6E00F980, - 0x6E004000, 0x6DFF8680, 0x6DFECD00, - 0x6DFE1380, 0x6DFD5A00, 0x6DFCA080, - 0x6DFBE700, 0x6DFB2D80, 0x6DFA7400, - 0x6DF9BA80, 0x6DF90100, 0x6DF84780, - 0x6DF78E00, 0x6DF6D480, 0x6DF61B00, - 0x6DF56180, 0x6DF4A800, 0x6DF3EE80, - 0x6DF33500, 0x6DF27B80, 0x6DF1C200, - 0x6DF10880, 0x6DF04F00, 0x6DEF9580, - 0x6DEEDC00, 0x6DEE2280, 0x6DED6900, - 0x6DECAF80, 0x6DEBF600, 0x6DEB3C80, - 0x6DEA8300, 0x6DE9C980, 0x6DE91000, - 0x6DE85680, 0x6DE79D00, 0x6DE6E380, - 0x6DE62A00, 0x6DE57080, 0x6DE4B700, - 0x6DE3FD80, 0x6DE34400, 0x6DE28A80, - 0x6DE1D100, 0x6DE11780, 0x6DE05E00, - 0x6DDFA480, 0x6DDEEB00, 0x6DDE3180, - 0x6DDD7800, 0x6DDCBE80, 0x6DDC0500, - 0x6DDB4B80, 0x6DDA9200, 0x6DD9D880, - 0x6DD91F00, 0x6DD86580, 0x6DD7AC00, - 0x6DD6F280, 0x6DD63900, 0x6DD57F80, - 0x6DD4C600, 0x6DD40C80, 0x6DD35300, - 0x6DD29980, 0x6DD1E000, 0x6DD12680, - 0x6DD06D00, 0x6DCFB380, 0x6DCEFA00, - 0x6DCE4080, 0x6DCD8700, 0x6DCCCD80, - 0x6DCC1400, 0x6DCB5A80, 0x6DCAA100, - 0x6DC9E780, 0x6DC92E00, 0x6DC87480, - 0x6DC7BB00, 0x6DC70180, 0x6DC64800, - 0x6DC58E80, 0x6DC4D500, 0x6DC41B80, - 0x6DC36200, 0x6DC2A880, 0x6DC1EF00, - 0x6DC13580, 0x6DC07C00, 0x6DBFC280, - 0x6DBF0900, 0x6DBE4F80, 0x6DBD9600, - 0x6DBCDC80, 0x6DBC2300, 0x6DBB6980, - 0x6DBAB000, 0x6DB9F680, 0x6DB93D00, - 0x6DB88380, 0x6DB7CA00, 0x6DB71080, - 0x6DB65700, 0x6DB59D80, 0x6DB4E400, - 0x6DB42A80, 0x6DB37100, 0x6DB2B780, - 0x6DB1FE00, 0x6DB14480, 0x6DB08B00, - 0x6DAFD180, 0x6DAF1800, 0x6DAE5E80, - 0x6DADA500, 0x6DACEB80, 0x6DAC3200, - 0x6DAB7880, 0x6DAABF00, 0x6DAA0580, - 0x6DA94C00, 0x6DA89280, 0x6DA7D900, - 0x6DA71F80, 0x6DA66600, 0x6DA5AC80, - 0x6DA4F300, 0x6DA43980, 0x6DA38000, - 0x6DA2C680, 0x6DA20D00, 0x6DA15380, - 0x6DA09A00, 0x6D9FE080, 0x6D9F2700, - 0x6D9E6D80, 0x6D9DB400, 0x6D9CFA80, - 0x6D9C4100, 0x6D9B8780, 0x6D9ACE00, - 0x6D9A1480, 0x6D995B00, 0x6D98A180, - 0x6D97E800, 0x6D972E80, 0x6D967500, - 0x6D95BB80, 0x6D950200, 0x6D944880, - 0x6D938F00, 0x6D92D580, 0x6D921C00, - 0x6D916280, 0x6D90A900, 0x6D8FEF80, - 0x6D8F3600, 0x6D8E7C80, 0x6D8DC300, - 0x6D8D0980, 0x6D8C5000, 0x6D8B9680, - 0x6D8ADD00, 0x6D8A2380, 0x6D896A00, - 0x6D88B080, 0x6D87F700, 0x6D873D80, - 0x6D868400, 0x6D85CA80, 0x6D851100, - 0x6D845780, 0x6D839E00, 0x6D82E480, - 0x6D822B00, 0x6D817180, 0x6D80B800, - 0x6D7FFE80, 0x6D7F4500, 0x6D7E8B80, - 0x6D7DD200, 0x6D7D1880, 0x6D7C5F00, - 0x6D7BA580, 0x6D7AEC00, 0x6D7A3280, - 0x6D797900, 0x6D78BF80, 0x6D780600, - 0x6D774C80, 0x6D769300, 0x6D75D980, - 0x6D752000, 0x6D746680, 0x6D73AD00, - 0x6D72F380, 0x6D723A00, 0x6D718080, - 0x6D70C700, 0x6D700D80, 0x6D6F5400, - 0x6D6E9A80, 0x6D6DE100, 0x6D6D2780, - 0x6D6C6E00, 0x6D6BB480, 0x6D6AFB00, - 0x6D6A4180, 0x6D698800, 0x6D68CE80, - 0x6D681500, 0x6D675B80, 0x6D66A200, - 0x6D65E880, 0x6D652F00, 0x6D647580, - 0x6D63BC00, 0x6D630280, 0x6D624900, - 0x6D618F80, 0x6D60D600, 0x6D601C80, - 0x6D5F6300, 0x6D5EA980, 0x6D5DF000, - 0x6D5D3680, 0x6D5C7D00, 0x6D5BC380, - 0x6D5B0A00, 0x6D5A5080, 0x6D599700, - 0x6D58DD80, 0x6D582400, 0x6D576A80, - 0x6D56B100, 0x6D55F780, 0x6D553E00, - 0x6D548480, 0x6D53CB00, 0x6D531180, - 0x6D525800, 0x6D519E80, 0x6D50E500, - 0x6D502B80, 0x6D4F7200, 0x6D4EB880, - 0x6D4DFF00, 0x6D4D4580, 0x6D4C8C00, - 0x6D4BD280, 0x6D4B1900, 0x6D4A5F80, - 0x6D49A600, 0x6D48EC80, 0x6D483300, - 0x6D477980, 0x6D46C000, 0x6D460680, - 0x6D454D00, 0x6D449380, 0x6D43DA00, - 0x6D432080, 0x6D426700, 0x6D41AD80, - 0x6D40F400, 0x6D403A80, 0x6D3F8100, - 0x6D3EC780, 0x6D3E0E00, 0x6D3D5480, - 0x6D3C9B00, 0x6D3BE180, 0x6D3B2800, - 0x6D3A6E80, 0x6D39B500, 0x6D38FB80, - 0x6D384200, 0x6D378880, 0x6D36CF00, - 0x6D361580, 0x6D355C00, 0x6D34A280, - 0x6D33E900, 0x6D332F80, 0x6D327600, - 0x6D31BC80, 0x6D310300, 0x6D304980, - 0x6D2F9000, 0x6D2ED680, 0x6D2E1D00, - 0x6D2D6380, 0x6D2CAA00, 0x6D2BF080, - 0x6D2B3700, 0x6D2A7D80, 0x6D29C400, - 0x6D290A80, 0x6D285100, 0x6D279780, - 0x6D26DE00, 0x6D262480, 0x6D256B00, - 0x6D24B180, 0x6D23F800, 0x6D233E80, - 0x6D228500, 0x6D21CB80, 0x6D211200, - 0x6D205880, 0x6D1F9F00, 0x6D1EE580, - 0x6D1E2C00, 0x6D1D7280, 0x6D1CB900, - 0x6D1BFF80, 0x6D1B4600, 0x6D1A8C80, - 0x6D19D300, 0x6D191980, 0x6D186000, - 0x6D17A680, 0x6D16ED00, 0x6D163380, - 0x6D157A00, 0x6D14C080, 0x6D140700, - 0x6D134D80, 0x6D129400, 0x6D11DA80, - 0x6D112100, 0x6D106780, 0x6D0FAE00, - 0x6D0EF480, 0x6D0E3B00, 0x6D0D8180, - 0x6D0CC800, 0x6D0C0E80, 0x6D0B5500, - 0x6D0A9B80, 0x6D09E200, 0x6D092880, - 0x6D086F00, 0x6D07B580, 0x6D06FC00, - 0x6D064280, 0x6D058900, 0x6D04CF80, - 0x6D041600, 0x6D035C80, 0x6D02A300, - 0x6D01E980, 0x6D013000, 0x6D007680, - 0x6CFFBD00, 0x6CFF0380, 0x6CFE4A00, - 0x6CFD9080, 0x6CFCD700, 0x6CFC1D80, - 0x6CFB6400, 0x6CFAAA80, 0x6CF9F100, - 0x6CF93780, 0x6CF87E00, 0x6CF7C480, - 0x6CF70B00, 0x6CF65180, 0x6CF59800, - 0x6CF4DE80, 0x6CF42500, 0x6CF36B80, - 0x6CF2B200, 0x6CF1F880, 0x6CF13F00, - 0x6CF08580, 0x6CEFCC00, 0x6CEF1280, - 0x6CEE5900, 0x6CED9F80, 0x6CECE600, - 0x6CEC2C80, 0x6CEB7300, 0x6CEAB980, - 0x6CEA0000, 0x6CE94680, 0x6CE88D00, - 0x6CE7D380, 0x6CE71A00, 0x6CE66080, - 0x6CE5A700, 0x6CE4ED80, 0x6CE43400, - 0x6CE37A80, 0x6CE2C100, 0x6CE20780, - 0x6CE14E00, 0x6CE09480, 0x6CDFDB00, - 0x6CDF2180, 0x6CDE6800, 0x6CDDAE80, - 0x6CDCF500, 0x6CDC3B80, 0x6CDB8200, - 0x6CDAC880, 0x6CDA0F00, 0x6CD95580, - 0x6CD89C00, 0x6CD7E280, 0x6CD72900, - 0x6CD66F80, 0x6CD5B600, 0x6CD4FC80, - 0x6CD44300, 0x6CD38980, 0x6CD2D000, - 0x6CD21680, 0x6CD15D00, 0x6CD0A380, - 0x6CCFEA00, 0x6CCF3080, 0x6CCE7700, - 0x6CCDBD80, 0x6CCD0400, 0x6CCC4A80, - 0x6CCB9100, 0x6CCAD780, 0x6CCA1E00, - 0x6CC96480, 0x6CC8AB00, 0x6CC7F180, - 0x6CC73800, 0x6CC67E80, 0x6CC5C500, - 0x6CC50B80, 0x6CC45200, 0x6CC39880, - 0x6CC2DF00, 0x6CC22580, 0x6CC16C00, - 0x6CC0B280, 0x6CBFF900, 0x6CBF3F80, - 0x6CBE8600, 0x6CBDCC80, 0x6CBD1300, - 0x6CBC5980, 0x6CBBA000, 0x6CBAE680, - 0x6CBA2D00, 0x6CB97380, 0x6CB8BA00, - 0x6CB80080, 0x6CB74700, 0x6CB68D80, - 0x6CB5D400, 0x6CB51A80, 0x6CB46100, - 0x6CB3A780, 0x6CB2EE00, 0x6CB23480, - 0x6CB17B00, 0x6CB0C180, 0x6CB00800, - 0x6CAF4E80, 0x6CAE9500, 0x6CADDB80, - 0x6CAD2200, 0x6CAC6880, 0x6CABAF00, - 0x6CAAF580, 0x6CAA3C00, 0x6CA98280, - 0x6CA8C900, 0x6CA80F80, 0x6CA75600, - 0x6CA69C80, 0x6CA5E300, 0x6CA52980, - 0x6CA47000, 0x6CA3B680, 0x6CA2FD00, - 0x6CA24380, 0x6CA18A00, 0x6CA0D080, - 0x6CA01700, 0x6C9F5D80, 0x6C9EA400, - 0x6C9DEA80, 0x6C9D3100, 0x6C9C7780, - 0x6C9BBE00, 0x6C9B0480, 0x6C9A4B00, - 0x6C999180, 0x6C98D800, 0x6C981E80, - 0x6C976500, 0x6C96AB80, 0x6C95F200, - 0x6C953880, 0x6C947F00, 0x6C93C580, - 0x6C930C00, 0x6C925280, 0x6C919900, - 0x6C90DF80, 0x6C902600, 0x6C8F6C80, - 0x6C8EB300, 0x6C8DF980, 0x6C8D4000, - 0x6C8C8680, 0x6C8BCD00, 0x6C8B1380, - 0x6C8A5A00, 0x6C89A080, 0x6C88E700, - 0x6C882D80, 0x6C877400, 0x6C86BA80, - 0x6C860100, 0x6C854780, 0x6C848E00, - 0x6C83D480, 0x6C831B00, 0x6C826180, - 0x6C81A800, 0x6C80EE80, 0x6C803500, - 0x6C7F7B80, 0x6C7EC200, 0x6C7E0880, - 0x6C7D4F00, 0x6C7C9580, 0x6C7BDC00, - 0x6C7B2280, 0x6C7A6900, 0x6C79AF80, - 0x6C78F600, 0x6C783C80, 0x6C778300, - 0x6C76C980, 0x6C761000, 0x6C755680, - 0x6C749D00, 0x6C73E380, 0x6C732A00, - 0x6C727080, 0x6C71B700, 0x6C70FD80, - 0x6C704400, 0x6C6F8A80, 0x6C6ED100, - 0x6C6E1780, 0x6C6D5E00, 0x6C6CA480, - 0x6C6BEB00, 0x6C6B3180, 0x6C6A7800, - 0x6C69BE80, 0x6C690500, 0x6C684B80, - 0x6C679200, 0x6C66D880, 0x6C661F00, - 0x6C656580, 0x6C64AC00, 0x6C63F280, - 0x6C633900, 0x6C627F80, 0x6C61C600, - 0x6C610C80, 0x6C605300, 0x6C5F9980, - 0x6C5EE000, 0x6C5E2680, 0x6C5D6D00, - 0x6C5CB380, 0x6C5BFA00, 0x6C5B4080, - 0x6C5A8700, 0x6C59CD80, 0x6C591400, - 0x6C585A80, 0x6C57A100, 0x6C56E780, - 0x6C562E00, 0x6C557480, 0x6C54BB00, - 0x6C540180, 0x6C534800, 0x6C528E80, - 0x6C51D500, 0x6C511B80, 0x6C506200, - 0x6C4FA880, 0x6C4EEF00, 0x6C4E3580, - 0x6C4D7C00, 0x6C4CC280, 0x6C4C0900, - 0x6C4B4F80, 0x6C4A9600, 0x6C49DC80, - 0x6C492300, 0x6C486980, 0x6C47B000, - 0x6C46F680, 0x6C463D00, 0x6C458380, - 0x6C44CA00, 0x6C441080, 0x6C435700, - 0x6C429D80, 0x6C41E400, 0x6C412A80, - 0x6C407100, 0x6C3FB780, 0x6C3EFE00, - 0x6C3E4480, 0x6C3D8B00, 0x6C3CD180, - 0x6C3C1800, 0x6C3B5E80, 0x6C3AA500, - 0x6C39EB80, 0x6C393200, 0x6C387880, - 0x6C37BF00, 0x6C370580, 0x6C364C00, - 0x6C359280, 0x6C34D900, 0x6C341F80, - 0x6C336600, 0x6C32AC80, 0x6C31F300, - 0x6C313980, 0x6C308000, 0x6C2FC680, - 0x6C2F0D00, 0x6C2E5380, 0x6C2D9A00, - 0x6C2CE080, 0x6C2C2700, 0x6C2B6D80, - 0x6C2AB400, 0x6C29FA80, 0x6C294100, - 0x6C288780, 0x6C27CE00, 0x6C271480, - 0x6C265B00, 0x6C25A180, 0x6C24E800, - 0x6C242E80, 0x6C237500, 0x6C22BB80, - 0x6C220200, 0x6C214880, 0x6C208F00, - 0x6C1FD580, 0x6C1F1C00, 0x6C1E6280, - 0x6C1DA900, 0x6C1CEF80, 0x6C1C3600, - 0x6C1B7C80, 0x6C1AC300, 0x6C1A0980, - 0x6C195000, 0x6C189680, 0x6C17DD00, - 0x6C172380, 0x6C166A00, 0x6C15B080, - 0x6C14F700, 0x6C143D80, 0x6C138400, - 0x6C12CA80, 0x6C121100, 0x6C115780, - 0x6C109E00, 0x6C0FE480, 0x6C0F2B00, - 0x6C0E7180, 0x6C0DB800, 0x6C0CFE80, - 0x6C0C4500, 0x6C0B8B80, 0x6C0AD200, - 0x6C0A1880, 0x6C095F00, 0x6C08A580, - 0x6C07EC00, 0x6C073280, 0x6C067900, - 0x6C05BF80, 0x6C050600, 0x6C044C80, - 0x6C039300, 0x6C02D980, 0x6C022000, - 0x6C016680, 0x6C00AD00, 0x6BFFF380, - 0x6BFF3A00, 0x6BFE8080, 0x6BFDC700, - 0x6BFD0D80, 0x6BFC5400, 0x6BFB9A80, - 0x6BFAE100, 0x6BFA2780, 0x6BF96E00, - 0x6BF8B480, 0x6BF7FB00, 0x6BF74180, - 0x6BF68800, 0x6BF5CE80, 0x6BF51500, - 0x6BF45B80, 0x6BF3A200, 0x6BF2E880, - 0x6BF22F00, 0x6BF17580, 0x6BF0BC00, - 0x6BF00280, 0x6BEF4900, 0x6BEE8F80, - 0x6BEDD600, 0x6BED1C80, 0x6BEC6300, - 0x6BEBA980, 0x6BEAF000, 0x6BEA3680, - 0x6BE97D00, 0x6BE8C380, 0x6BE80A00, - 0x6BE75080, 0x6BE69700, 0x6BE5DD80, - 0x6BE52400, 0x6BE46A80, 0x6BE3B100, - 0x6BE2F780, 0x6BE23E00, 0x6BE18480, - 0x6BE0CB00, 0x6BE01180, 0x6BDF5800, - 0x6BDE9E80, 0x6BDDE500, 0x6BDD2B80, - 0x6BDC7200, 0x6BDBB880, 0x6BDAFF00, - 0x6BDA4580, 0x6BD98C00, 0x6BD8D280, - 0x6BD81900, 0x6BD75F80, 0x6BD6A600, - 0x6BD5EC80, 0x6BD53300, 0x6BD47980, - 0x6BD3C000, 0x6BD30680, 0x6BD24D00, - 0x6BD19380, 0x6BD0DA00, 0x6BD02080, - 0x6BCF6700, 0x6BCEAD80, 0x6BCDF400, - 0x6BCD3A80, 0x6BCC8100, 0x6BCBC780, - 0x6BCB0E00, 0x6BCA5480, 0x6BC99B00, - 0x6BC8E180, 0x6BC82800, 0x6BC76E80, - 0x6BC6B500, 0x6BC5FB80, 0x6BC54200, - 0x6BC48880, 0x6BC3CF00, 0x6BC31580, - 0x6BC25C00, 0x6BC1A280, 0x6BC0E900, - 0x6BC02F80, 0x6BBF7600, 0x6BBEBC80, - 0x6BBE0300, 0x6BBD4980, 0x6BBC9000, - 0x6BBBD680, 0x6BBB1D00, 0x6BBA6380, - 0x6BB9AA00, 0x6BB8F080, 0x6BB83700, - 0x6BB77D80, 0x6BB6C400, 0x6BB60A80, - 0x6BB55100, 0x6BB49780, 0x6BB3DE00, - 0x6BB32480, 0x6BB26B00, 0x6BB1B180, - 0x6BB0F800, 0x6BB03E80, 0x6BAF8500, - 0x6BAECB80, 0x6BAE1200, 0x6BAD5880, - 0x6BAC9F00, 0x6BABE580, 0x6BAB2C00, - 0x6BAA7280, 0x6BA9B900, 0x6BA8FF80, - 0x6BA84600, 0x6BA78C80, 0x6BA6D300, - 0x6BA61980, 0x6BA56000, 0x6BA4A680, - 0x6BA3ED00, 0x6BA33380, 0x6BA27A00, - 0x6BA1C080, 0x6BA10700, 0x6BA04D80, - 0x6B9F9400, 0x6B9EDA80, 0x6B9E2100, - 0x6B9D6780, 0x6B9CAE00, 0x6B9BF480, - 0x6B9B3B00, 0x6B9A8180, 0x6B99C800, - 0x6B990E80, 0x6B985500, 0x6B979B80, - 0x6B96E200, 0x6B962880, 0x6B956F00, - 0x6B94B580, 0x6B93FC00, 0x6B934280, - 0x6B928900, 0x6B91CF80, 0x6B911600, - 0x6B905C80, 0x6B8FA300, 0x6B8EE980, - 0x6B8E3000, 0x6B8D7680, 0x6B8CBD00, - 0x6B8C0380, 0x6B8B4A00, 0x6B8A9080, - 0x6B89D700, 0x6B891D80, 0x6B886400, - 0x6B87AA80, 0x6B86F100, 0x6B863780, - 0x6B857E00, 0x6B84C480, 0x6B840B00, - 0x6B835180, 0x6B829800, 0x6B81DE80, - 0x6B812500, 0x6B806B80, 0x6B7FB200, - 0x6B7EF880, 0x6B7E3F00, 0x6B7D8580, - 0x6B7CCC00, 0x6B7C1280, 0x6B7B5900, - 0x6B7A9F80, 0x6B79E600, 0x6B792C80, - 0x6B787300, 0x6B77B980, 0x6B770000, - 0x6B764680, 0x6B758D00, 0x6B74D380, - 0x6B741A00, 0x6B736080, 0x6B72A700, - 0x6B71ED80, 0x6B713400, 0x6B707A80, - 0x6B6FC100, 0x6B6F0780, 0x6B6E4E00, - 0x6B6D9480, 0x6B6CDB00, 0x6B6C2180, - 0x6B6B6800, 0x6B6AAE80, 0x6B69F500, - 0x6B693B80, 0x6B688200, 0x6B67C880, - 0x6B670F00, 0x6B665580, 0x6B659C00, - 0x6B64E280, 0x6B642900, 0x6B636F80, - 0x6B62B600, 0x6B61FC80, 0x6B614300, - 0x6B608980, 0x6B5FD000, 0x6B5F1680, - 0x6B5E5D00, 0x6B5DA380, 0x6B5CEA00, - 0x6B5C3080, 0x6B5B7700, 0x6B5ABD80, - 0x6B5A0400, 0x6B594A80, 0x6B589100, - 0x6B57D780, 0x6B571E00, 0x6B566480, - 0x6B55AB00, 0x6B54F180, 0x6B543800, - 0x6B537E80, 0x6B52C500, 0x6B520B80, - 0x6B515200, 0x6B509880, 0x6B4FDF00, - 0x6B4F2580, 0x6B4E6C00, 0x6B4DB280, - 0x6B4CF900, 0x6B4C3F80, 0x6B4B8600, - 0x6B4ACC80, 0x6B4A1300, 0x6B495980, - 0x6B48A000, 0x6B47E680, 0x6B472D00, - 0x6B467380, 0x6B45BA00, 0x6B450080, - 0x6B444700, 0x6B438D80, 0x6B42D400, - 0x6B421A80, 0x6B416100, 0x6B40A780, - 0x6B3FEE00, 0x6B3F3480, 0x6B3E7B00, - 0x6B3DC180, 0x6B3D0800, 0x6B3C4E80, - 0x6B3B9500, 0x6B3ADB80, 0x6B3A2200, - 0x6B396880, 0x6B38AF00, 0x6B37F580, - 0x6B373C00, 0x6B368280, 0x6B35C900, - 0x6B350F80, 0x6B345600, 0x6B339C80, - 0x6B32E300, 0x6B322980, 0x6B317000, - 0x6B30B680, 0x6B2FFD00, 0x6B2F4380, - 0x6B2E8A00, 0x6B2DD080, 0x6B2D1700, - 0x6B2C5D80, 0x6B2BA400, 0x6B2AEA80, - 0x6B2A3100, 0x6B297780, 0x6B28BE00, - 0x6B280480, 0x6B274B00, 0x6B269180, - 0x6B25D800, 0x6B251E80, 0x6B246500, - 0x6B23AB80, 0x6B22F200, 0x6B223880, - 0x6B217F00, 0x6B20C580, 0x6B200C00, - 0x6B1F5280, 0x6B1E9900, 0x6B1DDF80, - 0x6B1D2600, 0x6B1C6C80, 0x6B1BB300, - 0x6B1AF980, 0x6B1A4000, 0x6B198680, - 0x6B18CD00, 0x6B181380, 0x6B175A00, - 0x6B16A080, 0x6B15E700, 0x6B152D80, - 0x6B147400, 0x6B13BA80, 0x6B130100, - 0x6B124780, 0x6B118E00, 0x6B10D480, - 0x6B101B00, 0x6B0F6180, 0x6B0EA800, - 0x6B0DEE80, 0x6B0D3500, 0x6B0C7B80, - 0x6B0BC200, 0x6B0B0880, 0x6B0A4F00, - 0x6B099580, 0x6B08DC00, 0x6B082280, - 0x6B076900, 0x6B06AF80, 0x6B05F600, - 0x6B053C80, 0x6B048300, 0x6B03C980, - 0x6B031000, 0x6B025680, 0x6B019D00, - 0x6B00E380, 0x6B002A00, 0x6AFF7080, - 0x6AFEB700, 0x6AFDFD80, 0x6AFD4400, - 0x6AFC8A80, 0x6AFBD100, 0x6AFB1780, - 0x6AFA5E00, 0x6AF9A480, 0x6AF8EB00, - 0x6AF83180, 0x6AF77800, 0x6AF6BE80, - 0x6AF60500, 0x6AF54B80, 0x6AF49200, - 0x6AF3D880, 0x6AF31F00, 0x6AF26580, - 0x6AF1AC00, 0x6AF0F280, 0x6AF03900, - 0x6AEF7F80, 0x6AEEC600, 0x6AEE0C80, - 0x6AED5300, 0x6AEC9980, 0x6AEBE000, - 0x6AEB2680, 0x6AEA6D00, 0x6AE9B380, - 0x6AE8FA00, 0x6AE84080, 0x6AE78700, - 0x6AE6CD80, 0x6AE61400, 0x6AE55A80, - 0x6AE4A100, 0x6AE3E780, 0x6AE32E00, - 0x6AE27480, 0x6AE1BB00, 0x6AE10180, - 0x6AE04800, 0x6ADF8E80, 0x6ADED500, - 0x6ADE1B80, 0x6ADD6200, 0x6ADCA880, - 0x6ADBEF00, 0x6ADB3580, 0x6ADA7C00, - 0x6AD9C280, 0x6AD90900, 0x6AD84F80, - 0x6AD79600, 0x6AD6DC80, 0x6AD62300, - 0x6AD56980, 0x6AD4B000, 0x6AD3F680, - 0x6AD33D00, 0x6AD28380, 0x6AD1CA00, - 0x6AD11080, 0x6AD05700, 0x6ACF9D80, - 0x6ACEE400, 0x6ACE2A80, 0x6ACD7100, - 0x6ACCB780, 0x6ACBFE00, 0x6ACB4480, - 0x6ACA8B00, 0x6AC9D180, 0x6AC91800, - 0x6AC85E80, 0x6AC7A500, 0x6AC6EB80, - 0x6AC63200, 0x6AC57880, 0x6AC4BF00, - 0x6AC40580, 0x6AC34C00, 0x6AC29280, - 0x6AC1D900, 0x6AC11F80, 0x6AC06600, - 0x6ABFAC80, 0x6ABEF300, 0x6ABE3980, - 0x6ABD8000, 0x6ABCC680, 0x6ABC0D00, - 0x6ABB5380, 0x6ABA9A00, 0x6AB9E080, - 0x6AB92700, 0x6AB86D80, 0x6AB7B400, - 0x6AB6FA80, 0x6AB64100, 0x6AB58780, - 0x6AB4CE00, 0x6AB41480, 0x6AB35B00, - 0x6AB2A180, 0x6AB1E800, 0x6AB12E80, - 0x6AB07500, 0x6AAFBB80, 0x6AAF0200, - 0x6AAE4880, 0x6AAD8F00, 0x6AACD580, - 0x6AAC1C00, 0x6AAB6280, 0x6AAAA900, - 0x6AA9EF80, 0x6AA93600, 0x6AA87C80, - 0x6AA7C300, 0x6AA70980, 0x6AA65000, - 0x6AA59680, 0x6AA4DD00, 0x6AA42380, - 0x6AA36A00, 0x6AA2B080, 0x6AA1F700, - 0x6AA13D80, 0x6AA08400, 0x6A9FCA80, - 0x6A9F1100, 0x6A9E5780, 0x6A9D9E00, - 0x6A9CE480, 0x6A9C2B00, 0x6A9B7180, - 0x6A9AB800, 0x6A99FE80, 0x6A994500, - 0x6A988B80, 0x6A97D200, 0x6A971880, - 0x6A965F00, 0x6A95A580, 0x6A94EC00, - 0x6A943280, 0x6A937900, 0x6A92BF80, - 0x6A920600, 0x6A914C80, 0x6A909300, - 0x6A8FD980, 0x6A8F2000, 0x6A8E6680, - 0x6A8DAD00, 0x6A8CF380, 0x6A8C3A00, - 0x6A8B8080, 0x6A8AC700, 0x6A8A0D80, - 0x6A895400, 0x6A889A80, 0x6A87E100, - 0x6A872780, 0x6A866E00, 0x6A85B480, - 0x6A84FB00, 0x6A844180, 0x6A838800, - 0x6A82CE80, 0x6A821500, 0x6A815B80, - 0x6A80A200, 0x6A7FE880, 0x6A7F2F00, - 0x6A7E7580, 0x6A7DBC00, 0x6A7D0280, - 0x6A7C4900, 0x6A7B8F80, 0x6A7AD600, - 0x6A7A1C80, 0x6A796300, 0x6A78A980, - 0x6A77F000, 0x6A773680, 0x6A767D00, - 0x6A75C380, 0x6A750A00, 0x6A745080, - 0x6A739700, 0x6A72DD80, 0x6A722400, - 0x6A716A80, 0x6A70B100, 0x6A6FF780, - 0x6A6F3E00, 0x6A6E8480, 0x6A6DCB00, - 0x6A6D1180, 0x6A6C5800, 0x6A6B9E80, - 0x6A6AE500, 0x6A6A2B80, 0x6A697200, - 0x6A68B880, 0x6A67FF00, 0x6A674580, - 0x6A668C00, 0x6A65D280, 0x6A651900, - 0x6A645F80, 0x6A63A600, 0x6A62EC80, - 0x6A623300, 0x6A617980, 0x6A60C000, - 0x6A600680, 0x6A5F4D00, 0x6A5E9380, - 0x6A5DDA00, 0x6A5D2080, 0x6A5C6700, - 0x6A5BAD80, 0x6A5AF400, 0x6A5A3A80, - 0x6A598100, 0x6A58C780, 0x6A580E00, - 0x6A575480, 0x6A569B00, 0x6A55E180, - 0x6A552800, 0x6A546E80, 0x6A53B500, - 0x6A52FB80, 0x6A524200, 0x6A518880, - 0x6A50CF00, 0x6A501580, 0x6A4F5C00, - 0x6A4EA280, 0x6A4DE900, 0x6A4D2F80, - 0x6A4C7600, 0x6A4BBC80, 0x6A4B0300, - 0x6A4A4980, 0x6A499000, 0x6A48D680, - 0x6A481D00, 0x6A476380, 0x6A46AA00, - 0x6A45F080, 0x6A453700, 0x6A447D80, - 0x6A43C400, 0x6A430A80, 0x6A425100, - 0x6A419780, 0x6A40DE00, 0x6A402480, - 0x6A3F6B00, 0x6A3EB180, 0x6A3DF800, - 0x6A3D3E80, 0x6A3C8500, 0x6A3BCB80, - 0x6A3B1200, 0x6A3A5880, 0x6A399F00, - 0x6A38E580, 0x6A382C00, 0x6A377280, - 0x6A36B900, 0x6A35FF80, 0x6A354600, - 0x6A348C80, 0x6A33D300, 0x6A331980, - 0x6A326000, 0x6A31A680, 0x6A30ED00, - 0x6A303380, 0x6A2F7A00, 0x6A2EC080, - 0x6A2E0700, 0x6A2D4D80, 0x6A2C9400, - 0x6A2BDA80, 0x6A2B2100, 0x6A2A6780, - 0x6A29AE00, 0x6A28F480, 0x6A283B00, - 0x6A278180, 0x6A26C800, 0x6A260E80, - 0x6A255500, 0x6A249B80, 0x6A23E200, - 0x6A232880, 0x6A226F00, 0x6A21B580, - 0x6A20FC00, 0x6A204280, 0x6A1F8900, - 0x6A1ECF80, 0x6A1E1600, 0x6A1D5C80, - 0x6A1CA300, 0x6A1BE980, 0x6A1B3000, - 0x6A1A7680, 0x6A19BD00, 0x6A190380, - 0x6A184A00, 0x6A179080, 0x6A16D700, - 0x6A161D80, 0x6A156400, 0x6A14AA80, - 0x6A13F100, 0x6A133780, 0x6A127E00, - 0x6A11C480, 0x6A110B00, 0x6A105180, - 0x6A0F9800, 0x6A0EDE80, 0x6A0E2500, - 0x6A0D6B80, 0x6A0CB200, 0x6A0BF880, - 0x6A0B3F00, 0x6A0A8580, 0x6A09CC00, - 0x6A091280, 0x6A085900, 0x6A079F80, - 0x6A06E600, 0x6A062C80, 0x6A057300, - 0x6A04B980 -}; diff --git a/Source/Core/Core/PowerPC/LUT_frsqrtex.h b/Source/Core/Core/PowerPC/LUT_frsqrtex.h deleted file mode 100644 index 72d641c..0000000 --- a/Source/Core/Core/PowerPC/LUT_frsqrtex.h +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2013 Dolphin Emulator Project -// Licensed under GPLv2 -// Refer to the license.txt file included. - -// Gekko related unions, structs, ... - -#pragma once - -extern const unsigned int frsqrtex_lut[65536]; diff --git a/Source/Core/Core/PowerPC/PPCAnalyst.cpp b/Source/Core/Core/PowerPC/PPCAnalyst.cpp index 040f9fe..f8b4030 100644 --- a/Source/Core/Core/PowerPC/PPCAnalyst.cpp +++ b/Source/Core/Core/PowerPC/PPCAnalyst.cpp @@ -192,7 +192,7 @@ bool AnalyzeFunction(u32 startAddr, Symbol &func, int max_size) // Second pass analysis, done after the first pass is done for all functions // so we have more information to work with -void AnalyzeFunction2(Symbol *func) +static void AnalyzeFunction2(Symbol *func) { u32 flags = func->flags; @@ -214,7 +214,7 @@ void AnalyzeFunction2(Symbol *func) } // IMPORTANT - CURRENTLY ASSUMES THAT A IS A COMPARE -bool CanSwapAdjacentOps(const CodeOp &a, const CodeOp &b) +static bool CanSwapAdjacentOps(const CodeOp &a, const CodeOp &b) { const GekkoOPInfo *b_info = b.opinfo; int b_flags = b_info->flags; @@ -273,7 +273,7 @@ bool CanSwapAdjacentOps(const CodeOp &a, const CodeOp &b) // called by another function. Therefore, let's scan the // entire space for bl operations and find what functions // get called. -void FindFunctionsFromBranches(u32 startAddr, u32 endAddr, SymbolDB *func_db) +static void FindFunctionsFromBranches(u32 startAddr, u32 endAddr, SymbolDB *func_db) { for (u32 addr = startAddr; addr < endAddr; addr+=4) { @@ -304,7 +304,7 @@ void FindFunctionsFromBranches(u32 startAddr, u32 endAddr, SymbolDB *func_db) } } -void FindFunctionsAfterBLR(PPCSymbolDB *func_db) +static void FindFunctionsAfterBLR(PPCSymbolDB *func_db) { vector funcAddrs; diff --git a/Source/Core/Core/PowerPC/PowerPC.cpp b/Source/Core/Core/PowerPC/PowerPC.cpp index db4e755..caa7f02 100644 --- a/Source/Core/Core/PowerPC/PowerPC.cpp +++ b/Source/Core/Core/PowerPC/PowerPC.cpp @@ -30,10 +30,10 @@ namespace PowerPC // STATE_TO_SAVE PowerPCState GC_ALIGNED16(ppcState); -volatile CPUState state = CPU_STEPPING; +static volatile CPUState state = CPU_STEPPING; Interpreter * const interpreter = Interpreter::getInstance(); -CoreMode mode; +static CoreMode mode; BreakPoints breakpoints; MemChecks memchecks; @@ -74,7 +74,7 @@ void DoState(PointerWrap &p) JitInterface::DoState(p); } -void ResetRegisters() +static void ResetRegisters() { memset(ppcState.ps, 0, sizeof(ppcState.ps)); memset(ppcState.gpr, 0, sizeof(ppcState.gpr)); diff --git a/Source/Core/Core/PowerPC/Profiler.cpp b/Source/Core/Core/PowerPC/Profiler.cpp index 3ab1fde..dc1e376 100644 --- a/Source/Core/Core/PowerPC/Profiler.cpp +++ b/Source/Core/Core/PowerPC/Profiler.cpp @@ -4,12 +4,12 @@ #include #include "Core/PowerPC/JitInterface.h" +#include "Core/PowerPC/Profiler.h" namespace Profiler { bool g_ProfileBlocks; -bool g_ProfileInstructions; void WriteProfileResults(const std::string& filename) { diff --git a/Source/Core/Core/PowerPC/Profiler.h b/Source/Core/Core/PowerPC/Profiler.h index 1f76671..6b335d6 100644 --- a/Source/Core/Core/PowerPC/Profiler.h +++ b/Source/Core/Core/PowerPC/Profiler.h @@ -58,7 +58,6 @@ struct BlockStat namespace Profiler { extern bool g_ProfileBlocks; -extern bool g_ProfileInstructions; void WriteProfileResults(const std::string& filename); } diff --git a/Source/Core/Core/State.cpp b/Source/Core/Core/State.cpp index 681411d..08fad24 100644 --- a/Source/Core/Core/State.cpp +++ b/Source/Core/Core/State.cpp @@ -63,7 +63,7 @@ static Common::Event g_compressAndDumpStateSyncEvent; static std::thread g_save_thread; // Don't forget to increase this after doing changes on the savestate system -static const u32 STATE_VERSION = 27; +static const u32 STATE_VERSION = 28; enum { @@ -79,7 +79,7 @@ void EnableCompression(bool compression) g_use_compression = compression; } -void DoState(PointerWrap &p) +static void DoState(PointerWrap &p) { u32 version = STATE_VERSION; { @@ -159,7 +159,7 @@ void VerifyBuffer(std::vector& buffer) } // return state number not in map -int GetEmptySlot(std::map m) +static int GetEmptySlot(std::map m) { for (int i = 1; i <= (int)NUM_STATES; i++) { @@ -180,7 +180,7 @@ int GetEmptySlot(std::map m) static std::string MakeStateFilename(int number); // read state timestamps -std::map GetSavedStates() +static std::map GetSavedStates() { StateHeader header; std::map m; @@ -209,7 +209,7 @@ struct CompressAndDumpState_args bool wait; }; -void CompressAndDumpState(CompressAndDumpState_args save_args) +static void CompressAndDumpState(CompressAndDumpState_args save_args) { std::lock_guard lk(*save_args.buffer_mutex); if (!save_args.wait) @@ -356,7 +356,7 @@ bool ReadHeader(const std::string& filename, StateHeader& header) return true; } -void LoadFileStateData(const std::string& filename, std::vector& ret_data) +static void LoadFileStateData(const std::string& filename, std::vector& ret_data) { Flush(); File::IOFile f(filename, "rb"); @@ -424,7 +424,7 @@ void LoadFileStateData(const std::string& filename, std::vector& ret_data) void LoadAs(const std::string& filename) { - if (Core::GetState() == Core::CORE_UNINITIALIZED) + if (!Core::IsRunning()) return; // Stop the core while we load the state diff --git a/Source/Core/Core/Tracer.cpp b/Source/Core/Core/Tracer.cpp index 787b66f..5418a24 100644 --- a/Source/Core/Core/Tracer.cpp +++ b/Source/Core/Core/Tracer.cpp @@ -7,16 +7,17 @@ #include "Common/Common.h" #include "Common/FileUtil.h" +#include "Core/Core.h" #include "Core/Host.h" #include "Core/Tracer.h" #include "Core/PowerPC/PowerPC.h" namespace Core { -File::IOFile tracefile; +static File::IOFile tracefile; -bool bReadTrace = false; -bool bWriteTrace = false; +static bool bReadTrace = false; +static bool bWriteTrace = false; void StartTrace(bool write) { diff --git a/Source/Core/Core/VolumeHandler.cpp b/Source/Core/Core/VolumeHandler.cpp index 5f48545..e0b58cd 100644 --- a/Source/Core/Core/VolumeHandler.cpp +++ b/Source/Core/Core/VolumeHandler.cpp @@ -8,7 +8,7 @@ namespace VolumeHandler { -DiscIO::IVolume* g_pVolume = nullptr; +static DiscIO::IVolume* g_pVolume = nullptr; DiscIO::IVolume *GetVolume() { diff --git a/Source/Core/Core/ec_wii.cpp b/Source/Core/Core/ec_wii.cpp index 62013b0..8b9f664 100644 --- a/Source/Core/Core/ec_wii.cpp +++ b/Source/Core/Core/ec_wii.cpp @@ -116,27 +116,6 @@ void make_blanksig_ec_cert(u8 *cert_out, const char *signer, const char *name, c ec_priv_to_pub(private_key, cert_out + 0x108); } - -// get_shared_secret - -// shared_secret_out is a pointer to 0x3c long buffer -// remote_public_key is a pointer to the remote party's public key (0x3c bytes) -// NG_priv is the device-unique private key to use -// if NG_priv is nullptr, default builtin will be used -void get_shared_secret(u8* shared_secret_out, u8* remote_public_key, u8* NG_priv) -{ - if (NG_priv==nullptr) - { - NG_priv = default_NG_priv; - } - - // required point_mul in Source/Core/Common/Crypto/ec.cpp - // to be made non-static - - point_mul(shared_secret_out, NG_priv, remote_public_key); - -} - EcWii::EcWii() { bool init = true; diff --git a/Source/Core/Core/ec_wii.h b/Source/Core/Core/ec_wii.h index b995114..d80c776 100644 --- a/Source/Core/Core/ec_wii.h +++ b/Source/Core/Core/ec_wii.h @@ -30,8 +30,6 @@ void get_ng_cert(u8* ng_cert_out, u32 NG_id, u32 NG_key_id, const u8* NG_priv, c void get_ap_sig_and_cert(u8 *sig_out, u8 *ap_cert_out, u64 title_id, u8 *data, u32 data_size, const u8 *NG_priv, u32 NG_id); void make_blanksig_ec_cert(u8 *cert_out, const char *signer, const char *name, const u8 *private_key, u32 key_id); -void get_shared_secret(u8* shared_secret_out, u8* remote_public_key, const u8* NG_priv); - class EcWii diff --git a/Source/Core/Core/x64MemTools.cpp b/Source/Core/Core/x64MemTools.cpp index af0530d..485b672 100644 --- a/Source/Core/Core/x64MemTools.cpp +++ b/Source/Core/Core/x64MemTools.cpp @@ -23,25 +23,7 @@ namespace EMM { -#if (defined __APPLE__ || defined __linux__ || defined __FreeBSD__) && !defined(ANDROID) -#include -void print_trace(const char * msg) -{ - void *array[100]; - size_t size; - char **strings; - size_t i; - - size = backtrace(array, 100); - strings = backtrace_symbols(array, size); - printf("%s Obtained %u stack frames.\n", msg, (unsigned int)size); - for (i = 0; i < size; i++) - printf("--> %s\n", strings[i]); - free(strings); -} -#endif - -bool DoFault(u64 bad_address, SContext *ctx) +static bool DoFault(u64 bad_address, SContext *ctx) { if (!JitInterface::IsInCodeSpace((u8*) ctx->CTX_PC)) { @@ -269,7 +251,7 @@ void InstallExceptionHandler() #elif !defined(ANDROID) -void sigsegv_handler(int sig, siginfo_t *info, void *raw_context) +static void sigsegv_handler(int sig, siginfo_t *info, void *raw_context) { #ifndef _M_GENERIC if (sig != SIGSEGV) diff --git a/Source/Core/DiscIO/BannerLoader.h b/Source/Core/DiscIO/BannerLoader.h index 74ed934..7d6a25b 100644 --- a/Source/Core/DiscIO/BannerLoader.h +++ b/Source/Core/DiscIO/BannerLoader.h @@ -17,23 +17,29 @@ class IVolume; class IBannerLoader { - public: +public: + IBannerLoader() + : m_IsValid(false) + , m_pBannerFile(nullptr) + {} - IBannerLoader() - {} + virtual ~IBannerLoader() + {} + virtual std::vector GetBanner(int* pWidth, int* pHeight) = 0; - virtual ~IBannerLoader() - {} + virtual std::vector GetNames() = 0; + virtual std::string GetCompany() = 0; + virtual std::vector GetDescriptions() = 0; + bool IsValid() + { + return m_IsValid; + } - virtual bool IsValid() = 0; - - virtual std::vector GetBanner(int* pWidth, int* pHeight) = 0; - - virtual std::vector GetNames() = 0; - virtual std::string GetCompany() = 0; - virtual std::vector GetDescriptions() = 0; +protected: + bool m_IsValid; + u8* m_pBannerFile; }; IBannerLoader* CreateBannerLoader(DiscIO::IFileSystem& _rFileSystem, DiscIO::IVolume *pVolume); diff --git a/Source/Core/DiscIO/BannerLoaderGC.cpp b/Source/Core/DiscIO/BannerLoaderGC.cpp index 5258eb6..09c675c 100644 --- a/Source/Core/DiscIO/BannerLoaderGC.cpp +++ b/Source/Core/DiscIO/BannerLoaderGC.cpp @@ -16,9 +16,7 @@ namespace DiscIO { CBannerLoaderGC::CBannerLoaderGC(DiscIO::IFileSystem& _rFileSystem, DiscIO::IVolume* volume) - : m_pBannerFile(nullptr) - , m_IsValid(false) - , m_country(volume->GetCountry()) + : m_country(volume->GetCountry()) { // load the opening.bnr size_t FileSize = (size_t) _rFileSystem.GetFileSize("opening.bnr"); @@ -49,12 +47,6 @@ CBannerLoaderGC::~CBannerLoaderGC() } } - -bool CBannerLoaderGC::IsValid() -{ - return m_IsValid; -} - std::vector CBannerLoaderGC::GetBanner(int* pWidth, int* pHeight) { std::vector Buffer; diff --git a/Source/Core/DiscIO/BannerLoaderGC.h b/Source/Core/DiscIO/BannerLoaderGC.h index 64623f8..94e2616 100644 --- a/Source/Core/DiscIO/BannerLoaderGC.h +++ b/Source/Core/DiscIO/BannerLoaderGC.h @@ -22,70 +22,65 @@ class IFileSystem; class CBannerLoaderGC : public IBannerLoader { - public: - CBannerLoaderGC(DiscIO::IFileSystem& _rFileSystem, DiscIO::IVolume* volume); - virtual ~CBannerLoaderGC(); - - virtual bool IsValid() override; - - virtual std::vector GetBanner(int* pWidth, int* pHeight) override; - - virtual std::vector GetNames() override; - virtual std::string GetCompany() override; - virtual std::vector GetDescriptions() override; - - private: - enum - { - DVD_BANNER_WIDTH = 96, - DVD_BANNER_HEIGHT = 32 - }; - - enum BANNER_TYPE - { - BANNER_UNKNOWN, - BANNER_BNR1, - BANNER_BNR2, - }; - - // Banner Comment - struct DVDBannerComment - { - char shortTitle[32]; // Short game title shown in IPL menu - char shortMaker[32]; // Short developer, publisher names shown in IPL menu - char longTitle[64]; // Long game title shown in IPL game start screen - char longMaker[64]; // Long developer, publisher names shown in IPL game start screen - char comment[128]; // Game description shown in IPL game start screen in two lines. - }; - - // "opening.bnr" file format for EU console - struct DVDBanner - { - u32 id; // 'BNR2' - u32 padding[7]; - u16 image[DVD_BANNER_WIDTH * DVD_BANNER_HEIGHT]; // RGB5A3 96x32 texture image - DVDBannerComment comment[6]; // Comments in six languages (only 1 for BNR1 type) - }; - - static const u32 BNR1_SIZE = sizeof(DVDBanner) - sizeof(DVDBannerComment) * 5; - static const u32 BNR2_SIZE = sizeof(DVDBanner); - - template - std::string GetDecodedString(const char (&data)[N]) - { - auto const string_decoder = CVolumeGC::GetStringDecoder(m_country); - - // strnlen to trim NULLs - return string_decoder(std::string(data, strnlen(data, sizeof(data)))); - } - - u8* m_pBannerFile; - bool m_IsValid; - BANNER_TYPE m_BNRType; - - BANNER_TYPE getBannerType(); - - DiscIO::IVolume::ECountry const m_country; +public: + CBannerLoaderGC(DiscIO::IFileSystem& _rFileSystem, DiscIO::IVolume* volume); + virtual ~CBannerLoaderGC(); + + virtual std::vector GetBanner(int* pWidth, int* pHeight) override; + + virtual std::vector GetNames() override; + virtual std::string GetCompany() override; + virtual std::vector GetDescriptions() override; + +private: + enum + { + DVD_BANNER_WIDTH = 96, + DVD_BANNER_HEIGHT = 32 + }; + + enum BANNER_TYPE + { + BANNER_UNKNOWN, + BANNER_BNR1, + BANNER_BNR2, + }; + + // Banner Comment + struct DVDBannerComment + { + char shortTitle[32]; // Short game title shown in IPL menu + char shortMaker[32]; // Short developer, publisher names shown in IPL menu + char longTitle[64]; // Long game title shown in IPL game start screen + char longMaker[64]; // Long developer, publisher names shown in IPL game start screen + char comment[128]; // Game description shown in IPL game start screen in two lines. + }; + + // "opening.bnr" file format for EU console + struct DVDBanner + { + u32 id; // 'BNR2' + u32 padding[7]; + u16 image[DVD_BANNER_WIDTH * DVD_BANNER_HEIGHT]; // RGB5A3 96x32 texture image + DVDBannerComment comment[6]; // Comments in six languages (only 1 for BNR1 type) + }; + + static const u32 BNR1_SIZE = sizeof(DVDBanner) - sizeof(DVDBannerComment) * 5; + static const u32 BNR2_SIZE = sizeof(DVDBanner); + + template + std::string GetDecodedString(const char (&data)[N]) + { + auto const string_decoder = CVolumeGC::GetStringDecoder(m_country); + + // strnlen to trim NULLs + return string_decoder(std::string(data, strnlen(data, sizeof(data)))); + } + + BANNER_TYPE m_BNRType; + BANNER_TYPE getBannerType(); + + DiscIO::IVolume::ECountry const m_country; }; } // namespace diff --git a/Source/Core/DiscIO/BannerLoaderWii.cpp b/Source/Core/DiscIO/BannerLoaderWii.cpp index 338169f..dc32765 100644 --- a/Source/Core/DiscIO/BannerLoaderWii.cpp +++ b/Source/Core/DiscIO/BannerLoaderWii.cpp @@ -21,8 +21,6 @@ namespace DiscIO { CBannerLoaderWii::CBannerLoaderWii(DiscIO::IVolume *pVolume) - : m_pBannerFile(nullptr) - , m_IsValid(false) { u64 TitleID; pVolume->GetTitleID((u8*)&TitleID); @@ -95,11 +93,6 @@ CBannerLoaderWii::~CBannerLoaderWii() } } -bool CBannerLoaderWii::IsValid() -{ - return m_IsValid; -} - std::vector CBannerLoaderWii::GetBanner(int* pWidth, int* pHeight) { SWiiBanner* pBanner = (SWiiBanner*)m_pBannerFile; diff --git a/Source/Core/DiscIO/BannerLoaderWii.h b/Source/Core/DiscIO/BannerLoaderWii.h index f11416e..1bbe077 100644 --- a/Source/Core/DiscIO/BannerLoaderWii.h +++ b/Source/Core/DiscIO/BannerLoaderWii.h @@ -18,54 +18,46 @@ class IVolume; class CBannerLoaderWii : public IBannerLoader { - public: - - CBannerLoaderWii(DiscIO::IVolume *pVolume); - - virtual ~CBannerLoaderWii(); - - virtual bool IsValid() override; - - virtual std::vector GetBanner(int* pWidth, int* pHeight) override; - - virtual std::vector GetNames() override; - virtual std::string GetCompany() override; - virtual std::vector GetDescriptions() override; - - private: - - enum - { - TEXTURE_SIZE = 192 * 64 * 2, - ICON_SIZE = 48 * 48 * 2, - COMMENT_SIZE = 32 - }; - - enum CommentIndex - { - NAME_IDX, - DESC_IDX - }; - - struct SWiiBanner - { - u32 ID; - - u32 m_Flag; - u16 m_Speed; - u8 m_Unknown[22]; - - // Not null terminated! - u16 m_Comment[2][COMMENT_SIZE]; - u8 m_BannerTexture[TEXTURE_SIZE]; - u8 m_IconTexture[8][ICON_SIZE]; - } ; - - u8* m_pBannerFile; - - bool m_IsValid; - - bool GetStringFromComments(const CommentIndex index, std::string& s); +public: + CBannerLoaderWii(DiscIO::IVolume *pVolume); + + virtual ~CBannerLoaderWii(); + + virtual std::vector GetBanner(int* pWidth, int* pHeight) override; + + virtual std::vector GetNames() override; + virtual std::string GetCompany() override; + virtual std::vector GetDescriptions() override; + +private: + enum + { + TEXTURE_SIZE = 192 * 64 * 2, + ICON_SIZE = 48 * 48 * 2, + COMMENT_SIZE = 32 + }; + + enum CommentIndex + { + NAME_IDX, + DESC_IDX + }; + + struct SWiiBanner + { + u32 ID; + + u32 m_Flag; + u16 m_Speed; + u8 m_Unknown[22]; + + // Not null terminated! + u16 m_Comment[2][COMMENT_SIZE]; + u8 m_BannerTexture[TEXTURE_SIZE]; + u8 m_IconTexture[8][ICON_SIZE]; + }; + + bool GetStringFromComments(const CommentIndex index, std::string& s); }; } // namespace diff --git a/Source/Core/DiscIO/DiscScrubber.cpp b/Source/Core/DiscIO/DiscScrubber.cpp index 69d98ff..77936d1 100644 --- a/Source/Core/DiscIO/DiscScrubber.cpp +++ b/Source/Core/DiscIO/DiscScrubber.cpp @@ -24,15 +24,15 @@ namespace DiscScrubber #define CLUSTER_SIZE 0x8000 -u8* m_FreeTable = nullptr; -u64 m_FileSize; -u64 m_BlockCount; -u32 m_BlockSize; -int m_BlocksPerCluster; -bool m_isScrubbing = false; +static u8* m_FreeTable = nullptr; +static u64 m_FileSize; +static u64 m_BlockCount; +static u32 m_BlockSize; +static int m_BlocksPerCluster; +static bool m_isScrubbing = false; -std::string m_Filename; -IVolume* m_Disc = nullptr; +static std::string m_Filename; +static IVolume* m_Disc = nullptr; struct SPartitionHeader { @@ -67,7 +67,7 @@ struct SPartitionGroup u64 PartitionsOffset; std::vector PartitionsVec; }; -SPartitionGroup PartitionGroup[4]; +static SPartitionGroup PartitionGroup[4]; void MarkAsUsed(u64 _Offset, u64 _Size); diff --git a/Source/Core/DiscIO/FileHandlerARC.cpp b/Source/Core/DiscIO/FileHandlerARC.cpp index 6215b0a..96bfaf9 100644 --- a/Source/Core/DiscIO/FileHandlerARC.cpp +++ b/Source/Core/DiscIO/FileHandlerARC.cpp @@ -192,26 +192,19 @@ size_t CARCFile::BuildFilenames(const size_t _FirstIndex, const size_t _LastInde while (CurrentIndex < _LastIndex) { SFileInfo& rFileInfo = m_FileInfoVector[CurrentIndex]; - int uOffset = rFileInfo.m_NameOffset & 0xFFFFFF; + int const uOffset = rFileInfo.m_NameOffset & 0xFFFFFF; + + rFileInfo.m_FullPath = _szDirectory + &_szNameTable[uOffset]; // check next index if (rFileInfo.IsDirectory()) { - if (_szDirectory.empty()) - rFileInfo.m_FullPath += StringFromFormat("%s/", &_szNameTable[uOffset]); - else - rFileInfo.m_FullPath += StringFromFormat("%s%s/", _szDirectory.c_str(), &_szNameTable[uOffset]); - - CurrentIndex = BuildFilenames(CurrentIndex + 1, (size_t) rFileInfo.m_FileSize, rFileInfo.m_FullPath, _szNameTable); + rFileInfo.m_FullPath += '/'; + CurrentIndex = BuildFilenames(CurrentIndex + 1, (size_t)rFileInfo.m_FileSize, rFileInfo.m_FullPath, _szNameTable); } - else // This is a filename + else { - if (_szDirectory.empty()) - rFileInfo.m_FullPath += StringFromFormat("%s", &_szNameTable[uOffset]); - else - rFileInfo.m_FullPath += StringFromFormat("%s%s", _szDirectory.c_str(), &_szNameTable[uOffset]); - - CurrentIndex++; + ++CurrentIndex; } } diff --git a/Source/Core/DiscIO/FileMonitor.cpp b/Source/Core/DiscIO/FileMonitor.cpp index 04ea595..ce8799b 100644 --- a/Source/Core/DiscIO/FileMonitor.cpp +++ b/Source/Core/DiscIO/FileMonitor.cpp @@ -17,6 +17,7 @@ #include "Core/Core.h" #include "Core/Boot/Boot.h" +#include "DiscIO/FileMonitor.h" #include "DiscIO/Filesystem.h" #include "DiscIO/Volume.h" #include "DiscIO/VolumeCreator.h" @@ -24,11 +25,11 @@ namespace FileMon { -DiscIO::IVolume *OpenISO = nullptr; -DiscIO::IFileSystem *pFileSystem = nullptr; -std::vector GCFiles; -std::string ISOFile = "", CurrentFile = ""; -bool FileAccess = true; +static DiscIO::IVolume *OpenISO = nullptr; +static DiscIO::IFileSystem *pFileSystem = nullptr; +static std::vector GCFiles; +static std::string ISOFile = "", CurrentFile = ""; +static bool FileAccess = true; // Filtered files bool IsSoundFile(const std::string& filename) diff --git a/Source/Core/DiscIO/FileSystemGCWii.cpp b/Source/Core/DiscIO/FileSystemGCWii.cpp index a264eb0..afc9b12 100644 --- a/Source/Core/DiscIO/FileSystemGCWii.cpp +++ b/Source/Core/DiscIO/FileSystemGCWii.cpp @@ -104,7 +104,7 @@ bool CFileSystemGCWii::ExportFile(const std::string& _rFullPath, const std::stri while (remainingSize) { // Limit read size to 128 MB - size_t readSize = std::min(remainingSize, (u64)0x08000000); + size_t readSize = (size_t)std::min(remainingSize, (u64)0x08000000); std::vector buffer(readSize); @@ -307,28 +307,20 @@ size_t CFileSystemGCWii::BuildFilenames(const size_t _FirstIndex, const size_t _ while (CurrentIndex < _LastIndex) { - SFileInfo *rFileInfo = &m_FileInfoVector[CurrentIndex]; - u64 uOffset = _NameTableOffset + (rFileInfo->m_NameOffset & 0xFFFFFF); - std::string filename = GetStringFromOffset(uOffset); + SFileInfo& rFileInfo = m_FileInfoVector[CurrentIndex]; + u64 const uOffset = _NameTableOffset + (rFileInfo.m_NameOffset & 0xFFFFFF); + + rFileInfo.m_FullPath = _szDirectory + GetStringFromOffset(uOffset); // check next index - if (rFileInfo->IsDirectory()) + if (rFileInfo.IsDirectory()) { - if (_szDirectory.empty()) - rFileInfo->m_FullPath += StringFromFormat("%s/", filename.c_str()); - else - rFileInfo->m_FullPath += StringFromFormat("%s%s/", _szDirectory.c_str(), filename.c_str()); - - CurrentIndex = BuildFilenames(CurrentIndex + 1, (size_t) rFileInfo->m_FileSize, rFileInfo->m_FullPath, _NameTableOffset); + rFileInfo.m_FullPath += '/'; + CurrentIndex = BuildFilenames(CurrentIndex + 1, (size_t) rFileInfo.m_FileSize, rFileInfo.m_FullPath, _NameTableOffset); } - else // This is a filename + else { - if (_szDirectory.empty()) - rFileInfo->m_FullPath += filename; - else - rFileInfo->m_FullPath += StringFromFormat("%s%s", _szDirectory.c_str(), filename.c_str()); - - CurrentIndex++; + ++CurrentIndex; } } diff --git a/Source/Core/DiscIO/VolumeCreator.cpp b/Source/Core/DiscIO/VolumeCreator.cpp index 71b41e1..0180326 100644 --- a/Source/Core/DiscIO/VolumeCreator.cpp +++ b/Source/Core/DiscIO/VolumeCreator.cpp @@ -14,6 +14,7 @@ #include "DiscIO/Blob.h" #include "DiscIO/Volume.h" +#include "DiscIO/VolumeCreator.h" #include "DiscIO/VolumeDirectory.h" #include "DiscIO/VolumeGC.h" #include "DiscIO/VolumeWad.h" diff --git a/Source/Core/DolphinWX/ARCodeAddEdit.cpp b/Source/Core/DolphinWX/ARCodeAddEdit.cpp index d821de7..6bcfc4f 100644 --- a/Source/Core/DolphinWX/ARCodeAddEdit.cpp +++ b/Source/Core/DolphinWX/ARCodeAddEdit.cpp @@ -25,12 +25,11 @@ #include "Core/ActionReplay.h" #include "Core/ARDecrypt.h" #include "DolphinWX/ARCodeAddEdit.h" +#include "DolphinWX/ISOProperties.h" #include "DolphinWX/WxUtils.h" class wxWindow; -extern std::vector arCodes; - BEGIN_EVENT_TABLE(CARCodeAddEdit, wxDialog) EVT_BUTTON(wxID_OK, CARCodeAddEdit::SaveCheatData) EVT_SPIN(ID_ENTRY_SELECT, CARCodeAddEdit::ChangeEntry) diff --git a/Source/Core/DolphinWX/CMakeLists.txt b/Source/Core/DolphinWX/CMakeLists.txt index db4b9b1..dff065c 100644 --- a/Source/Core/DolphinWX/CMakeLists.txt +++ b/Source/Core/DolphinWX/CMakeLists.txt @@ -89,7 +89,6 @@ if(wxWidgets_FOUND) PHackSettings.cpp PatchAddEdit.cpp TASInputDlg.cpp - UDPConfigDiag.cpp VideoConfigDiag.cpp WXInputBase.cpp WiimoteConfigDiag.cpp diff --git a/Source/Core/DolphinWX/CheatsWindow.cpp b/Source/Core/DolphinWX/CheatsWindow.cpp index 60c0d18..9fc6fb9 100644 --- a/Source/Core/DolphinWX/CheatsWindow.cpp +++ b/Source/Core/DolphinWX/CheatsWindow.cpp @@ -32,6 +32,7 @@ #include "Common/Common.h" #include "Common/IniFile.h" +#include "Common/StringUtil.h" #include "Core/ActionReplay.h" #include "Core/ConfigManager.h" #include "Core/Core.h" @@ -43,13 +44,12 @@ #include "DolphinWX/Frame.h" #include "DolphinWX/GeckoCodeDiag.h" #include "DolphinWX/ISOProperties.h" +#include "DolphinWX/Main.h" #include "DolphinWX/WxUtils.h" class wxWindow; #define MAX_CHEAT_SEARCH_RESULTS_DISPLAY 256 -extern std::vector arCodes; -extern CFrame* main_frame; // meh static wxCheatsWindow *g_cheat_window; @@ -332,17 +332,14 @@ void wxCheatsWindow::OnEvent_CheatsList_ItemSelected(wxCommandEvent& WXUNUSED (e { ARCode code = GetARCode(i); m_Label_Codename->SetLabel(_("Name: ") + StrToWxStr(code.name)); - char text[CHAR_MAX]; - char* numcodes = text; - sprintf(numcodes, "Number of Codes: %lu", (unsigned long)code.ops.size()); + + std::string numcodes = StringFromFormat("Number of Codes: %lu", (unsigned long)code.ops.size()); m_Label_NumCodes->SetLabel(StrToWxStr(numcodes)); m_ListBox_CodesList->Clear(); for (const AREntry& entry : code.ops) { - char text2[CHAR_MAX]; - char* ops = text2; - sprintf(ops, "%08x %08x", entry.cmd_addr, entry.value); + std::string ops = StringFromFormat("%08x %08x", entry.cmd_addr, entry.value); m_ListBox_CodesList->Append(StrToWxStr(ops)); } } @@ -531,7 +528,7 @@ void CheatSearchTab::FilterCheatSearchResults(wxCommandEvent&) void CheatSearchTab::ApplyFocus(wxEvent& ev) { - ev.Skip(true); + ev.Skip(); value_x_radiobtn.rad_uservalue->SetValue(true); } diff --git a/Source/Core/DolphinWX/ConfigMain.cpp b/Source/Core/DolphinWX/ConfigMain.cpp index 0995445..d65520b 100644 --- a/Source/Core/DolphinWX/ConfigMain.cpp +++ b/Source/Core/DolphinWX/ConfigMain.cpp @@ -71,8 +71,6 @@ const CPUCore CPUCores[] = { #endif }; -extern CFrame* main_frame; - // keep these in sync with CConfigMain::InitializeGUILists static const wxLanguage langIds[] = { @@ -231,7 +229,7 @@ void CConfigMain::SetSelectedTab(int tab) // Used to restrict changing of some options while emulator is running void CConfigMain::UpdateGUI() { - if (Core::GetState() != Core::CORE_UNINITIALIZED) + if (Core::IsRunning()) { // Disable the Core stuff on GeneralPage CPUThread->Disable(); @@ -672,7 +670,7 @@ void CConfigMain::CreateGUIControls() Latency->Bind(wxEVT_SPINCTRL, &CConfigMain::AudioSettingsChanged, this); - if (Core::GetState() != Core::CORE_UNINITIALIZED) + if (Core::IsRunning()) { Latency->Disable(); BackendSelection->Disable(); @@ -892,7 +890,7 @@ void CConfigMain::CoreSettingsChanged(wxCommandEvent& event) { // Core - Basic case ID_CPUTHREAD: - if (Core::GetState() != Core::CORE_UNINITIALIZED) + if (Core::IsRunning()) return; SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread = CPUThread->IsChecked(); break; @@ -1104,7 +1102,7 @@ void CConfigMain::ChooseMemcardPath(std::string& strMemcard, bool isSlotA) { strMemcard = filename; - if (Core::GetState() != Core::CORE_UNINITIALIZED) + if (Core::IsRunning()) { // Change memcard to the new file ExpansionInterface::ChangeDevice( @@ -1141,7 +1139,7 @@ void CConfigMain::ChooseSIDevice(wxString deviceName, int deviceNum) SConfig::GetInstance().m_SIDevice[deviceNum] = tempType; - if (Core::GetState() != Core::CORE_UNINITIALIZED) + if (Core::IsRunning()) { // Change plugged device! :D SerialInterface::ChangeDevice(tempType, deviceNum); @@ -1177,7 +1175,7 @@ void CConfigMain::ChooseEXIDevice(wxString deviceName, int deviceNum) SConfig::GetInstance().m_EXIDevice[deviceNum] = tempType; - if (Core::GetState() != Core::CORE_UNINITIALIZED) + if (Core::IsRunning()) { // Change plugged device! :D ExpansionInterface::ChangeDevice( diff --git a/Source/Core/DolphinWX/Debugger/CodeView.cpp b/Source/Core/DolphinWX/Debugger/CodeView.cpp index 968fa81..9d7b869 100644 --- a/Source/Core/DolphinWX/Debugger/CodeView.cpp +++ b/Source/Core/DolphinWX/Debugger/CodeView.cpp @@ -30,6 +30,7 @@ #include "Common/DebugInterface.h" #include "Common/StringUtil.h" #include "Common/SymbolDB.h" +#include "Core/Core.h" #include "Core/Host.h" #include "DolphinWX/WxUtils.h" #include "DolphinWX/Debugger/CodeView.h" @@ -56,6 +57,7 @@ enum BEGIN_EVENT_TABLE(CCodeView, wxControl) EVT_ERASE_BACKGROUND(CCodeView::OnErase) EVT_PAINT(CCodeView::OnPaint) + EVT_MOUSEWHEEL(CCodeView::OnScrollWheel) EVT_LEFT_DOWN(CCodeView::OnMouseDown) EVT_LEFT_UP(CCodeView::OnMouseUpL) EVT_MOTION(CCodeView::OnMouseMove) @@ -68,26 +70,26 @@ END_EVENT_TABLE() CCodeView::CCodeView(DebugInterface* debuginterface, SymbolDB *symboldb, wxWindow* parent, wxWindowID Id) : wxControl(parent, Id), - debugger(debuginterface), - symbol_db(symboldb), - plain(false), - curAddress(debuginterface->GetPC()), - align(debuginterface->GetInstructionSize(0)), - rowHeight(13), - selection(0), - oldSelection(0), - selecting(false), - lx(-1), - ly(-1) + m_debugger(debuginterface), + m_symbol_db(symboldb), + m_plain(false), + m_curAddress(debuginterface->GetPC()), + m_align(debuginterface->GetInstructionSize(0)), + m_rowHeight(13), + m_selection(0), + m_oldSelection(0), + m_selecting(false), + m_lx(-1), + m_ly(-1) { } int CCodeView::YToAddress(int y) { wxRect rc = GetClientRect(); - int ydiff = y - rc.height / 2 - rowHeight / 2; - ydiff = (int)(floorf((float)ydiff / (float)rowHeight)) + 1; - return curAddress + ydiff * align; + int ydiff = y - rc.height / 2 - m_rowHeight / 2; + ydiff = (int)(floorf((float)ydiff / (float)m_rowHeight)) + 1; + return m_curAddress + ydiff * m_align; } void CCodeView::OnMouseDown(wxMouseEvent& event) @@ -97,13 +99,13 @@ void CCodeView::OnMouseDown(wxMouseEvent& event) if (x > 16) { - oldSelection = selection; - selection = YToAddress(y); + m_oldSelection = m_selection; + m_selection = YToAddress(y); // SetCapture(wnd); - bool oldselecting = selecting; - selecting = true; + bool oldselecting = m_selecting; + m_selecting = true; - if (!oldselecting || (selection != oldSelection)) + if (!oldselecting || (m_selection != m_oldSelection)) Refresh(); } else @@ -111,12 +113,30 @@ void CCodeView::OnMouseDown(wxMouseEvent& event) ToggleBreakpoint(YToAddress(y)); } - event.Skip(true); + event.Skip(); +} + +void CCodeView::OnScrollWheel(wxMouseEvent& event) +{ + const bool scroll_down = (event.GetWheelRotation() < 0); + const int num_lines = event.GetLinesPerAction(); + + if (scroll_down) + { + m_curAddress += num_lines; + } + else + { + m_curAddress -= num_lines; + } + + Refresh(); + event.Skip(); } void CCodeView::ToggleBreakpoint(u32 address) { - debugger->ToggleBreakpoint(address); + m_debugger->ToggleBreakpoint(address); Refresh(); Host_UpdateBreakPointView(); } @@ -129,12 +149,12 @@ void CCodeView::OnMouseMove(wxMouseEvent& event) { if (event.m_y < 0) { - curAddress -= align; + m_curAddress -= m_align; Refresh(); } else if (event.m_y > rc.height) { - curAddress += align; + m_curAddress += m_align; Refresh(); } else @@ -143,14 +163,14 @@ void CCodeView::OnMouseMove(wxMouseEvent& event) } } - event.Skip(true); + event.Skip(); } void CCodeView::RaiseEvent() { wxCommandEvent ev(wxEVT_CODEVIEW_CHANGE, GetId()); ev.SetEventObject(this); - ev.SetInt(selection); + ev.SetInt(m_selection); GetEventHandler()->ProcessEvent(ev); } @@ -158,18 +178,19 @@ void CCodeView::OnMouseUpL(wxMouseEvent& event) { if (event.m_x > 16) { - curAddress = YToAddress(event.m_y); - selecting = false; + m_curAddress = YToAddress(event.m_y); + m_selecting = false; Refresh(); } + RaiseEvent(); - event.Skip(true); + event.Skip(); } u32 CCodeView::AddrToBranch(u32 addr) { char disasm[256]; - debugger->Disassemble(addr, disasm, 256); + m_debugger->Disassemble(addr, disasm, 256); const char *mojs = strstr(disasm, "->0x"); if (mojs) { @@ -184,9 +205,9 @@ void CCodeView::InsertBlrNop(int Blr) { // Check if this address has been modified int find = -1; - for (u32 i = 0; i < BlrList.size(); i++) + for (u32 i = 0; i < m_blrList.size(); i++) { - if (BlrList.at(i).Address == selection) + if (m_blrList.at(i).address == m_selection) { find = i; break; @@ -196,19 +217,19 @@ void CCodeView::InsertBlrNop(int Blr) // Save the old value if (find >= 0) { - debugger->WriteExtraMemory(0, BlrList.at(find).OldValue, selection); - BlrList.erase(BlrList.begin() + find); + m_debugger->WriteExtraMemory(0, m_blrList.at(find).oldValue, m_selection); + m_blrList.erase(m_blrList.begin() + find); } else { - BlrStruct Temp; - Temp.Address = selection; - Temp.OldValue = debugger->ReadMemory(selection); - BlrList.push_back(Temp); + BlrStruct temp; + temp.address = m_selection; + temp.oldValue = m_debugger->ReadMemory(m_selection); + m_blrList.push_back(temp); if (Blr == 0) - debugger->InsertBLR(selection, 0x4e800020); + m_debugger->InsertBLR(m_selection, 0x4e800020); else - debugger->InsertBLR(selection, 0x60000000); + m_debugger->InsertBLR(m_selection, 0x60000000); } Refresh(); } @@ -227,13 +248,13 @@ void CCodeView::OnPopupMenu(wxCommandEvent& event) #if wxUSE_CLIPBOARD case IDM_COPYADDRESS: - wxTheClipboard->SetData(new wxTextDataObject(wxString::Format("%08x", selection))); + wxTheClipboard->SetData(new wxTextDataObject(wxString::Format("%08x", m_selection))); break; case IDM_COPYCODE: { char disasm[256]; - debugger->Disassemble(selection, disasm, 256); + m_debugger->Disassemble(m_selection, disasm, 256); wxTheClipboard->SetData(new wxTextDataObject(StrToWxStr(disasm))); } break; @@ -241,7 +262,7 @@ void CCodeView::OnPopupMenu(wxCommandEvent& event) case IDM_COPYHEX: { char temp[24]; - sprintf(temp, "%08x", debugger->ReadInstruction(selection)); + sprintf(temp, "%08x", m_debugger->ReadInstruction(m_selection)); wxTheClipboard->SetData(new wxTextDataObject(StrToWxStr(temp))); } break; @@ -249,7 +270,7 @@ void CCodeView::OnPopupMenu(wxCommandEvent& event) case IDM_COPYFUNCTION: { - Symbol *symbol = symbol_db->GetSymbolFromAddr(selection); + Symbol *symbol = m_symbol_db->GetSymbolFromAddr(m_selection); if (symbol) { std::string text; @@ -260,7 +281,7 @@ void CCodeView::OnPopupMenu(wxCommandEvent& event) for (u32 addr = start; addr != end; addr += 4) { char disasm[256]; - debugger->Disassemble(addr, disasm, 256); + m_debugger->Disassemble(addr, disasm, 256); text = text + StringFromFormat("%08x: ", addr) + disasm + "\r\n"; } wxTheClipboard->SetData(new wxTextDataObject(StrToWxStr(text))); @@ -270,8 +291,8 @@ void CCodeView::OnPopupMenu(wxCommandEvent& event) #endif case IDM_RUNTOHERE: - debugger->SetBreakpoint(selection); - debugger->RunToBreakpoint(); + m_debugger->SetBreakpoint(m_selection); + m_debugger->RunToBreakpoint(); Refresh(); break; @@ -286,12 +307,12 @@ void CCodeView::OnPopupMenu(wxCommandEvent& event) break; case IDM_JITRESULTS: - debugger->ShowJitResults(selection); + m_debugger->ShowJitResults(m_selection); break; case IDM_FOLLOWBRANCH: { - u32 dest = AddrToBranch(selection); + u32 dest = AddrToBranch(m_selection); if (dest) { Center(dest); @@ -301,13 +322,13 @@ void CCodeView::OnPopupMenu(wxCommandEvent& event) break; case IDM_ADDFUNCTION: - symbol_db->AddFunction(selection); + m_symbol_db->AddFunction(m_selection); Host_NotifyMapLoaded(); break; case IDM_RENAMESYMBOL: { - Symbol *symbol = symbol_db->GetSymbolFromAddr(selection); + Symbol *symbol = m_symbol_db->GetSymbolFromAddr(m_selection); if (symbol) { wxTextEntryDialog input_symbol(this, _("Rename symbol:"), @@ -330,16 +351,16 @@ void CCodeView::OnPopupMenu(wxCommandEvent& event) #if wxUSE_CLIPBOARD wxTheClipboard->Close(); #endif - event.Skip(true); + event.Skip(); } void CCodeView::OnMouseUpR(wxMouseEvent& event) { - bool isSymbol = symbol_db->GetSymbolFromAddr(selection) != nullptr; + bool isSymbol = m_symbol_db->GetSymbolFromAddr(m_selection) != nullptr; // popup menu wxMenu* menu = new wxMenu; //menu->Append(IDM_GOTOINMEMVIEW, "&Goto in mem view"); - menu->Append(IDM_FOLLOWBRANCH, _("&Follow branch"))->Enable(AddrToBranch(selection) ? true : false); + menu->Append(IDM_FOLLOWBRANCH, _("&Follow branch"))->Enable(AddrToBranch(m_selection) ? true : false); menu->AppendSeparator(); #if wxUSE_CLIPBOARD menu->Append(IDM_COPYADDRESS, _("Copy &address")); @@ -350,14 +371,14 @@ void CCodeView::OnMouseUpR(wxMouseEvent& event) #endif menu->Append(IDM_RENAMESYMBOL, _("Rename &symbol"))->Enable(isSymbol); menu->AppendSeparator(); - menu->Append(IDM_RUNTOHERE, _("&Run To Here")); - menu->Append(IDM_ADDFUNCTION, _("&Add function")); - menu->Append(IDM_JITRESULTS, _("PPC vs X86")); - menu->Append(IDM_INSERTBLR, _("Insert &blr")); - menu->Append(IDM_INSERTNOP, _("Insert &nop")); - menu->Append(IDM_PATCHALERT, _("Patch alert")); + menu->Append(IDM_RUNTOHERE, _("&Run To Here"))->Enable(Core::IsRunning()); + menu->Append(IDM_ADDFUNCTION, _("&Add function"))->Enable(Core::IsRunning()); + menu->Append(IDM_JITRESULTS, _("PPC vs X86"))->Enable(Core::IsRunning()); + menu->Append(IDM_INSERTBLR, _("Insert &blr"))->Enable(Core::IsRunning()); + menu->Append(IDM_INSERTNOP, _("Insert &nop"))->Enable(Core::IsRunning()); + menu->Append(IDM_PATCHALERT, _("Patch alert"))->Enable(Core::IsRunning()); PopupMenu(menu); - event.Skip(true); + event.Skip(); } void CCodeView::OnErase(wxEraseEvent& event) @@ -376,8 +397,8 @@ void CCodeView::OnPaint(wxPaintEvent& event) wxCoord w,h; dc.GetTextExtent("0WJyq", &w, &h); - if (h > rowHeight) - rowHeight = h; + if (h > m_rowHeight) + m_rowHeight = h; dc.GetTextExtent("W", &w, &h); int charWidth = w; @@ -391,7 +412,7 @@ void CCodeView::OnPaint(wxPaintEvent& event) int numBranches = 0; // TODO: Add any drawing code here... int width = rc.width; - int numRows = (rc.height / rowHeight) / 2 + 2; + int numRows = (rc.height / m_rowHeight) / 2 + 2; // ------------ // -------------------------------------------------------------------- @@ -423,31 +444,31 @@ void CCodeView::OnPaint(wxPaintEvent& event) // ------------------------- for (int i = -numRows; i <= numRows; i++) { - unsigned int address = curAddress + i * align; + unsigned int address = m_curAddress + i * m_align; - int rowY1 = rc.height / 2 + rowHeight * i - rowHeight / 2; - int rowY2 = rc.height / 2 + rowHeight * i + rowHeight / 2; + int rowY1 = rc.height / 2 + m_rowHeight * i - m_rowHeight / 2; + int rowY2 = rc.height / 2 + m_rowHeight * i + m_rowHeight / 2; wxString temp = wxString::Format("%08x", address); - u32 col = debugger->GetColor(address); + u32 col = m_debugger->GetColor(address); wxBrush rowBrush(wxColour(col >> 16, col >> 8, col)); dc.SetBrush(nullBrush); dc.SetPen(nullPen); dc.DrawRectangle(0, rowY1, 16, rowY2 - rowY1 + 2); - if (selecting && (address == selection)) + if (m_selecting && (address == m_selection)) dc.SetPen(selPen); else dc.SetPen(i == 0 ? currentPen : nullPen); - if (address == debugger->GetPC()) + if (address == m_debugger->GetPC()) dc.SetBrush(pcBrush); else dc.SetBrush(rowBrush); dc.DrawRectangle(16, rowY1, width, rowY2 - rowY1 + 1); dc.SetBrush(currentBrush); - if (!plain) + if (!m_plain) { dc.SetTextForeground("#600000"); // the address text is dark red dc.DrawText(temp, 17, rowY1); @@ -455,10 +476,10 @@ void CCodeView::OnPaint(wxPaintEvent& event) } // If running - if (debugger->IsAlive()) + if (m_debugger->IsAlive()) { char dis[256]; - debugger->Disassemble(address, dis, 256); + m_debugger->Disassemble(address, dis, 256); char* dis2 = strchr(dis, '\t'); char desc[256] = ""; @@ -490,10 +511,10 @@ void CCodeView::OnPaint(wxPaintEvent& event) { int offs; sscanf(mojs + 2, "%08x", &offs); - branches[numBranches].src = rowY1 + rowHeight / 2; - branches[numBranches].srcAddr = address / align; - branches[numBranches++].dst = (int)(rowY1 + ((s64)(u32)offs - (s64)(u32)address) * rowHeight / align + rowHeight / 2); - sprintf(desc, "-->%s", debugger->GetDescription(offs).c_str()); + branches[numBranches].src = rowY1 + m_rowHeight / 2; + branches[numBranches].srcAddr = address / m_align; + branches[numBranches++].dst = (int)(rowY1 + ((s64)(u32)offs - (s64)(u32)address) * m_rowHeight / m_align + m_rowHeight / 2); + sprintf(desc, "-->%s", m_debugger->GetDescription(offs).c_str()); dc.SetTextForeground(wxTheColourDatabase->Find("PURPLE")); // the -> arrow illustrations are purple } else @@ -511,14 +532,14 @@ void CCodeView::OnPaint(wxPaintEvent& event) else dc.SetTextForeground(wxTheColourDatabase->Find("VIOLET")); - dc.DrawText(StrToWxStr(dis), 17 + (plain ? 1*charWidth : 9*charWidth), rowY1); + dc.DrawText(StrToWxStr(dis), 17 + (m_plain ? 1*charWidth : 9*charWidth), rowY1); if (desc[0] == 0) { - strcpy(desc, debugger->GetDescription(address).c_str()); + strcpy(desc, m_debugger->GetDescription(address).c_str()); } - if (!plain) + if (!m_plain) { dc.SetTextForeground(*wxBLUE); @@ -531,7 +552,7 @@ void CCodeView::OnPaint(wxPaintEvent& event) } // Show red breakpoint dot - if (debugger->IsBreakpoint(address)) + if (m_debugger->IsBreakpoint(address)) { dc.SetBrush(bpBrush); dc.DrawRectangle(2, rowY1 + 1, 11, 11); @@ -548,40 +569,40 @@ void CCodeView::OnPaint(wxPaintEvent& event) for (int i = 0; i < numBranches; i++) { int x = 17 + 49 * charWidth + (branches[i].srcAddr % 9) * 8; - _MoveTo(x-2, branches[i].src); + MoveTo(x-2, branches[i].src); if (branches[i].dst < rc.height + 400 && branches[i].dst > -400) { - _LineTo(dc, x+2, branches[i].src); - _LineTo(dc, x+2, branches[i].dst); - _LineTo(dc, x-4, branches[i].dst); + LineTo(dc, x+2, branches[i].src); + LineTo(dc, x+2, branches[i].dst); + LineTo(dc, x-4, branches[i].dst); - _MoveTo(x, branches[i].dst - 4); - _LineTo(dc, x-4, branches[i].dst); - _LineTo(dc, x+1, branches[i].dst+5); + MoveTo(x, branches[i].dst - 4); + LineTo(dc, x-4, branches[i].dst); + LineTo(dc, x+1, branches[i].dst+5); } //else //{ // This can be re-enabled when there is a scrollbar or // something on the codeview (the lines are too long) - //_LineTo(dc, x+4, branches[i].src); - //_MoveTo(x+2, branches[i].dst-4); - //_LineTo(dc, x+6, branches[i].dst); - //_LineTo(dc, x+1, branches[i].dst+5); + //LineTo(dc, x+4, branches[i].src); + //MoveTo(x+2, branches[i].dst-4); + //LineTo(dc, x+6, branches[i].dst); + //LineTo(dc, x+1, branches[i].dst+5); //} - //_LineTo(dc, x, branches[i].dst+4); - //_LineTo(dc, x-2, branches[i].dst); + //LineTo(dc, x, branches[i].dst+4); + //LineTo(dc, x-2, branches[i].dst); } // ------------ } -void CCodeView::_LineTo(wxPaintDC &dc, int x, int y) +void CCodeView::LineTo(wxPaintDC &dc, int x, int y) { - dc.DrawLine(lx, ly, x, y); - lx = x; - ly = y; + dc.DrawLine(m_lx, m_ly, x, y); + m_lx = x; + m_ly = y; } void CCodeView::OnResize(wxSizeEvent& event) diff --git a/Source/Core/DolphinWX/Debugger/CodeView.h b/Source/Core/DolphinWX/Debugger/CodeView.h index fde58de..dd5d942 100644 --- a/Source/Core/DolphinWX/Debugger/CodeView.h +++ b/Source/Core/DolphinWX/Debugger/CodeView.h @@ -30,6 +30,7 @@ class CCodeView : public wxControl wxWindow* parent, wxWindowID Id = wxID_ANY); void OnPaint(wxPaintEvent& event); void OnErase(wxEraseEvent& event); + void OnScrollWheel(wxMouseEvent& event); void OnMouseDown(wxMouseEvent& event); void OnMouseMove(wxMouseEvent& event); void OnMouseUpL(wxMouseEvent& event); @@ -37,26 +38,23 @@ class CCodeView : public wxControl void OnPopupMenu(wxCommandEvent& event); void InsertBlrNop(int); - u32 GetSelection() {return(selection);} void ToggleBreakpoint(u32 address); - struct BlrStruct // for IDM_INSERTBLR + u32 GetSelection() { - u32 Address; - u32 OldValue; - }; - std::vector BlrList; + return m_selection; + } void Center(u32 addr) { - curAddress = addr; - selection = addr; + m_curAddress = addr; + m_selection = addr; Refresh(); } void SetPlain() { - plain = true; + m_plain = true; } private: @@ -66,22 +64,35 @@ class CCodeView : public wxControl u32 AddrToBranch(u32 addr); void OnResize(wxSizeEvent& event); - DebugInterface* debugger; - SymbolDB* symbol_db; + void MoveTo(int x, int y) + { + m_lx = x; + m_ly = y; + } + + void LineTo(wxPaintDC &dc, int x, int y); + + struct BlrStruct // for IDM_INSERTBLR + { + u32 address; + u32 oldValue; + }; + std::vector m_blrList; + + DebugInterface* m_debugger; + SymbolDB* m_symbol_db; - bool plain; + bool m_plain; - int curAddress; - int align; - int rowHeight; + int m_curAddress; + int m_align; + int m_rowHeight; - u32 selection; - u32 oldSelection; - bool selecting; + u32 m_selection; + u32 m_oldSelection; + bool m_selecting; - int lx, ly; - void _MoveTo(int x, int y) {lx = x; ly = y;} - void _LineTo(wxPaintDC &dc, int x, int y); + int m_lx, m_ly; DECLARE_EVENT_TABLE() }; diff --git a/Source/Core/DolphinWX/Debugger/CodeWindow.cpp b/Source/Core/DolphinWX/Debugger/CodeWindow.cpp index b8185a8..dbc2e50 100644 --- a/Source/Core/DolphinWX/Debugger/CodeWindow.cpp +++ b/Source/Core/DolphinWX/Debugger/CodeWindow.cpp @@ -87,7 +87,7 @@ END_EVENT_TABLE() // Class CCodeWindow::CCodeWindow(const SCoreStartupParameter& _LocalCoreStartupParameter, CFrame *parent, wxWindowID id, const wxPoint& position, const wxSize& size, long style, const wxString& name) - : wxPanel((wxWindow*)parent, id, position, size, style, name) + : wxPanel(parent, id, position, size, style, name) , Parent(parent) , m_RegisterWindow(nullptr) , m_BreakpointWindow(nullptr) @@ -195,10 +195,18 @@ void CCodeWindow::OnCodeStep(wxCommandEvent& event) Parent->UpdateGUI(); } -void CCodeWindow::JumpToAddress(u32 _Address) +bool CCodeWindow::JumpToAddress(u32 address) { - codeview->Center(_Address); - UpdateLists(); + // Jump to anywhere in memory + if (address <= 0xFFFFFFFF) + { + codeview->Center(address); + UpdateLists(); + + return true; + } + + return false; } void CCodeWindow::OnCodeViewChange(wxCommandEvent &event) @@ -208,21 +216,30 @@ void CCodeWindow::OnCodeViewChange(wxCommandEvent &event) void CCodeWindow::OnAddrBoxChange(wxCommandEvent& event) { - if (!GetToolBar()) return; + if (!GetToolBar()) + return; wxTextCtrl* pAddrCtrl = (wxTextCtrl*)GetToolBar()->FindControl(IDM_ADDRBOX); - wxString txt = pAddrCtrl->GetValue(); - std::string text(WxStrToStr(txt)); - text = StripSpaces(text); - if (text.size() == 8) + // Trim leading and trailing whitespace. + wxString txt = pAddrCtrl->GetValue().Trim().Trim(false); + + bool success = false; + unsigned long addr; + if (txt.ToULong(&addr, 16)) { - u32 addr; - sscanf(text.c_str(), "%08x", &addr); - JumpToAddress(addr); + if (JumpToAddress(addr)) + success = true; } - event.Skip(1); + if (success) + pAddrCtrl->SetBackgroundColour(wxNullColour); + else + pAddrCtrl->SetBackgroundColour(*wxRED); + + pAddrCtrl->Refresh(); + + event.Skip(); } void CCodeWindow::OnCallstackListChange(wxCommandEvent& event) diff --git a/Source/Core/DolphinWX/Debugger/CodeWindow.h b/Source/Core/DolphinWX/Debugger/CodeWindow.h index 7497702..2cbefd0 100644 --- a/Source/Core/DolphinWX/Debugger/CodeWindow.h +++ b/Source/Core/DolphinWX/Debugger/CodeWindow.h @@ -60,7 +60,7 @@ class CCodeWindow bool AutomaticStart(); bool JITNoBlockCache(); bool JITBlockLinking(); - void JumpToAddress(u32 _Address); + bool JumpToAddress(u32 address); void Update() override; void NotifyMapLoaded(); diff --git a/Source/Core/DolphinWX/Debugger/CodeWindowFunctions.cpp b/Source/Core/DolphinWX/Debugger/CodeWindowFunctions.cpp index 41abb27..9f3c081 100644 --- a/Source/Core/DolphinWX/Debugger/CodeWindowFunctions.cpp +++ b/Source/Core/DolphinWX/Debugger/CodeWindowFunctions.cpp @@ -219,7 +219,7 @@ void CCodeWindow::OnSymbolsMenu(wxCommandEvent& event) { Parent->ClearStatusBar(); - if (Core::GetState() == Core::CORE_UNINITIALIZED) return; + if (!Core::IsRunning()) return; std::string existing_map_file, writable_map_file; bool map_exists = CBoot::FindMapFile(&existing_map_file, diff --git a/Source/Core/DolphinWX/Debugger/DSPDebugWindow.cpp b/Source/Core/DolphinWX/Debugger/DSPDebugWindow.cpp index 56b729e..9e606c4 100644 --- a/Source/Core/DolphinWX/Debugger/DSPDebugWindow.cpp +++ b/Source/Core/DolphinWX/Debugger/DSPDebugWindow.cpp @@ -23,6 +23,7 @@ #include "Common/Common.h" #include "Common/StringUtil.h" #include "Common/SymbolDB.h" +#include "Core/Host.h" #include "Core/DSP/DSPCore.h" #include "Core/HW/DSPLLE/DSPDebugInterface.h" #include "Core/HW/DSPLLE/DSPSymbols.h" @@ -34,7 +35,7 @@ class wxWindow; -DSPDebuggerLLE* m_DebuggerFrame = nullptr; +static DSPDebuggerLLE* m_DebuggerFrame = nullptr; BEGIN_EVENT_TABLE(DSPDebuggerLLE, wxPanel) EVT_CLOSE(DSPDebuggerLLE::OnClose) diff --git a/Source/Core/DolphinWX/Debugger/DSPDebugWindow.h b/Source/Core/DolphinWX/Debugger/DSPDebugWindow.h index af515dd..65751f0 100644 --- a/Source/Core/DolphinWX/Debugger/DSPDebugWindow.h +++ b/Source/Core/DolphinWX/Debugger/DSPDebugWindow.h @@ -74,4 +74,3 @@ class DSPDebuggerLLE : public wxPanel //void UnselectAll(); }; -extern DSPDebuggerLLE* m_DebuggerFrame; diff --git a/Source/Core/DolphinWX/Debugger/DebuggerPanel.cpp b/Source/Core/DolphinWX/Debugger/DebuggerPanel.cpp index fa09024..edee4fa 100644 --- a/Source/Core/DolphinWX/Debugger/DebuggerPanel.cpp +++ b/Source/Core/DolphinWX/Debugger/DebuggerPanel.cpp @@ -43,12 +43,6 @@ BEGIN_EVENT_TABLE(GFXDebuggerPanel, wxPanel) EVT_BUTTON(ID_CLEAR_PIXEL_SHADER_CACHE,GFXDebuggerPanel::OnClearPixelShaderCacheButton) END_EVENT_TABLE() -// From VideoCommon -extern GFXDebuggerBase *g_pdebugger; -extern volatile bool GFXDebuggerPauseFlag; -extern volatile PauseEvent GFXDebuggerToPauseAtNext; -extern volatile int GFXDebuggerEventToPauseCount; - GFXDebuggerPanel::GFXDebuggerPanel(wxWindow *parent, wxWindowID id, const wxPoint &position, const wxSize& size, long style, const wxString &title) : wxPanel(parent, id, position, size, style, title) diff --git a/Source/Core/DolphinWX/Debugger/MemoryView.cpp b/Source/Core/DolphinWX/Debugger/MemoryView.cpp index 8d3e018..0b4364a 100644 --- a/Source/Core/DolphinWX/Debugger/MemoryView.cpp +++ b/Source/Core/DolphinWX/Debugger/MemoryView.cpp @@ -50,6 +50,7 @@ BEGIN_EVENT_TABLE(CMemoryView, wxControl) EVT_LEFT_UP(CMemoryView::OnMouseUpL) EVT_MOTION(CMemoryView::OnMouseMove) EVT_RIGHT_DOWN(CMemoryView::OnMouseDownR) + EVT_MOUSEWHEEL(CMemoryView::OnScrollWheel) EVT_MENU(-1, CMemoryView::OnPopupMenu) EVT_SIZE(CMemoryView::OnResize) END_EVENT_TABLE() @@ -99,7 +100,7 @@ void CMemoryView::OnMouseDownL(wxMouseEvent& event) Host_UpdateBreakPointView(); } - event.Skip(true); + event.Skip(); } void CMemoryView::OnMouseMove(wxMouseEvent& event) @@ -122,7 +123,7 @@ void CMemoryView::OnMouseMove(wxMouseEvent& event) OnMouseDownL(event); } - event.Skip(true); + event.Skip(); } void CMemoryView::OnMouseUpL(wxMouseEvent& event) @@ -134,7 +135,25 @@ void CMemoryView::OnMouseUpL(wxMouseEvent& event) Refresh(); } - event.Skip(true); + event.Skip(); +} + +void CMemoryView::OnScrollWheel(wxMouseEvent& event) +{ + const bool scroll_down = (event.GetWheelRotation() < 0); + const int num_lines = event.GetLinesPerAction(); + + if (scroll_down) + { + curAddress += num_lines; + } + else + { + curAddress -= num_lines; + } + + Refresh(); + event.Skip(); } void CMemoryView::OnPopupMenu(wxCommandEvent& event) @@ -182,7 +201,7 @@ void CMemoryView::OnPopupMenu(wxCommandEvent& event) #if wxUSE_CLIPBOARD wxTheClipboard->Close(); #endif - event.Skip(true); + event.Skip(); } void CMemoryView::OnMouseDownR(wxMouseEvent& event) diff --git a/Source/Core/DolphinWX/Debugger/MemoryView.h b/Source/Core/DolphinWX/Debugger/MemoryView.h index 76cfb7d..4541f9e 100644 --- a/Source/Core/DolphinWX/Debugger/MemoryView.h +++ b/Source/Core/DolphinWX/Debugger/MemoryView.h @@ -21,6 +21,7 @@ class CMemoryView : public wxControl void OnMouseMove(wxMouseEvent& event); void OnMouseUpL(wxMouseEvent& event); void OnMouseDownR(wxMouseEvent& event); + void OnScrollWheel(wxMouseEvent& event); void OnPopupMenu(wxCommandEvent& event); u32 GetSelection() { return selection ; } diff --git a/Source/Core/DolphinWX/Debugger/MemoryWindow.cpp b/Source/Core/DolphinWX/Debugger/MemoryWindow.cpp index 53184d7..8621cb6 100644 --- a/Source/Core/DolphinWX/Debugger/MemoryWindow.cpp +++ b/Source/Core/DolphinWX/Debugger/MemoryWindow.cpp @@ -191,7 +191,7 @@ void CMemoryWindow::OnAddrBoxChange(wxCommandEvent& event) memview->Center(addr & ~3); } - event.Skip(1); + event.Skip(); } void CMemoryWindow::Update() @@ -241,7 +241,7 @@ void CMemoryWindow::OnHostMessage(wxCommandEvent& event) } } -void DumpArray(const std::string& filename, const u8* data, size_t length) +static void DumpArray(const std::string& filename, const u8* data, size_t length) { if (data) { diff --git a/Source/Core/DolphinWX/DolphinWX.vcxproj b/Source/Core/DolphinWX/DolphinWX.vcxproj index 440d9ff..a402328 100644 --- a/Source/Core/DolphinWX/DolphinWX.vcxproj +++ b/Source/Core/DolphinWX/DolphinWX.vcxproj @@ -1,4 +1,4 @@ - + @@ -95,7 +95,6 @@ Create - @@ -144,7 +143,6 @@ - @@ -230,4 +228,4 @@ - \ No newline at end of file + diff --git a/Source/Core/DolphinWX/DolphinWX.vcxproj.filters b/Source/Core/DolphinWX/DolphinWX.vcxproj.filters index 9c9a656..654a1bf 100644 --- a/Source/Core/DolphinWX/DolphinWX.vcxproj.filters +++ b/Source/Core/DolphinWX/DolphinWX.vcxproj.filters @@ -1,4 +1,4 @@ - + @@ -152,9 +152,6 @@ GUI - - GUI - GUI @@ -280,9 +277,6 @@ GUI - - GUI - GUI @@ -302,4 +296,4 @@ Resources - \ No newline at end of file + diff --git a/Source/Core/DolphinWX/FifoPlayerDlg.cpp b/Source/Core/DolphinWX/FifoPlayerDlg.cpp index aa5eacc..d6f3475 100644 --- a/Source/Core/DolphinWX/FifoPlayerDlg.cpp +++ b/Source/Core/DolphinWX/FifoPlayerDlg.cpp @@ -52,7 +52,7 @@ DEFINE_EVENT_TYPE(FRAME_WRITTEN_EVENT) using namespace std; -std::recursive_mutex sMutex; +static std::recursive_mutex sMutex; wxEvtHandler *volatile FifoPlayerDlg::m_EvtHandler = nullptr; FifoPlayerDlg::FifoPlayerDlg(wxWindow * const parent) : @@ -464,13 +464,13 @@ void FifoPlayerDlg::OnBeginSearch(wxCommandEvent& event) return; // TODO: Limited to even str lengths... - if (str_search_val.Length() && str_search_val.Length() % 2) + if (!str_search_val.empty() && str_search_val.length() % 2) { m_numResultsText->SetLabel(_("Invalid search string (only even string lengths supported)")); return; } - unsigned int const val_length = str_search_val.Length() / 2; + unsigned int const val_length = str_search_val.length() / 2; std::vector search_val(val_length); for (unsigned int i = 0; i < val_length; ++i) { diff --git a/Source/Core/DolphinWX/Frame.cpp b/Source/Core/DolphinWX/Frame.cpp index ea7a700..b57f18a 100644 --- a/Source/Core/DolphinWX/Frame.cpp +++ b/Source/Core/DolphinWX/Frame.cpp @@ -15,12 +15,14 @@ #endif #include +#include #include #include #include #include #include #include +#include #include #include #include @@ -53,11 +55,13 @@ #include "Core/CoreParameter.h" #include "Core/Movie.h" #include "Core/State.h" +#include "Core/HW/DVDInterface.h" #include "DolphinWX/Frame.h" #include "DolphinWX/GameListCtrl.h" #include "DolphinWX/Globals.h" #include "DolphinWX/LogWindow.h" +#include "DolphinWX/Main.h" #include "DolphinWX/TASInputDlg.h" #include "DolphinWX/WxUtils.h" #include "DolphinWX/Debugger/CodeWindow.h" @@ -85,9 +89,6 @@ HWND MSWGetParent_(HWND Parent) // --------------- // The CPanel class to receive MSWWindowProc messages from the video backend. -extern CFrame* main_frame; - - BEGIN_EVENT_TABLE(CPanel, wxPanel) END_EVENT_TABLE() @@ -139,17 +140,60 @@ CRenderFrame::CRenderFrame(wxFrame* parent, wxWindowID id, const wxString& title SetIcon(IconTemp); DragAcceptFiles(true); - Connect(wxEVT_DROP_FILES, wxDropFilesEventHandler(CRenderFrame::OnDropFiles), nullptr, this); + Bind(wxEVT_DROP_FILES, &CRenderFrame::OnDropFiles, this); } void CRenderFrame::OnDropFiles(wxDropFilesEvent& event) { if (event.GetNumberOfFiles() != 1) return; - if (File::IsDirectory(event.GetFiles()[0].ToStdString())) + if (File::IsDirectory(WxStrToStr(event.GetFiles()[0]))) return; - State::LoadAs(event.GetFiles()[0].ToStdString()); + wxFileName file = event.GetFiles()[0]; + const std::string filepath = WxStrToStr(file.GetFullPath()); + + if (file.GetExt() == "dtm") + { + if (Core::IsRunning()) + return; + + if (!Movie::IsReadOnly()) + { + // let's make the read-only flag consistent at the start of a movie. + Movie::SetReadOnly(true); + main_frame->GetMenuBar()->FindItem(IDM_RECORDREADONLY)->Check(true); + } + + if (Movie::PlayInput(filepath)) + main_frame->BootGame(""); + } + else if (!Core::IsRunning()) + { + main_frame->BootGame(filepath); + } + else if (IsValidSavestateDropped(filepath) && Core::IsRunning()) + { + State::LoadAs(filepath); + } + else + { + DVDInterface::ChangeDisc(filepath); + } +} + +bool CRenderFrame::IsValidSavestateDropped(const std::string& filepath) +{ + const int game_id_length = 6; + std::ifstream file(filepath, std::ios::in | std::ios::binary); + + if (!file) + return false; + + std::string internal_game_id(game_id_length, ' '); + file.read(&internal_game_id[0], game_id_length); + + return internal_game_id == SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID(); } #ifdef _WIN32 @@ -171,7 +215,7 @@ WXLRESULT CRenderFrame::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPa case WM_CLOSE: // Let Core finish initializing before accepting any WM_CLOSE messages - if (Core::GetState() == Core::CORE_UNINITIALIZED) break; + if (!Core::IsRunning()) break; // Use default action otherwise default: @@ -306,7 +350,7 @@ CFrame::CFrame(wxFrame* parent, , m_LogWindow(nullptr), m_LogConfigWindow(nullptr) , m_FifoPlayerDlg(nullptr), UseDebugger(_UseDebugger) , m_bBatchMode(_BatchMode), m_bEdit(false), m_bTabSplit(false), m_bNoDocking(false) - , m_bGameLoading(false) + , m_bGameLoading(false), m_bClosing(false) { for (int i = 0; i <= IDM_CODEWINDOW - IDM_LOGWINDOW; i++) bFloatWindow[i] = false; @@ -379,6 +423,7 @@ CFrame::CFrame(wxFrame* parent, Movie::SetInputManip(TASManipFunction); State::SetOnAfterLoadCallback(OnAfterLoadCallback); + Core::SetOnStoppedCallback(OnStoppedCallback); // Setup perspectives if (g_pCodeWindow) @@ -489,15 +534,18 @@ void CFrame::OnActive(wxActivateEvent& event) void CFrame::OnClose(wxCloseEvent& event) { + m_bClosing = true; + + // Before closing the window we need to shut down the emulation core. + // We'll try to close this window again once that is done. if (Core::GetState() != Core::CORE_UNINITIALIZED) { DoStop(); - if (Core::GetState() != Core::CORE_UNINITIALIZED) - return; - UpdateGUI(); + event.Veto(); + return; } - //Stop Dolphin from saving the minimized Xpos and Ypos + // Stop Dolphin from saving the minimized Xpos and Ypos if (main_frame->IsIconized()) main_frame->Iconize(false); @@ -646,6 +694,10 @@ void CFrame::OnHostMessage(wxCommandEvent& event) case WM_USER_STOP: DoStop(); break; + + case IDM_STOPPED: + OnStopped(); + break; } } @@ -668,7 +720,7 @@ void CFrame::GetRenderWindowSize(int& x, int& y, int& width, int& height) void CFrame::OnRenderWindowSizeRequest(int width, int height) { - if (Core::GetState() == Core::CORE_UNINITIALIZED || + if (!Core::IsRunning() || !SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderWindowAutoSize || RendererIsFullscreen() || m_RenderFrame->IsMaximized()) return; @@ -721,6 +773,19 @@ bool CFrame::RendererHasFocus() return false; } +bool CFrame::UIHasFocus() +{ + // UIHasFocus should return true any time any one of our UI + // windows has the focus, including any dialogs or other windows. + // + // wxGetActiveWindow() returns the current wxWindow which has + // focus. If it's not one of our windows, then it will return + // null. + + wxWindow *focusWindow = wxGetActiveWindow(); + return (focusWindow != nullptr); +} + void CFrame::OnGameListCtrl_ItemActivated(wxListEvent& WXUNUSED (event)) { // Show all platforms and regions if... @@ -775,7 +840,7 @@ void CFrame::OnGameListCtrl_ItemActivated(wxListEvent& WXUNUSED (event)) } } -bool IsHotkey(wxKeyEvent &event, int Id) +static bool IsHotkey(wxKeyEvent &event, int Id) { return (event.GetKeyCode() != WXK_NONE && event.GetKeyCode() == SConfig::GetInstance().m_LocalCoreStartupParameter.iHotkey[Id] && @@ -858,7 +923,17 @@ void OnAfterLoadCallback() } } -void TASManipFunction(SPADStatus *PadStatus, int controllerID) +void OnStoppedCallback() +{ + // warning: this gets called from the EmuThread, so we should only queue things to do on the proper thread + if (main_frame) + { + wxCommandEvent event(wxEVT_HOST_COMMAND, IDM_STOPPED); + main_frame->GetEventHandler()->AddPendingEvent(event); + } +} + +void TASManipFunction(GCPadStatus* PadStatus, int controllerID) { if (main_frame) main_frame->g_TASInputDlg[controllerID]->GetValues(PadStatus, controllerID); @@ -1045,8 +1120,7 @@ void CFrame::OnKeyDown(wxKeyEvent& event) void CFrame::OnKeyUp(wxKeyEvent& event) { - if(Core::GetState() != Core::CORE_UNINITIALIZED && - (RendererHasFocus() || TASInputHasFocus())) + if(Core::IsRunning() && (RendererHasFocus() || TASInputHasFocus())) { if (IsHotkey(event, HK_TOGGLE_THROTTLE)) { diff --git a/Source/Core/DolphinWX/Frame.h b/Source/Core/DolphinWX/Frame.h index f8a2602..9007531 100644 --- a/Source/Core/DolphinWX/Frame.h +++ b/Source/Core/DolphinWX/Frame.h @@ -80,6 +80,7 @@ class CRenderFrame : public wxFrame private: void OnDropFiles(wxDropFilesEvent& event); + static bool IsValidSavestateDropped(const std::string& filepath); #ifdef _WIN32 // Receive WndProc messages WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam); @@ -122,6 +123,7 @@ class CFrame : public CRenderFrame void InitBitmaps(); void DoPause(); void DoStop(); + void OnStopped(); void DoRecordingSave(); void UpdateGUI(); void UpdateGameList(); @@ -136,6 +138,7 @@ class CFrame : public CRenderFrame void OnRenderParentClose(wxCloseEvent& event); void OnRenderParentMove(wxMoveEvent& event); bool RendererHasFocus(); + bool UIHasFocus(); void DoFullscreen(bool bF); void ToggleDisplayMode (bool bFullscreen); void UpdateWiiMenuChoice(wxMenuItem *WiiMenuItem=nullptr); @@ -184,6 +187,7 @@ class CFrame : public CRenderFrame bool m_bTabSplit; bool m_bNoDocking; bool m_bGameLoading; + bool m_bClosing; std::vector drives; @@ -352,7 +356,8 @@ class CFrame : public CRenderFrame int GetCmdForHotkey(unsigned int key); void OnAfterLoadCallback(); +void OnStoppedCallback(); // For TASInputDlg -void TASManipFunction(SPADStatus *PadStatus, int controllerID); +void TASManipFunction(GCPadStatus* PadStatus, int controllerID); bool TASInputHasFocus(); diff --git a/Source/Core/DolphinWX/FrameAui.cpp b/Source/Core/DolphinWX/FrameAui.cpp index 283bead..34b0a72 100644 --- a/Source/Core/DolphinWX/FrameAui.cpp +++ b/Source/Core/DolphinWX/FrameAui.cpp @@ -33,6 +33,7 @@ #include "Common/Common.h" #include "Common/FileUtil.h" #include "Common/IniFile.h" +#include "Common/MathUtil.h" #include "Common/StringUtil.h" #include "Common/Logging/ConsoleListener.h" #include "Core/ConfigManager.h" @@ -733,13 +734,6 @@ void CFrame::OnSelectPerspective(wxCommandEvent& event) DoLoadPerspective(); } -static int Limit(int i, int Low, int High) -{ - if (i < Low) return Low; - if (i > High) return High; - return i; -} - void CFrame::SetPaneSize() { if (Perspectives.size() <= ActivePerspective) @@ -764,8 +758,8 @@ void CFrame::SetPaneSize() H = Perspectives[ActivePerspective].Height[j]; // Check limits - W = Limit(W, 5, 95); - H = Limit(H, 5, 95); + MathUtil::Clamp(&W, 5, 95); + MathUtil::Clamp(&H, 5, 95); // Convert percentages to pixel lengths W = (W * iClientX) / 100; diff --git a/Source/Core/DolphinWX/FrameTools.cpp b/Source/Core/DolphinWX/FrameTools.cpp index 05ca2ea..b33cd4b 100644 --- a/Source/Core/DolphinWX/FrameTools.cpp +++ b/Source/Core/DolphinWX/FrameTools.cpp @@ -119,7 +119,7 @@ extern "C" { class InputPlugin; class wxFrame; -bool confirmStop = false; +static bool confirmStop = false; // Create menu items // --------------------- @@ -802,7 +802,7 @@ void CFrame::OnRecordExport(wxCommandEvent& WXUNUSED (event)) void CFrame::OnPlay(wxCommandEvent& WXUNUSED (event)) { - if (Core::GetState() != Core::CORE_UNINITIALIZED) + if (Core::IsRunning()) { // Core is initialized and emulator is running if (UseDebugger) @@ -832,9 +832,16 @@ void CFrame::OnPlay(wxCommandEvent& WXUNUSED (event)) void CFrame::OnRenderParentClose(wxCloseEvent& event) { - DoStop(); - if (Core::GetState() == Core::CORE_UNINITIALIZED) - event.Skip(); + // Before closing the window we need to shut down the emulation core. + // We'll try to close this window again once that is done. + if (Core::GetState() != Core::CORE_UNINITIALIZED) + { + DoStop(); + event.Veto(); + return; + } + + event.Skip(); } void CFrame::OnRenderParentMove(wxMoveEvent& event) @@ -964,6 +971,7 @@ void CFrame::StartGame(const std::string& filename) else m_RenderFrame->SetWindowStyle(m_RenderFrame->GetWindowStyle() & ~wxSTAY_ON_TOP); + m_RenderFrame->SetBackgroundColour(*wxBLACK); m_RenderFrame->SetClientSize(size.GetWidth(), size.GetHeight()); m_RenderFrame->Bind(wxEVT_CLOSE_WINDOW, &CFrame::OnRenderParentClose, this); m_RenderFrame->Bind(wxEVT_ACTIVATE, &CFrame::OnActive, this); @@ -1119,72 +1127,78 @@ void CFrame::DoStop() wxBeginBusyCursor(); BootManager::Stop(); - wxEndBusyCursor(); - confirmStop = false; + UpdateGUI(); + } +} + +void CFrame::OnStopped() +{ + wxEndBusyCursor(); + + confirmStop = false; #if defined(HAVE_X11) && HAVE_X11 if (SConfig::GetInstance().m_LocalCoreStartupParameter.bDisableScreenSaver) X11Utils::InhibitScreensaver(X11Utils::XDisplayFromHandle(GetHandle()), X11Utils::XWindowFromHandle(GetHandle()), false); #endif - m_RenderFrame->SetTitle(StrToWxStr(scm_rev_str)); + m_RenderFrame->SetTitle(StrToWxStr(scm_rev_str)); - // Destroy the renderer frame when not rendering to main - m_RenderParent->Unbind(wxEVT_SIZE, &CFrame::OnRenderParentResize, this); - - // Keyboard - wxTheApp->Unbind(wxEVT_KEY_DOWN, &CFrame::OnKeyDown, this); - wxTheApp->Unbind(wxEVT_KEY_UP, &CFrame::OnKeyUp, this); - - // Mouse - wxTheApp->Unbind(wxEVT_RIGHT_DOWN, &CFrame::OnMouse, this); - wxTheApp->Unbind(wxEVT_RIGHT_UP, &CFrame::OnMouse, this); - wxTheApp->Unbind(wxEVT_MIDDLE_DOWN, &CFrame::OnMouse, this); - wxTheApp->Unbind(wxEVT_MIDDLE_UP, &CFrame::OnMouse, this); - wxTheApp->Unbind(wxEVT_MOTION, &CFrame::OnMouse, this); - if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) - m_RenderParent->SetCursor(wxNullCursor); - DoFullscreen(false); - if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain) - { - m_RenderFrame->Destroy(); - } - else - { + // Destroy the renderer frame when not rendering to main + m_RenderParent->Unbind(wxEVT_SIZE, &CFrame::OnRenderParentResize, this); + + // Keyboard + wxTheApp->Unbind(wxEVT_KEY_DOWN, &CFrame::OnKeyDown, this); + wxTheApp->Unbind(wxEVT_KEY_UP, &CFrame::OnKeyUp, this); + + // Mouse + wxTheApp->Unbind(wxEVT_RIGHT_DOWN, &CFrame::OnMouse, this); + wxTheApp->Unbind(wxEVT_RIGHT_UP, &CFrame::OnMouse, this); + wxTheApp->Unbind(wxEVT_MIDDLE_DOWN, &CFrame::OnMouse, this); + wxTheApp->Unbind(wxEVT_MIDDLE_UP, &CFrame::OnMouse, this); + wxTheApp->Unbind(wxEVT_MOTION, &CFrame::OnMouse, this); + if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) + m_RenderParent->SetCursor(wxNullCursor); + DoFullscreen(false); + if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain) + { + m_RenderFrame->Destroy(); + } + else + { #if defined(__APPLE__) - // Disable the full screen button when not in a game. - NSView *view = (NSView *) m_RenderFrame->GetHandle(); - NSWindow *window = [view window]; + // Disable the full screen button when not in a game. + NSView *view = (NSView *)m_RenderFrame->GetHandle(); + NSWindow *window = [view window]; - [window setCollectionBehavior:NSWindowCollectionBehaviorDefault]; + [window setCollectionBehavior : NSWindowCollectionBehaviorDefault]; #endif - // Make sure the window is not longer set to stay on top - m_RenderFrame->SetWindowStyle(m_RenderFrame->GetWindowStyle() & ~wxSTAY_ON_TOP); - } - m_RenderParent = nullptr; + // Make sure the window is not longer set to stay on top + m_RenderFrame->SetWindowStyle(m_RenderFrame->GetWindowStyle() & ~wxSTAY_ON_TOP); + } + m_RenderParent = nullptr; - // Clean framerate indications from the status bar. - GetStatusBar()->SetStatusText(" ", 0); + // Clean framerate indications from the status bar. + GetStatusBar()->SetStatusText(" ", 0); - // Clear wiimote connection status from the status bar. - GetStatusBar()->SetStatusText(" ", 1); + // Clear wiimote connection status from the status bar. + GetStatusBar()->SetStatusText(" ", 1); - // If batch mode was specified on the command-line, exit now. - if (m_bBatchMode) - Close(true); + // If batch mode was specified on the command-line or we were already closing, exit now. + if (m_bBatchMode || m_bClosing) + Close(true); - // If using auto size with render to main, reset the application size. - if (SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain && - SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderWindowAutoSize) - SetSize(SConfig::GetInstance().m_LocalCoreStartupParameter.iWidth, - SConfig::GetInstance().m_LocalCoreStartupParameter.iHeight); + // If using auto size with render to main, reset the application size. + if (SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain && + SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderWindowAutoSize) + SetSize(SConfig::GetInstance().m_LocalCoreStartupParameter.iWidth, + SConfig::GetInstance().m_LocalCoreStartupParameter.iHeight); - m_GameListCtrl->Enable(); - m_GameListCtrl->Show(); - m_GameListCtrl->SetFocus(); - UpdateGUI(); - } + m_GameListCtrl->Enable(); + m_GameListCtrl->Show(); + m_GameListCtrl->SetFocus(); + UpdateGUI(); } void CFrame::DoRecordingSave() @@ -1567,7 +1581,7 @@ void CFrame::OnLoadLastState(wxCommandEvent& event) void CFrame::OnSaveFirstState(wxCommandEvent& WXUNUSED(event)) { - if (Core::GetState() != Core::CORE_UNINITIALIZED) + if (Core::IsRunningAndStarted()) State::SaveFirstSaved(); } @@ -1625,6 +1639,7 @@ void CFrame::UpdateGUI() bool Initialized = Core::IsRunning(); bool Running = Core::GetState() == Core::CORE_RUN; bool Paused = Core::GetState() == Core::CORE_PAUSE; + bool Stopping = Core::GetState() == Core::CORE_STOPPING; bool RunningWii = Initialized && SConfig::GetInstance().m_LocalCoreStartupParameter.bWii; bool RunningGamecube = Initialized && !SConfig::GetInstance().m_LocalCoreStartupParameter.bWii; @@ -1771,8 +1786,8 @@ void CFrame::UpdateGUI() { // Game has been loaded, enable the pause button if (m_ToolBar) - m_ToolBar->EnableTool(IDM_PLAY, true); - GetMenuBar()->FindItem(IDM_PLAY)->Enable(true); + m_ToolBar->EnableTool(IDM_PLAY, !Stopping); + GetMenuBar()->FindItem(IDM_PLAY)->Enable(!Stopping); // Reset game loading flag m_bGameLoading = false; diff --git a/Source/Core/DolphinWX/GLInterface/GLX.cpp b/Source/Core/DolphinWX/GLInterface/GLX.cpp index 0994320..8c9005b 100644 --- a/Source/Core/DolphinWX/GLInterface/GLX.cpp +++ b/Source/Core/DolphinWX/GLInterface/GLX.cpp @@ -12,7 +12,7 @@ #include "VideoCommon/VideoConfig.h" typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval); -PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI = nullptr; +static PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI = nullptr; // Show the current FPS void cInterfaceGLX::UpdateFPSDisplay(const std::string& text) diff --git a/Source/Core/DolphinWX/GLInterface/WGL.cpp b/Source/Core/DolphinWX/GLInterface/WGL.cpp index 6ae2e88..94bc0e3 100644 --- a/Source/Core/DolphinWX/GLInterface/WGL.cpp +++ b/Source/Core/DolphinWX/GLInterface/WGL.cpp @@ -127,12 +127,7 @@ bool cInterfaceWGL::Create(void *&window_handle) bool cInterfaceWGL::MakeCurrent() { - return wglMakeCurrent(hDC, hRC) ? true : false; -} - -bool cInterfaceWGL::ClearCurrent() -{ - bool success = wglMakeCurrent(hDC, nullptr) ? true : false; + bool success = wglMakeCurrent(hDC, hRC) ? true : false; if (success) { // Grab the swap interval function pointer @@ -141,6 +136,11 @@ bool cInterfaceWGL::ClearCurrent() return success; } +bool cInterfaceWGL::ClearCurrent() +{ + return wglMakeCurrent(hDC, nullptr) ? true : false; +} + // Update window width, size and etc. Called from Render.cpp void cInterfaceWGL::Update() { diff --git a/Source/Core/DolphinWX/GameListCtrl.cpp b/Source/Core/DolphinWX/GameListCtrl.cpp index aaf4363..92f3ff8 100644 --- a/Source/Core/DolphinWX/GameListCtrl.cpp +++ b/Source/Core/DolphinWX/GameListCtrl.cpp @@ -82,9 +82,7 @@ size_t CGameListCtrl::m_currentItem = 0; size_t CGameListCtrl::m_numberItem = 0; std::string CGameListCtrl::m_currentFilename; -bool sorted = false; - -extern CFrame* main_frame; +static bool sorted = false; static int CompareGameListItems(const GameListItem* iso1, const GameListItem* iso2, long sortData = CGameListCtrl::COLUMN_TITLE) @@ -183,11 +181,6 @@ static int CompareGameListItems(const GameListItem* iso1, const GameListItem* is return 0; } -bool operator < (const GameListItem &one, const GameListItem &other) -{ - return CompareGameListItems(&one, &other) < 0; -} - BEGIN_EVENT_TABLE(wxEmuStateTip, wxTipWindow) EVT_KEY_DOWN(wxEmuStateTip::OnKeyDown) END_EVENT_TABLE() @@ -210,14 +203,13 @@ BEGIN_EVENT_TABLE(CGameListCtrl, wxListCtrl) EVT_MENU(IDM_MULTICOMPRESSGCM, CGameListCtrl::OnMultiCompressGCM) EVT_MENU(IDM_MULTIDECOMPRESSGCM, CGameListCtrl::OnMultiDecompressGCM) EVT_MENU(IDM_DELETEGCM, CGameListCtrl::OnDeleteGCM) + EVT_MENU(IDM_LIST_CHANGEDISC, CGameListCtrl::OnChangeDisc) END_EVENT_TABLE() CGameListCtrl::CGameListCtrl(wxWindow* parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style) : wxListCtrl(parent, id, pos, size, style), toolTip(nullptr) { - DragAcceptFiles(true); - Connect(wxEVT_DROP_FILES, wxDropFilesEventHandler(CGameListCtrl::OnDropFiles), nullptr, this); } CGameListCtrl::~CGameListCtrl() @@ -360,7 +352,7 @@ void CGameListCtrl::Update() OnColumnClick(event); sorted = true; - SetColumnWidth(COLUMN_SIZE, wxLIST_AUTOSIZE); + SetColumnWidth(COLUMN_SIZE, SConfig::GetInstance().m_showSizeColumn ? wxLIST_AUTOSIZE : 0); } else { @@ -395,7 +387,7 @@ void CGameListCtrl::Update() SetFocus(); } -wxString NiceSizeFormat(u64 _size) +static wxString NiceSizeFormat(u64 _size) { // Return a pretty filesize string from byte count. // e.g. 1134278 -> "1.08 MiB" @@ -473,7 +465,7 @@ void CGameListCtrl::InsertItemInReportView(long _Index) SetItemData(_Index, ItemIndex); } -wxColour blend50(const wxColour& c1, const wxColour& c2) +static wxColour blend50(const wxColour& c1, const wxColour& c2) { unsigned char r,g,b,a; r = c1.Red()/2 + c2.Red()/2; @@ -658,12 +650,8 @@ const GameListItem *CGameListCtrl::GetISO(size_t index) const return nullptr; } -CGameListCtrl *caller; -#if wxCHECK_VERSION(2, 9, 0) -int wxCALLBACK wxListCompare(wxIntPtr item1, wxIntPtr item2, wxIntPtr sortData) -#else // 2.8.x -int wxCALLBACK wxListCompare(long item1, long item2, long sortData) -#endif +static CGameListCtrl *caller; +static int wxCALLBACK wxListCompare(wxIntPtr item1, wxIntPtr item2, wxIntPtr sortData) { // return 1 if item1 > item2 // return -1 if item1 < item2 @@ -906,6 +894,12 @@ void CGameListCtrl::OnRightClick(wxMouseEvent& event) { popupMenu->Append(IDM_LIST_INSTALLWAD, _("Install to Wii Menu")); } + if (selected_iso->GetPlatform() == GameListItem::GAMECUBE_DISC || + selected_iso->GetPlatform() == GameListItem::WII_DISC) + { + wxMenuItem* changeDiscItem = popupMenu->Append(IDM_LIST_CHANGEDISC, _("Change &Disc")); + changeDiscItem->Enable(Core::IsRunning()); + } PopupMenu(popupMenu); } @@ -1266,6 +1260,14 @@ void CGameListCtrl::OnCompressGCM(wxCommandEvent& WXUNUSED (event)) Update(); } +void CGameListCtrl::OnChangeDisc(wxCommandEvent& WXUNUSED(event)) +{ + const GameListItem *iso = GetSelectedISO(); + if (!iso || !Core::IsRunning()) + return; + DVDInterface::ChangeDisc(WxStrToStr(iso->GetFileName())); +} + void CGameListCtrl::OnSize(wxSizeEvent& event) { if (lastpos == event.GetSize()) @@ -1324,37 +1326,3 @@ void CGameListCtrl::UnselectAll() SetItemState(i, 0, wxLIST_STATE_SELECTED); } } - -void CGameListCtrl::OnDropFiles(wxDropFilesEvent& event) -{ - if (event.GetNumberOfFiles() != 1) - return; - if (File::IsDirectory(WxStrToStr(event.GetFiles()[0]))) - return; - - wxFileName file = event.GetFiles()[0]; - - if (file.GetExt() == "dtm") - { - if (Core::IsRunning()) - return; - - if (!Movie::IsReadOnly()) - { - // let's make the read-only flag consistent at the start of a movie. - Movie::SetReadOnly(true); - main_frame->GetMenuBar()->FindItem(IDM_RECORDREADONLY)->Check(true); - } - - if (Movie::PlayInput(WxStrToStr(file.GetFullPath()))) - main_frame->BootGame(""); - } - else if (!Core::IsRunning()) - { - main_frame->BootGame(WxStrToStr(file.GetFullPath())); - } - else - { - DVDInterface::ChangeDisc(WxStrToStr(file.GetFullPath())); - } -} diff --git a/Source/Core/DolphinWX/GameListCtrl.h b/Source/Core/DolphinWX/GameListCtrl.h index b21c4e2..03aa01c 100644 --- a/Source/Core/DolphinWX/GameListCtrl.h +++ b/Source/Core/DolphinWX/GameListCtrl.h @@ -104,7 +104,7 @@ class CGameListCtrl : public wxListCtrl void OnMultiCompressGCM(wxCommandEvent& event); void OnMultiDecompressGCM(wxCommandEvent& event); void OnInstallWAD(wxCommandEvent& event); - void OnDropFiles(wxDropFilesEvent& event); + void OnChangeDisc(wxCommandEvent& event); void CompressSelection(bool _compress); void AutomaticColumnWidth(); diff --git a/Source/Core/DolphinWX/Globals.h b/Source/Core/DolphinWX/Globals.h index 9a91b78..401f426 100644 --- a/Source/Core/DolphinWX/Globals.h +++ b/Source/Core/DolphinWX/Globals.h @@ -90,6 +90,7 @@ enum IDM_NETPLAY, IDM_RESTART, IDM_CHANGEDISC, + IDM_LIST_CHANGEDISC, IDM_PROPERTIES, IDM_GAMEWIKI, IDM_LOAD_WII_MENU, @@ -253,6 +254,7 @@ enum IDM_PANIC, IDM_KEYSTATE, IDM_WINDOWSIZEREQUEST, + IDM_STOPPED, IDM_HOST_MESSAGE, IDM_MPANEL, ID_STATUSBAR, diff --git a/Source/Core/DolphinWX/ISOProperties.cpp b/Source/Core/DolphinWX/ISOProperties.cpp index f5884f0..b66b457 100644 --- a/Source/Core/DolphinWX/ISOProperties.cpp +++ b/Source/Core/DolphinWX/ISOProperties.cpp @@ -87,10 +87,10 @@ struct WiiPartition DiscIO::IFileSystem *FileSystem; std::vector Files; }; -std::vector WiiDisc; +static std::vector WiiDisc; -DiscIO::IVolume *OpenISO = nullptr; -DiscIO::IFileSystem *pFileSystem = nullptr; +static DiscIO::IVolume *OpenISO = nullptr; +static DiscIO::IFileSystem *pFileSystem = nullptr; std::vector onFrame; std::vector arCodes; @@ -267,7 +267,7 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW // Here we set all the info to be shown (be it SJIS or Ascii) + we set the window title if (!IsWad) { - ChangeBannerDetails((int)SConfig::GetInstance().m_LocalCoreStartupParameter.SelectedLanguage); + ChangeBannerDetails(SConfig::GetInstance().m_LocalCoreStartupParameter.SelectedLanguage); } else { @@ -539,7 +539,7 @@ void CISOProperties::CreateGUIControls(bool IsWad) arrayStringFor_Lang.Add(_("Spanish")); arrayStringFor_Lang.Add(_("Italian")); arrayStringFor_Lang.Add(_("Dutch")); - int language = (int)SConfig::GetInstance().m_LocalCoreStartupParameter.SelectedLanguage; + int language = SConfig::GetInstance().m_LocalCoreStartupParameter.SelectedLanguage; if (IsWad) { arrayStringFor_Lang.Insert(_("Japanese"), 0); @@ -753,7 +753,7 @@ void CISOProperties::OnExtractFile(wxCommandEvent& WXUNUSED (event)) if (DiscIO::IsVolumeWiiDisc(OpenISO)) { int partitionNum = wxAtoi(File.Mid(File.find_first_of("/") - 1, 1)); - File.Remove(0, File.find_first_of("/") + 1); // Remove "Partition x/" + File.erase(0, File.find_first_of("/") + 1); // Remove "Partition x/" WiiDisc.at(partitionNum).FileSystem->ExportFile(WxStrToStr(File), WxStrToStr(Path)); } else @@ -762,53 +762,47 @@ void CISOProperties::OnExtractFile(wxCommandEvent& WXUNUSED (event)) } } -void CISOProperties::ExportDir(const char* _rFullPath, const char* _rExportFolder, const int partitionNum) +void CISOProperties::ExportDir(const std::string& _rFullPath, const std::string& _rExportFolder, const int partitionNum) { - std::string exportName; - u32 index[2] = {0, 0}; - std::vector fst; - DiscIO::IFileSystem *FS = nullptr; + DiscIO::IFileSystem* const fs = DiscIO::IsVolumeWiiDisc(OpenISO) ? WiiDisc[partitionNum].FileSystem : pFileSystem; - if (DiscIO::IsVolumeWiiDisc(OpenISO)) - { - FS = WiiDisc.at(partitionNum).FileSystem; - } - else - { - FS = pFileSystem; - } + std::vector fst; + fs->GetFileList(fst); - FS->GetFileList(fst); + u32 index = 0; + u32 size = 0; - if (!_rFullPath) // Extract all + // Extract all + if (_rFullPath.empty()) { - index[0] = 0; - index[1] = (u32)fst.size(); + index = 0; + size = (u32)fst.size(); - FS->ExportApploader(_rExportFolder); + fs->ExportApploader(_rExportFolder); if (!DiscIO::IsVolumeWiiDisc(OpenISO)) - FS->ExportDOL(_rExportFolder); + fs->ExportDOL(_rExportFolder); } - else // Look for the dir we are going to extract + else { - for (index[0] = 0; index[0] < fst.size(); index[0]++) + // Look for the dir we are going to extract + for (index = 0; index != fst.size(); ++index) { - if (fst.at(index[0])->m_FullPath == _rFullPath) + if (fst[index]->m_FullPath == _rFullPath) { - DEBUG_LOG(DISCIO, "Found the directory at %u", index[0]); - index[1] = (u32)fst.at(index[0])->m_FileSize; + DEBUG_LOG(DISCIO, "Found the directory at %u", index); + size = (u32)fst[index]->m_FileSize; break; } } - DEBUG_LOG(DISCIO,"Directory found from %u to %u\nextracting to:\n%s",index[0],index[1],_rExportFolder); + DEBUG_LOG(DISCIO,"Directory found from %u to %u\nextracting to:\n%s", index , size, _rExportFolder.c_str()); } - wxString dialogTitle = index[0] ? _("Extracting Directory") : _("Extracting All Files"); + wxString dialogTitle = (index != 0) ? _("Extracting Directory") : _("Extracting All Files"); wxProgressDialog dialog( dialogTitle, _("Extracting..."), - index[1] - 1, + size - 1, this, wxPD_APP_MODAL | wxPD_AUTO_HIDE | wxPD_CAN_ABORT | wxPD_ELAPSED_TIME | wxPD_ESTIMATED_TIME | wxPD_REMAINING_TIME | @@ -816,10 +810,10 @@ void CISOProperties::ExportDir(const char* _rFullPath, const char* _rExportFolde ); // Extraction - for (u32 i = index[0]; i < index[1]; i++) + for (u32 i = index; i < size; i++) { dialog.SetTitle(wxString::Format("%s : %d%%", dialogTitle.c_str(), - (u32)(((float)(i - index[0]) / (float)(index[1] - index[0])) * 100))); + (u32)(((float)(i - index) / (float)(size - index)) * 100))); dialog.Update(i, wxString::Format(_("Extracting %s"), StrToWxStr(fst[i]->m_FullPath))); @@ -828,7 +822,7 @@ void CISOProperties::ExportDir(const char* _rFullPath, const char* _rExportFolde if (fst[i]->IsDirectory()) { - exportName = StringFromFormat("%s/%s/", _rExportFolder, fst[i]->m_FullPath.c_str()); + const std::string exportName = StringFromFormat("%s/%s/", _rExportFolder.c_str(), fst[i]->m_FullPath.c_str()); DEBUG_LOG(DISCIO, "%s", exportName.c_str()); if (!File::Exists(exportName) && !File::CreateFullPath(exportName)) @@ -845,10 +839,10 @@ void CISOProperties::ExportDir(const char* _rFullPath, const char* _rExportFolde } else { - exportName = StringFromFormat("%s/%s", _rExportFolder, fst[i]->m_FullPath.c_str()); + const std::string exportName = StringFromFormat("%s/%s", _rExportFolder.c_str(), fst[i]->m_FullPath.c_str()); DEBUG_LOG(DISCIO, "%s", exportName.c_str()); - if (!File::Exists(exportName) && !FS->ExportFile(fst[i]->m_FullPath, exportName)) + if (!File::Exists(exportName) && !fs->ExportFile(fst[i]->m_FullPath, exportName)) { ERROR_LOG(DISCIO, "Could not export %s", exportName.c_str()); } @@ -872,9 +866,9 @@ void CISOProperties::OnExtractDir(wxCommandEvent& event) { if (DiscIO::IsVolumeWiiDisc(OpenISO)) for (u32 i = 0; i < WiiDisc.size(); i++) - ExportDir(nullptr, WxStrToStr(Path).c_str(), i); + ExportDir("", WxStrToStr(Path), i); else - ExportDir(nullptr, WxStrToStr(Path).c_str()); + ExportDir("", WxStrToStr(Path)); return; } @@ -887,15 +881,17 @@ void CISOProperties::OnExtractDir(wxCommandEvent& event) m_Treectrl->SelectItem(m_Treectrl->GetItemParent(m_Treectrl->GetSelection())); } + Directory += DIR_SEP_CHR; + if (DiscIO::IsVolumeWiiDisc(OpenISO)) { int partitionNum = wxAtoi(Directory.Mid(Directory.find_first_of("/") - 1, 1)); - Directory.Remove(0, Directory.find_first_of("/") + 1); // Remove "Partition x/" - ExportDir(WxStrToStr(Directory).c_str(), WxStrToStr(Path).c_str(), partitionNum); + Directory.erase(0, Directory.find_first_of("/") + 1); // Remove "Partition x/" + ExportDir(WxStrToStr(Directory), WxStrToStr(Path), partitionNum); } else { - ExportDir(WxStrToStr(Directory).c_str(), WxStrToStr(Path).c_str()); + ExportDir(WxStrToStr(Directory), WxStrToStr(Path)); } } @@ -975,8 +971,7 @@ void CISOProperties::CheckPartitionIntegrity(wxCommandEvent& event) int PartitionNum = wxAtoi(PartitionName.Mid(PartitionName.find_first_of("0123456789"), 1)); const WiiPartition& Partition = WiiDisc[PartitionNum]; - wxProgressDialog* dialog = new wxProgressDialog( - _("Checking integrity..."), _("Working..."), 1000, this, + wxProgressDialog dialog(_("Checking integrity..."), _("Working..."), 1000, this, wxPD_APP_MODAL | wxPD_ELAPSED_TIME | wxPD_SMOOTH ); @@ -985,11 +980,11 @@ void CISOProperties::CheckPartitionIntegrity(wxCommandEvent& event) while (thread.IsAlive()) { - dialog->Pulse(); + dialog.Pulse(); wxThread::Sleep(50); } - delete dialog; + dialog.Destroy(); if (!thread.Wait()) { diff --git a/Source/Core/DolphinWX/ISOProperties.h b/Source/Core/DolphinWX/ISOProperties.h index cc5df64..4596d7d 100644 --- a/Source/Core/DolphinWX/ISOProperties.h +++ b/Source/Core/DolphinWX/ISOProperties.h @@ -19,6 +19,7 @@ #include #include "Common/IniFile.h" +#include "Core/ActionReplay.h" class GameListItem; class wxButton; @@ -32,6 +33,8 @@ class wxWindow; namespace DiscIO { struct SFileInfo; } namespace Gecko { class CodeConfigPanel; } +extern std::vector arCodes; + struct PHackData { bool PHackSZNear; @@ -39,6 +42,7 @@ struct PHackData std::string PHZNear; std::string PHZFar; }; +extern PHackData PHack_Data; class CISOProperties : public wxDialog { @@ -205,7 +209,7 @@ class CISOProperties : public wxDialog std::vector fileInfos, const size_t _FirstIndex, const size_t _LastIndex); - void ExportDir(const char* _rFullPath, const char* _rExportFilename, + void ExportDir(const std::string& _rFullPath, const std::string& _rExportFilename, const int partitionNum = 0); IniFile GameIniDefault; diff --git a/Source/Core/DolphinWX/InputConfigDiag.cpp b/Source/Core/DolphinWX/InputConfigDiag.cpp index 2990fdb..6e0fcbd 100644 --- a/Source/Core/DolphinWX/InputConfigDiag.cpp +++ b/Source/Core/DolphinWX/InputConfigDiag.cpp @@ -45,7 +45,6 @@ #include "Common/MsgHandler.h" #include "Core/HW/Wiimote.h" #include "DolphinWX/InputConfigDiag.h" -#include "DolphinWX/UDPConfigDiag.h" #include "DolphinWX/WxUtils.h" #include "InputCommon/ControllerEmu.h" #include "InputCommon/InputConfig.h" @@ -53,18 +52,10 @@ #include "InputCommon/ControllerInterface/Device.h" #include "InputCommon/ControllerInterface/ExpressionParser.h" -class UDPWrapper; class wxWindow; using namespace ciface::ExpressionParser; -void GamepadPage::ConfigUDPWii(wxCommandEvent &event) -{ - UDPWrapper* const wrp = ((UDPConfigButton*)event.GetEventObject())->wrapper; - UDPConfigDiag diag(this, wrp); - diag.ShowModal(); -} - void GamepadPage::ConfigExtension(wxCommandEvent& event) { ControllerEmu::Extension* const ex = ((ExtensionButton*)event.GetEventObject())->extension; @@ -113,32 +104,32 @@ void PadSettingExtension::UpdateValue() extension->switch_extension = ((wxChoice*)wxcontrol)->GetSelection(); } -PadSettingCheckBox::PadSettingCheckBox(wxWindow* const parent, ControlState& _value, const std::string& label) - : PadSetting(new wxCheckBox(parent, -1, wxGetTranslation(StrToWxStr(label)))) - , value(_value) +PadSettingCheckBox::PadSettingCheckBox(wxWindow* const parent, ControllerEmu::ControlGroup::Setting* const _setting) + : PadSetting(new wxCheckBox(parent, -1, wxGetTranslation(StrToWxStr(_setting->name)))) + , setting(_setting) { UpdateGUI(); } void PadSettingCheckBox::UpdateGUI() { - ((wxCheckBox*)wxcontrol)->SetValue(value > 0); + ((wxCheckBox*)wxcontrol)->SetValue(setting->GetValue()); } void PadSettingCheckBox::UpdateValue() { // 0.01 so its saved to the ini file as just 1. :( - value = 0.01 * ((wxCheckBox*)wxcontrol)->GetValue(); + setting->SetValue(0.01 * ((wxCheckBox*)wxcontrol)->GetValue()); } void PadSettingSpin::UpdateGUI() { - ((wxSpinCtrl*)wxcontrol)->SetValue((int)(value * 100)); + ((wxSpinCtrl*)wxcontrol)->SetValue((int)(setting->GetValue() * 100)); } void PadSettingSpin::UpdateValue() { - value = float(((wxSpinCtrl*)wxcontrol)->GetValue()) / 100; + setting->SetValue(float(((wxSpinCtrl*)wxcontrol)->GetValue()) / 100); } ControlDialog::ControlDialog(GamepadPage* const parent, InputPlugin& plugin, ControllerInterface::ControlReference* const ref) @@ -883,19 +874,12 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin Add(configure_btn, 0, wxALL|wxEXPAND, 3); } break; - case GROUP_TYPE_UDPWII: - { - wxButton* const btn = new UDPConfigButton(parent, (UDPWrapper*)group); - btn->Bind(wxEVT_BUTTON, &GamepadPage::ConfigUDPWii, eventsink); - Add(btn, 0, wxALL|wxEXPAND, 3); - } - break; default: { //options for (auto& groupSetting : group->settings) { - PadSettingCheckBox* setting_cbox = new PadSettingCheckBox(parent, groupSetting->value, groupSetting->name); + PadSettingCheckBox* setting_cbox = new PadSettingCheckBox(parent, groupSetting.get()); setting_cbox->wxcontrol->Bind(wxEVT_CHECKBOX, &GamepadPage::AdjustSetting, eventsink); options.push_back(setting_cbox); diff --git a/Source/Core/DolphinWX/InputConfigDiag.h b/Source/Core/DolphinWX/InputConfigDiag.h index 64a3cea..12223be 100644 --- a/Source/Core/DolphinWX/InputConfigDiag.h +++ b/Source/Core/DolphinWX/InputConfigDiag.h @@ -29,7 +29,6 @@ #include "InputCommon/ControllerInterface/Device.h" class InputPlugin; -class UDPWrapper; class wxComboBox; class wxCommandEvent; class wxEvent; @@ -70,25 +69,25 @@ class PadSettingExtension : public PadSetting class PadSettingSpin : public PadSetting { public: - PadSettingSpin(wxWindow* const parent, ControllerEmu::ControlGroup::Setting* const setting) - : PadSetting(new wxSpinCtrl(parent, -1, wxEmptyString, wxDefaultPosition - , wxSize(54, -1), 0, setting->low, setting->high, (int)(setting->value * 100))) - , value(setting->value) {} + PadSettingSpin(wxWindow* const parent, ControllerEmu::ControlGroup::Setting* const _setting) + : PadSetting(new wxSpinCtrl(parent, -1, wxEmptyString, wxDefaultPosition, + wxSize(54, -1), 0, _setting->low, _setting->high, (int)(_setting->value * 100))) + , setting(_setting) {} void UpdateGUI() override; void UpdateValue() override; - ControlState& value; + ControllerEmu::ControlGroup::Setting* const setting; }; class PadSettingCheckBox : public PadSetting { public: - PadSettingCheckBox(wxWindow* const parent, ControlState& _value, const std::string& label); + PadSettingCheckBox(wxWindow* const parent, ControllerEmu::ControlGroup::Setting* const setting); void UpdateGUI() override; void UpdateValue() override; - ControlState& value; + ControllerEmu::ControlGroup::Setting* const setting; }; class GamepadPage; @@ -147,16 +146,6 @@ class ControlButton : public wxButton ControllerInterface::ControlReference* const control_reference; }; -class UDPConfigButton : public wxButton -{ -public: - UDPWrapper* const wrapper; - UDPConfigButton(wxWindow* const parent, UDPWrapper * udp) - : wxButton(parent, -1, _("Configure"), wxDefaultPosition) - , wrapper(udp) - {} -}; - class ControlGroupBox : public wxBoxSizer { public: @@ -200,8 +189,6 @@ class GamepadPage : public wxPanel void ConfigExtension(wxCommandEvent& event); - void ConfigUDPWii(wxCommandEvent& event); - void SetDevice(wxCommandEvent& event); void ClearAll(wxCommandEvent& event); diff --git a/Source/Core/DolphinWX/InputConfigDiagBitmaps.cpp b/Source/Core/DolphinWX/InputConfigDiagBitmaps.cpp index 998758d..72faac4 100644 --- a/Source/Core/DolphinWX/InputConfigDiagBitmaps.cpp +++ b/Source/Core/DolphinWX/InputConfigDiagBitmaps.cpp @@ -29,6 +29,360 @@ class wxTimerEvent; +static void DrawCenteredRectangle(wxDC &dc, int x, int y, int w, int h) +{ + x -= w / 2; + y -= h / 2; + dc.DrawRectangle(x, y, w, h); +} + +#define VIS_BITMAP_SIZE 64 + +#define VIS_NORMALIZE(a) ((a / 2.0) + 0.5) +#define VIS_COORD(a) ((VIS_NORMALIZE(a)) * VIS_BITMAP_SIZE) + +#define COORD_VIS_SIZE 4 + +static void DrawCoordinate(wxDC &dc, double x, double y) +{ + int xc = VIS_COORD(x); + int yc = VIS_COORD(y); + DrawCenteredRectangle(dc, xc, yc, COORD_VIS_SIZE, COORD_VIS_SIZE); +} + +static void DrawControlGroupBox(wxDC &dc, ControlGroupBox *g) +{ + switch (g->control_group->type) + { + case GROUP_TYPE_TILT : + case GROUP_TYPE_STICK : + case GROUP_TYPE_CURSOR : + { + // this is starting to be a mess combining all these in one case + + double x = 0, y = 0, z = 0; + + switch (g->control_group->type) + { + case GROUP_TYPE_STICK : + ((ControllerEmu::AnalogStick*)g->control_group)->GetState(&x, &y); + break; + case GROUP_TYPE_TILT : + ((ControllerEmu::Tilt*)g->control_group)->GetState(&x, &y); + break; + case GROUP_TYPE_CURSOR : + ((ControllerEmu::Cursor*)g->control_group)->GetState(&x, &y, &z); + break; + } + + // ir cursor forward movement + if (GROUP_TYPE_CURSOR == g->control_group->type) + { + if (z) + { + dc.SetPen(*wxRED_PEN); + dc.SetBrush(*wxRED_BRUSH); + } + else + { + dc.SetPen(*wxGREY_PEN); + dc.SetBrush(*wxGREY_BRUSH); + } + dc.DrawRectangle(0, 31 - z*31, 64, 2); + } + + // octagon for visual aid for diagonal adjustment + dc.SetPen(*wxLIGHT_GREY_PEN); + dc.SetBrush(*wxWHITE_BRUSH); + if (GROUP_TYPE_STICK == g->control_group->type) + { + // outline and fill colors + wxBrush LightGrayBrush("#dddddd"); + wxPen LightGrayPen("#bfbfbf"); + dc.SetBrush(LightGrayBrush); + dc.SetPen(LightGrayPen); + + // polygon offset + float max + , diagonal + , box = 64 + , d_of = box / 256.0 + , x_of = box / 2.0; + + if (g->control_group->name == "Main Stick") + { + max = (87.0f / 127.0f) * 100; + diagonal = (55.0f / 127.0f) * 100.0; + } + else if (g->control_group->name == "C-Stick") + { + max = (74.0f / 127.0f) * 100; + diagonal = (46.0f / 127.0f) * 100; + } + else + { + max = (82.0f / 127.0f) * 100; + diagonal = (58.0f / 127.0f) * 100; + } + + // polygon corners + wxPoint Points[8]; + Points[0].x = (int)(0.0 * d_of + x_of); Points[0].y = (int)(max * d_of + x_of); + Points[1].x = (int)(diagonal * d_of + x_of); Points[1].y = (int)(diagonal * d_of + x_of); + Points[2].x = (int)(max * d_of + x_of); Points[2].y = (int)(0.0 * d_of + x_of); + Points[3].x = (int)(diagonal * d_of + x_of); Points[3].y = (int)(-diagonal * d_of + x_of); + Points[4].x = (int)(0.0 * d_of + x_of); Points[4].y = (int)(-max * d_of + x_of); + Points[5].x = (int)(-diagonal * d_of + x_of); Points[5].y = (int)(-diagonal * d_of + x_of); + Points[6].x = (int)(-max * d_of + x_of); Points[6].y = (int)(0.0 * d_of + x_of); + Points[7].x = (int)(-diagonal * d_of + x_of); Points[7].y = (int)(diagonal * d_of + x_of); + + // draw polygon + dc.DrawPolygon(8, Points); + } + else + { + dc.DrawRectangle(16, 16, 32, 32); + } + + if (GROUP_TYPE_CURSOR != g->control_group->type) + { + // deadzone circle + dc.SetBrush(*wxLIGHT_GREY_BRUSH); + dc.DrawCircle(32, 32, g->control_group->settings[SETTING_DEADZONE]->value * 32); + } + + // raw dot + { + float xx, yy; + xx = g->control_group->controls[3]->control_ref->State(); + xx -= g->control_group->controls[2]->control_ref->State(); + yy = g->control_group->controls[1]->control_ref->State(); + yy -= g->control_group->controls[0]->control_ref->State(); + + dc.SetPen(*wxGREY_PEN); + dc.SetBrush(*wxGREY_BRUSH); + DrawCoordinate(dc, xx, yy); + } + + // adjusted dot + if (x != 0 && y != 0) + { + dc.SetPen(*wxRED_PEN); + dc.SetBrush(*wxRED_BRUSH); + // XXX: The adjusted values flip the Y axis to be in the format + // the Wii expects. Should this be in WiimoteEmu.cpp instead? + DrawCoordinate(dc, x, -y); + } + } + break; + case GROUP_TYPE_FORCE : + { + double raw_dot[3]; + double adj_dot[3]; + const float deadzone = g->control_group->settings[0]->value; + + // adjusted + ((ControllerEmu::Force*)g->control_group)->GetState(adj_dot); + + // raw + for (unsigned int i=0; i<3; ++i) + { + raw_dot[i] = (g->control_group->controls[i*2 + 1]->control_ref->State() - + g->control_group->controls[i*2]->control_ref->State()); + } + + // deadzone rect for forward/backward visual + dc.SetBrush(*wxLIGHT_GREY_BRUSH); + dc.SetPen(*wxLIGHT_GREY_PEN); + int deadzone_height = deadzone * VIS_BITMAP_SIZE; + DrawCenteredRectangle(dc, 0, VIS_BITMAP_SIZE / 2, VIS_BITMAP_SIZE, deadzone_height); + +#define LINE_HEIGHT 2 + int line_y; + + // raw forward/background line + dc.SetPen(*wxGREY_PEN); + dc.SetBrush(*wxGREY_BRUSH); + line_y = VIS_COORD(raw_dot[2]); + DrawCenteredRectangle(dc, VIS_BITMAP_SIZE / 2, line_y, VIS_BITMAP_SIZE, LINE_HEIGHT); + + // adjusted forward/background line + if (adj_dot[2] != 0.0) + { + dc.SetPen(*wxRED_PEN); + dc.SetBrush(*wxRED_BRUSH); + line_y = VIS_COORD(adj_dot[2]); + DrawCenteredRectangle(dc, VIS_BITMAP_SIZE / 2, line_y, VIS_BITMAP_SIZE, LINE_HEIGHT); + } + +#define DEADZONE_RECT_SIZE 32 + + // empty deadzone square + dc.SetBrush(*wxWHITE_BRUSH); + dc.SetPen(*wxLIGHT_GREY_PEN); + DrawCenteredRectangle(dc, VIS_BITMAP_SIZE / 2, VIS_BITMAP_SIZE / 2, DEADZONE_RECT_SIZE, DEADZONE_RECT_SIZE); + + // deadzone square + dc.SetBrush(*wxLIGHT_GREY_BRUSH); + int dz_size = (deadzone * DEADZONE_RECT_SIZE); + DrawCenteredRectangle(dc, VIS_BITMAP_SIZE / 2, VIS_BITMAP_SIZE / 2, dz_size, dz_size); + + // raw dot + dc.SetPen(*wxGREY_PEN); + dc.SetBrush(*wxGREY_BRUSH); + DrawCoordinate(dc, raw_dot[1], raw_dot[0]); + + // adjusted dot + if (adj_dot[1] != 0 && adj_dot[0] != 0) + { + dc.SetPen(*wxRED_PEN); + dc.SetBrush(*wxRED_BRUSH); + DrawCoordinate(dc, adj_dot[1], adj_dot[0]); + } + + } + break; + case GROUP_TYPE_BUTTONS : + { + const unsigned int button_count = ((unsigned int)g->control_group->controls.size()); + + // draw the shit + dc.SetPen(*wxGREY_PEN); + + unsigned int * const bitmasks = new unsigned int[ button_count ]; + for (unsigned int n = 0; ncontrol_group)->GetState(&buttons, bitmasks); + + for (unsigned int n = 0; ncontrol_group->controls[n]->control_ref->State() * 128; + dc.SetBrush(wxBrush(wxColour(amt, amt, amt))); + } + dc.DrawRectangle(n * 12, 0, 14, 12); + + // text + const std::string name = g->control_group->controls[n]->name; + // bit of hax so ZL, ZR show up as L, R + dc.DrawText(StrToWxStr(std::string(1, (name[1] && name[1] < 'a') ? name[1] : name[0])), n*12 + 2, 1); + } + + delete[] bitmasks; + + } + break; + case GROUP_TYPE_TRIGGERS : + { + const unsigned int trigger_count = ((unsigned int)(g->control_group->controls.size())); + + // draw the shit + dc.SetPen(*wxGREY_PEN); + ControlState deadzone = g->control_group->settings[0]->value; + + double* const trigs = new double[trigger_count]; + ((ControllerEmu::Triggers*)g->control_group)->GetState(trigs); + + for (unsigned int n = 0; n < trigger_count; ++n) + { + ControlState trig_r = g->control_group->controls[n]->control_ref->State(); + + // outline + dc.SetPen(*wxGREY_PEN); + dc.SetBrush(*wxWHITE_BRUSH); + dc.DrawRectangle(0, n*12, 64, 14); + + // raw + dc.SetBrush(*wxGREY_BRUSH); + dc.DrawRectangle(0, n*12, trig_r*64, 14); + + // deadzone affected + dc.SetBrush(*wxRED_BRUSH); + dc.DrawRectangle(0, n*12, trigs[n]*64, 14); + + // text + dc.DrawText(StrToWxStr(g->control_group->controls[n]->name), 3, n*12 + 1); + } + + delete[] trigs; + + // deadzone box + dc.SetPen(*wxLIGHT_GREY_PEN); + dc.SetBrush(*wxTRANSPARENT_BRUSH); + dc.DrawRectangle(0, 0, deadzone*64, trigger_count*14); + + } + break; + case GROUP_TYPE_MIXED_TRIGGERS : + { + const unsigned int trigger_count = ((unsigned int)(g->control_group->controls.size() / 2)); + + // draw the shit + dc.SetPen(*wxGREY_PEN); + ControlState thresh = g->control_group->settings[0]->value; + + for (unsigned int n = 0; n < trigger_count; ++n) + { + dc.SetBrush(*wxRED_BRUSH); + ControlState trig_d = g->control_group->controls[n]->control_ref->State(); + + ControlState trig_a = trig_d > thresh ? 1 + : g->control_group->controls[n+trigger_count]->control_ref->State(); + + dc.DrawRectangle(0, n*12, 64+20, 14); + if (trig_d <= thresh) + dc.SetBrush(*wxWHITE_BRUSH); + dc.DrawRectangle(trig_a*64, n*12, 64+20, 14); + dc.DrawRectangle(64, n*12, 32, 14); + + // text + dc.DrawText(StrToWxStr(g->control_group->controls[n+trigger_count]->name), 3, n*12 + 1); + dc.DrawText(StrToWxStr(std::string(1, g->control_group->controls[n]->name[0])), 64 + 3, n*12 + 1); + } + + // threshold box + dc.SetPen(*wxLIGHT_GREY_PEN); + dc.SetBrush(*wxTRANSPARENT_BRUSH); + dc.DrawRectangle(thresh*64, 0, 128, trigger_count*14); + + } + break; + case GROUP_TYPE_SLIDER: + { + const ControlState deadzone = g->control_group->settings[0]->value; + + ControlState state = g->control_group->controls[1]->control_ref->State() - g->control_group->controls[0]->control_ref->State(); + dc.SetPen(*wxGREY_PEN); + dc.SetBrush(*wxGREY_BRUSH); + dc.DrawRectangle(31 + state * 30, 0, 2, 14); + + double adj_state; + ((ControllerEmu::Slider*)g->control_group)->GetState(&adj_state); + if (state) + { + dc.SetPen(*wxRED_PEN); + dc.SetBrush(*wxRED_BRUSH); + dc.DrawRectangle(31 + adj_state * 30, 0, 2, 14); + } + + // deadzone box + dc.SetPen(*wxLIGHT_GREY_PEN); + dc.SetBrush(*wxTRANSPARENT_BRUSH); + dc.DrawRectangle(32 - deadzone * 32, 0, deadzone * 64, 14); + } + break; + default: + break; + } +} + void InputConfigDialog::UpdateBitmaps(wxTimerEvent& WXUNUSED(event)) { wxFont small_font(6, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD); @@ -59,335 +413,7 @@ void InputConfigDialog::UpdateBitmaps(wxTimerEvent& WXUNUSED(event)) if (64 == bitmap.GetHeight()) dc.DrawText(StrToWxStr(g->control_group->name).Upper(), 4, 2); - switch (g->control_group->type) - { - case GROUP_TYPE_TILT : - case GROUP_TYPE_STICK : - case GROUP_TYPE_CURSOR : - { - // this is starting to be a mess combining all these in one case - - float x = 0, y = 0, z = 0; - float xx, yy; - - switch (g->control_group->type) - { - case GROUP_TYPE_STICK : - ((ControllerEmu::AnalogStick*)g->control_group)->GetState(&x, &y, 32.0, 32-1.5); - break; - case GROUP_TYPE_TILT : - ((ControllerEmu::Tilt*)g->control_group)->GetState(&x, &y, 32.0, 32-1.5); - break; - case GROUP_TYPE_CURSOR : - ((ControllerEmu::Cursor*)g->control_group)->GetState(&x, &y, &z); - x *= (32-1.5); x+= 32; - y *= (32-1.5); y+= 32; - break; - } - - xx = g->control_group->controls[3]->control_ref->State(); - xx -= g->control_group->controls[2]->control_ref->State(); - yy = g->control_group->controls[1]->control_ref->State(); - yy -= g->control_group->controls[0]->control_ref->State(); - xx *= 32 - 1; xx += 32; - yy *= 32 - 1; yy += 32; - - // draw the shit - - // ir cursor forward movement - if (GROUP_TYPE_CURSOR == g->control_group->type) - { - if (z) - { - dc.SetPen(*wxRED_PEN); - dc.SetBrush(*wxRED_BRUSH); - } - else - { - dc.SetPen(*wxGREY_PEN); - dc.SetBrush(*wxGREY_BRUSH); - } - dc.DrawRectangle(0, 31 - z*31, 64, 2); - } - - // octagon for visual aid for diagonal adjustment - dc.SetPen(*wxLIGHT_GREY_PEN); - dc.SetBrush(*wxWHITE_BRUSH); - if (GROUP_TYPE_STICK == g->control_group->type) - { - // outline and fill colors - wxBrush LightGrayBrush("#dddddd"); - wxPen LightGrayPen("#bfbfbf"); - dc.SetBrush(LightGrayBrush); - dc.SetPen(LightGrayPen); - - // polygon offset - float max - , diagonal - , box = 64 - , d_of = box / 256.0 - , x_of = box / 2.0; - - if (g->control_group->name == "Main Stick") - { - max = (87.0f / 127.0f) * 100; - diagonal = (55.0f / 127.0f) * 100.0; - } - else if (g->control_group->name == "C-Stick") - { - max = (74.0f / 127.0f) * 100; - diagonal = (46.0f / 127.0f) * 100; - } - else - { - max = (82.0f / 127.0f) * 100; - diagonal = (58.0f / 127.0f) * 100; - } - - // polygon corners - wxPoint Points[8]; - Points[0].x = (int)(0.0 * d_of + x_of); Points[0].y = (int)(max * d_of + x_of); - Points[1].x = (int)(diagonal * d_of + x_of); Points[1].y = (int)(diagonal * d_of + x_of); - Points[2].x = (int)(max * d_of + x_of); Points[2].y = (int)(0.0 * d_of + x_of); - Points[3].x = (int)(diagonal * d_of + x_of); Points[3].y = (int)(-diagonal * d_of + x_of); - Points[4].x = (int)(0.0 * d_of + x_of); Points[4].y = (int)(-max * d_of + x_of); - Points[5].x = (int)(-diagonal * d_of + x_of); Points[5].y = (int)(-diagonal * d_of + x_of); - Points[6].x = (int)(-max * d_of + x_of); Points[6].y = (int)(0.0 * d_of + x_of); - Points[7].x = (int)(-diagonal * d_of + x_of); Points[7].y = (int)(diagonal * d_of + x_of); - - // draw polygon - dc.DrawPolygon(8, Points); - } - else - { - dc.DrawRectangle(16, 16, 32, 32); - } - - if (GROUP_TYPE_CURSOR != g->control_group->type) - { - // deadzone circle - dc.SetBrush(*wxLIGHT_GREY_BRUSH); - dc.DrawCircle(32, 32, g->control_group->settings[SETTING_DEADZONE]->value * 32); - } - - // raw dot - dc.SetPen(*wxGREY_PEN); - dc.SetBrush(*wxGREY_BRUSH); - // i like the dot better than the cross i think - dc.DrawRectangle(xx - 2, yy - 2, 4, 4); - //dc.DrawRectangle(xx-1, 64-yy-4, 2, 8); - //dc.DrawRectangle(xx-4, 64-yy-1, 8, 2); - - // adjusted dot - if (x!=32 || y!=32) - { - dc.SetPen(*wxRED_PEN); - dc.SetBrush(*wxRED_BRUSH); - dc.DrawRectangle(x-2, 64-y-2, 4, 4); - // i like the dot better than the cross i think - //dc.DrawRectangle(x-1, 64-y-4, 2, 8); - //dc.DrawRectangle(x-4, 64-y-1, 8, 2); - } - - } - break; - case GROUP_TYPE_FORCE : - { - float raw_dot[3]; - float adj_dot[3]; - const float deadzone = 32 * g->control_group->settings[0]->value; - - // adjusted - ((ControllerEmu::Force*)g->control_group)->GetState(adj_dot, 32.0, 32-1.5); - - // raw - for (unsigned int i=0; i<3; ++i) - { - raw_dot[i] = g->control_group->controls[i*2 + 1]->control_ref->State() - - g->control_group->controls[i*2]->control_ref->State(); - raw_dot[i] *= 32 - 1; raw_dot[i] += 32; - } - - // deadzone rect for forward/backward visual - dc.SetBrush(*wxLIGHT_GREY_BRUSH); - dc.SetPen(*wxLIGHT_GREY_PEN); - dc.DrawRectangle(0, 32 - deadzone, 64, deadzone * 2); - - // raw forward/background line - dc.SetPen(*wxGREY_PEN); - dc.SetBrush(*wxGREY_BRUSH); - dc.DrawRectangle(0, raw_dot[2] - 1, 64, 2); - - // adjusted forward/background line - if (adj_dot[2]!=32) - { - dc.SetPen(*wxRED_PEN); - dc.SetBrush(*wxRED_BRUSH); - dc.DrawRectangle(0, adj_dot[2] - 1, 64, 2); - } - - // a rectangle, for looks i guess - dc.SetBrush(*wxWHITE_BRUSH); - dc.SetPen(*wxLIGHT_GREY_PEN); - dc.DrawRectangle(16, 16, 32, 32); - - // deadzone square - dc.SetBrush(*wxLIGHT_GREY_BRUSH); - dc.DrawRectangle(32 - deadzone, 32 - deadzone, deadzone * 2, deadzone * 2); - - // raw dot - dc.SetPen(*wxGREY_PEN); - dc.SetBrush(*wxGREY_BRUSH); - dc.DrawRectangle(raw_dot[1] - 2, raw_dot[0] - 2, 4, 4); - - // adjusted dot - if (adj_dot[1]!=32 || adj_dot[0]!=32) - { - dc.SetPen(*wxRED_PEN); - dc.SetBrush(*wxRED_BRUSH); - dc.DrawRectangle(adj_dot[1]-2, adj_dot[0]-2, 4, 4); - } - - } - break; - case GROUP_TYPE_BUTTONS : - { - const unsigned int button_count = ((unsigned int)g->control_group->controls.size()); - - // draw the shit - dc.SetPen(*wxGREY_PEN); - - unsigned int * const bitmasks = new unsigned int[ button_count ]; - for (unsigned int n = 0; ncontrol_group)->GetState(&buttons, bitmasks); - - for (unsigned int n = 0; ncontrol_group->controls[n]->control_ref->State() * 128; - dc.SetBrush(wxBrush(wxColour(amt, amt, amt))); - } - dc.DrawRectangle(n * 12, 0, 14, 12); - - // text - const std::string name = g->control_group->controls[n]->name; - // bit of hax so ZL, ZR show up as L, R - dc.DrawText(StrToWxStr(std::string(1, (name[1] && name[1] < 'a') ? name[1] : name[0])), n*12 + 2, 1); - } - - delete[] bitmasks; - - } - break; - case GROUP_TYPE_TRIGGERS : - { - const unsigned int trigger_count = ((unsigned int)(g->control_group->controls.size())); - - // draw the shit - dc.SetPen(*wxGREY_PEN); - ControlState deadzone = g->control_group->settings[0]->value; - - unsigned int* const trigs = new unsigned int[trigger_count]; - ((ControllerEmu::Triggers*)g->control_group)->GetState(trigs, 64); - - for (unsigned int n = 0; n < trigger_count; ++n) - { - ControlState trig_r = g->control_group->controls[n]->control_ref->State(); - - // outline - dc.SetPen(*wxGREY_PEN); - dc.SetBrush(*wxWHITE_BRUSH); - dc.DrawRectangle(0, n*12, 64, 14); - - // raw - dc.SetBrush(*wxGREY_BRUSH); - dc.DrawRectangle(0, n*12, trig_r*64, 14); - - // deadzone affected - dc.SetBrush(*wxRED_BRUSH); - dc.DrawRectangle(0, n*12, trigs[n], 14); - - // text - dc.DrawText(StrToWxStr(g->control_group->controls[n]->name), 3, n*12 + 1); - } - - delete[] trigs; - - // deadzone box - dc.SetPen(*wxLIGHT_GREY_PEN); - dc.SetBrush(*wxTRANSPARENT_BRUSH); - dc.DrawRectangle(0, 0, deadzone*64, trigger_count*14); - - } - break; - case GROUP_TYPE_MIXED_TRIGGERS : - { - const unsigned int trigger_count = ((unsigned int)(g->control_group->controls.size() / 2)); - - // draw the shit - dc.SetPen(*wxGREY_PEN); - ControlState thresh = g->control_group->settings[0]->value; - - for (unsigned int n = 0; n < trigger_count; ++n) - { - dc.SetBrush(*wxRED_BRUSH); - ControlState trig_d = g->control_group->controls[n]->control_ref->State(); - - ControlState trig_a = trig_d > thresh ? 1 - : g->control_group->controls[n+trigger_count]->control_ref->State(); - - dc.DrawRectangle(0, n*12, 64+20, 14); - if (trig_d <= thresh) - dc.SetBrush(*wxWHITE_BRUSH); - dc.DrawRectangle(trig_a*64, n*12, 64+20, 14); - dc.DrawRectangle(64, n*12, 32, 14); - - // text - dc.DrawText(StrToWxStr(g->control_group->controls[n+trigger_count]->name), 3, n*12 + 1); - dc.DrawText(StrToWxStr(std::string(1, g->control_group->controls[n]->name[0])), 64 + 3, n*12 + 1); - } - - // threshold box - dc.SetPen(*wxLIGHT_GREY_PEN); - dc.SetBrush(*wxTRANSPARENT_BRUSH); - dc.DrawRectangle(thresh*64, 0, 128, trigger_count*14); - - } - break; - case GROUP_TYPE_SLIDER: - { - const ControlState deadzone = g->control_group->settings[0]->value; - - ControlState state = g->control_group->controls[1]->control_ref->State() - g->control_group->controls[0]->control_ref->State(); - dc.SetPen(*wxGREY_PEN); - dc.SetBrush(*wxGREY_BRUSH); - dc.DrawRectangle(31 + state * 30, 0, 2, 14); - - ((ControllerEmu::Slider*)g->control_group)->GetState(&state, 1); - if (state) - { - dc.SetPen(*wxRED_PEN); - dc.SetBrush(*wxRED_BRUSH); - dc.DrawRectangle(31 + state * 30, 0, 2, 14); - } - - // deadzone box - dc.SetPen(*wxLIGHT_GREY_PEN); - dc.SetBrush(*wxTRANSPARENT_BRUSH); - dc.DrawRectangle(32 - deadzone * 32, 0, deadzone * 64, 14); - } - break; - default : - break; - } + DrawControlGroupBox(dc, g); // box outline // Windows XP color diff --git a/Source/Core/DolphinWX/Main.cpp b/Source/Core/DolphinWX/Main.cpp index 3643d6e..ad6d049 100644 --- a/Source/Core/DolphinWX/Main.cpp +++ b/Source/Core/DolphinWX/Main.cpp @@ -37,7 +37,9 @@ #include "Common/Logging/LogManager.h" #include "Core/ConfigManager.h" +#include "Core/Core.h" #include "Core/CoreParameter.h" +#include "Core/Host.h" #include "Core/Movie.h" #include "Core/HW/Wiimote.h" @@ -451,6 +453,7 @@ void DolphinApp::OnEndSession(wxCloseEvent& event) int DolphinApp::OnExit() { + Core::Shutdown(); WiimoteReal::Shutdown(); VideoBackend::ClearList(); SConfig::Shutdown(); @@ -675,6 +678,11 @@ void Host_SetWiiMoteConnectionState(int _State) main_frame->GetEventHandler()->AddPendingEvent(event); } +bool Host_UIHasFocus() +{ + return main_frame->UIHasFocus(); +} + bool Host_RendererHasFocus() { return main_frame->RendererHasFocus(); diff --git a/Source/Core/DolphinWX/Main.h b/Source/Core/DolphinWX/Main.h index 80c6f6d..3d07046 100644 --- a/Source/Core/DolphinWX/Main.h +++ b/Source/Core/DolphinWX/Main.h @@ -15,6 +15,8 @@ class wxLocale; class wxTimer; class wxTimerEvent; +extern CFrame* main_frame; + // Define a new application class DolphinApp : public wxApp { diff --git a/Source/Core/DolphinWX/MainAndroid.cpp b/Source/Core/DolphinWX/MainAndroid.cpp index a5cde56..d24be7f 100644 --- a/Source/Core/DolphinWX/MainAndroid.cpp +++ b/Source/Core/DolphinWX/MainAndroid.cpp @@ -98,6 +98,11 @@ void Host_SetStartupDebuggingParameters() { } +bool Host_UIHasFocus() +{ + return true; +} + bool Host_RendererHasFocus() { return true; diff --git a/Source/Core/DolphinWX/MainNoGUI.cpp b/Source/Core/DolphinWX/MainNoGUI.cpp index d4b75d8..351d818 100644 --- a/Source/Core/DolphinWX/MainNoGUI.cpp +++ b/Source/Core/DolphinWX/MainNoGUI.cpp @@ -95,6 +95,11 @@ void Host_SetStartupDebuggingParameters() StartUp.bBootToPause = false; } +bool Host_UIHasFocus() +{ + return false; +} + bool Host_RendererHasFocus() { return rendererHasFocus; @@ -131,7 +136,7 @@ void Host_SetWiiMoteConnectionState(int _State) {} void X11_MainLoop() { bool fullscreen = SConfig::GetInstance().m_LocalCoreStartupParameter.bFullscreen; - while (Core::GetState() == Core::CORE_UNINITIALIZED) + while (!Core::IsRunning()) updateMainFrameEvent.Wait(); Display *dpy = XOpenDisplay(0); @@ -385,6 +390,7 @@ int main(int argc, char* argv[]) #endif } + Core::Shutdown(); WiimoteReal::Shutdown(); VideoBackend::ClearList(); SConfig::Shutdown(); diff --git a/Source/Core/DolphinWX/MemcardManager.cpp b/Source/Core/DolphinWX/MemcardManager.cpp index f0a9a5f..af423b6 100644 --- a/Source/Core/DolphinWX/MemcardManager.cpp +++ b/Source/Core/DolphinWX/MemcardManager.cpp @@ -54,7 +54,7 @@ const u8 hdr[] = { 0x00,0x00,0x00,0x00 }; -wxBitmap wxBitmapFromMemoryRGBA(const unsigned char* data, u32 width, u32 height) +static wxBitmap wxBitmapFromMemoryRGBA(const unsigned char* data, u32 width, u32 height) { u32 stride = (4*width); diff --git a/Source/Core/DolphinWX/NetWindow.cpp b/Source/Core/DolphinWX/NetWindow.cpp index 4860d0b..a3d685b 100644 --- a/Source/Core/DolphinWX/NetWindow.cpp +++ b/Source/Core/DolphinWX/NetWindow.cpp @@ -42,6 +42,7 @@ #include "DolphinWX/Frame.h" #include "DolphinWX/GameListCtrl.h" #include "DolphinWX/ISOFile.h" +#include "DolphinWX/Main.h" #include "DolphinWX/NetWindow.h" #include "DolphinWX/WxUtils.h" @@ -56,10 +57,9 @@ END_EVENT_TABLE() static NetPlayServer* netplay_server = nullptr; static NetPlayClient* netplay_client = nullptr; -extern CFrame* main_frame; NetPlayDiag *NetPlayDiag::npd = nullptr; -std::string BuildGameName(const GameListItem& game) +static std::string BuildGameName(const GameListItem& game) { // Lang needs to be consistent auto const lang = 0; @@ -74,7 +74,7 @@ std::string BuildGameName(const GameListItem& game) return name + " (" + game.GetUniqueID() + ")"; } -void FillWithGameNames(wxListBox* game_lbox, const CGameListCtrl& game_list) +static void FillWithGameNames(wxListBox* game_lbox, const CGameListCtrl& game_list) { for (u32 i = 0 ; auto game = game_list.GetISO(i); ++i) game_lbox->Append(StrToWxStr(BuildGameName(*game))); @@ -428,14 +428,15 @@ NetPlayDiag::~NetPlayDiag() void NetPlayDiag::OnChat(wxCommandEvent&) { - wxString s = m_chat_msg_text->GetValue(); + wxString text = m_chat_msg_text->GetValue(); - if (s.Length()) + if (!text.empty()) { - if (s.Length() > 2000) - s.erase(2000); - netplay_client->SendChatMessage(WxStrToStr(s)); - m_chat_text->AppendText(s.Prepend(" >> ").Append('\n')); + if (text.length() > 2000) + text.erase(2000); + + netplay_client->SendChatMessage(WxStrToStr(text)); + m_chat_text->AppendText(text.Prepend(" >> ").Append('\n')); m_chat_msg_text->Clear(); } } @@ -557,11 +558,11 @@ void NetPlayDiag::OnThread(wxCommandEvent& event) // remove ping from selection string, in case it has changed selection.erase(selection.find_last_of("|") + 1); - if (selection.Length() > 0) + if (!selection.empty()) { for (unsigned int i = 0; i < m_player_lbox->GetCount(); ++i) { - if (selection == m_player_lbox->GetString(i).Mid(0, selection.Length())) + if (selection == m_player_lbox->GetString(i).Mid(0, selection.length())) { m_player_lbox->SetSelection(i); break; diff --git a/Source/Core/DolphinWX/PHackSettings.cpp b/Source/Core/DolphinWX/PHackSettings.cpp index af20038..f5267d1 100644 --- a/Source/Core/DolphinWX/PHackSettings.cpp +++ b/Source/Core/DolphinWX/PHackSettings.cpp @@ -26,8 +26,6 @@ class wxWindow; -extern PHackData PHack_Data; - BEGIN_EVENT_TABLE(CPHackSettings, wxDialog) EVT_CHOICE(ID_PHACK_CHOICE, CPHackSettings::SetRefresh) EVT_BUTTON(wxID_OK, CPHackSettings::SavePHackData) diff --git a/Source/Core/DolphinWX/PatchAddEdit.cpp b/Source/Core/DolphinWX/PatchAddEdit.cpp index 2dd3454..30242b6 100644 --- a/Source/Core/DolphinWX/PatchAddEdit.cpp +++ b/Source/Core/DolphinWX/PatchAddEdit.cpp @@ -29,8 +29,6 @@ class wxWindow; -extern std::vector onFrame; - BEGIN_EVENT_TABLE(CPatchAddEdit, wxDialog) EVT_BUTTON(wxID_OK, CPatchAddEdit::SavePatchData) EVT_BUTTON(ID_ENTRY_ADD, CPatchAddEdit::AddRemoveEntry) diff --git a/Source/Core/DolphinWX/TASInputDlg.cpp b/Source/Core/DolphinWX/TASInputDlg.cpp index 1d5fb83..e7ace99 100644 --- a/Source/Core/DolphinWX/TASInputDlg.cpp +++ b/Source/Core/DolphinWX/TASInputDlg.cpp @@ -242,9 +242,9 @@ void TASInputDlg::ResetValues() wx_start_button->SetValue(false); } -void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus) +void TASInputDlg::GetKeyBoardInput(GCPadStatus* PadStatus) { - if (PadStatus->stickX != 128) + if (PadStatus->stickX != GCPadStatus::MAIN_STICK_CENTER_X) { mainX = PadStatus->stickX; mstickx = true; @@ -254,11 +254,11 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus) else if (mstickx) { mstickx = false; - mainX = 128; + mainX = GCPadStatus::MAIN_STICK_CENTER_X; wx_mainX_t->SetValue(wxString::Format("%i", mainX)); } - if (PadStatus->stickY != 128) + if (PadStatus->stickY != GCPadStatus::MAIN_STICK_CENTER_Y) { mainY = PadStatus->stickY; msticky = true; @@ -267,11 +267,11 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus) else if (msticky) { msticky = false; - mainY = 128; + mainY = GCPadStatus::MAIN_STICK_CENTER_Y; wx_mainY_t->SetValue(wxString::Format("%i", mainY)); } - if (PadStatus->substickX != 128) + if (PadStatus->substickX != GCPadStatus::C_STICK_CENTER_X) { cX = PadStatus->substickX; cstickx = true; @@ -280,11 +280,11 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus) else if (cstickx) { cstickx = false; - cX = 128; + cX = GCPadStatus::C_STICK_CENTER_X; wx_cX_t->SetValue(wxString::Format("%i", cX)); } - if (PadStatus->substickY != 128) + if (PadStatus->substickY != GCPadStatus::C_STICK_CENTER_Y) { cY = PadStatus->substickY; csticky = true; @@ -293,7 +293,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus) else if (csticky) { csticky = false; - cY = 128; + cY = GCPadStatus::C_STICK_CENTER_Y; wx_cY_t->SetValue(wxString::Format("%i", cY)); } @@ -471,7 +471,7 @@ void TASInputDlg::SetLandRTriggers() rTrig = wx_r_s->GetValue(); } -void TASInputDlg::GetValues(SPADStatus *PadStatus, int controllerID) +void TASInputDlg::GetValues(GCPadStatus* PadStatus, int controllerID) { if (!IsShown()) return; @@ -806,8 +806,7 @@ void TASInputDlg::OnMouseUpR(wxMouseEvent& event) sliderX->SetValue(*x); sliderY->SetValue(256 - *y); - event.Skip(true); - + event.Skip(); } void TASInputDlg::OnMouseDownL(wxMouseEvent& event) @@ -863,7 +862,7 @@ void TASInputDlg::OnMouseDownL(wxMouseEvent& event) sliderX->SetValue(*x); sliderY->SetValue(256 - *y); - event.Skip(true); + event.Skip(); } void TASInputDlg::SetTurboFalse(wxMouseEvent& event) @@ -922,7 +921,7 @@ void TASInputDlg::SetTurboFalse(wxMouseEvent& event) return; } - event.Skip(true); + event.Skip(); } void TASInputDlg::SetTurbo(wxMouseEvent& event) diff --git a/Source/Core/DolphinWX/TASInputDlg.h b/Source/Core/DolphinWX/TASInputDlg.h index d06c3ec..5ac3b29 100644 --- a/Source/Core/DolphinWX/TASInputDlg.h +++ b/Source/Core/DolphinWX/TASInputDlg.h @@ -39,11 +39,11 @@ class TASInputDlg : public wxDialog void OnMouseDownL(wxMouseEvent& event); void OnMouseUpR(wxMouseEvent& event); void ResetValues(); - void GetValues(SPADStatus *PadStatus, int controllerID); + void GetValues(GCPadStatus* PadStatus, int controllerID); void SetTurbo(wxMouseEvent& event); void SetTurboFalse(wxMouseEvent& event); void ButtonTurbo(); - void GetKeyBoardInput(SPADStatus *PadStatus); + void GetKeyBoardInput(GCPadStatus* PadStatus); bool TextBoxHasFocus(); void SetLandRTriggers(); bool TASHasFocus(); diff --git a/Source/Core/DolphinWX/UDPConfigDiag.cpp b/Source/Core/DolphinWX/UDPConfigDiag.cpp deleted file mode 100644 index d1ed2da..0000000 --- a/Source/Core/DolphinWX/UDPConfigDiag.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "DolphinWX/UDPConfigDiag.h" -#include "DolphinWX/WxUtils.h" -#include "InputCommon/UDPWrapper.h" - -class wxWindow; - -UDPConfigDiag::UDPConfigDiag(wxWindow * const parent, UDPWrapper * _wrp) : - wxDialog(parent, -1, _("UDP Wiimote")), - wrp(_wrp) -{ - wxBoxSizer *const outer_sizer = new wxBoxSizer(wxVERTICAL); - wxBoxSizer *const sizer1 = new wxBoxSizer(wxVERTICAL); - wxStaticBoxSizer *const sizer2 = new wxStaticBoxSizer(wxVERTICAL, this, _("Update")); - - outer_sizer->Add(sizer1, 0, wxTOP | wxLEFT | wxRIGHT | wxEXPAND, 5); - outer_sizer->Add(sizer2, 1, wxLEFT | wxRIGHT | wxEXPAND, 10); - - enable = new wxCheckBox(this, wxID_ANY, _("Enable")); - butt = new wxCheckBox(this, wxID_ANY, _("Buttons")); - accel = new wxCheckBox(this, wxID_ANY, _("Acceleration")); - point = new wxCheckBox(this, wxID_ANY, _("IR Pointer")); - nun = new wxCheckBox(this, wxID_ANY, _("Nunchuk")); - nunaccel = new wxCheckBox(this, wxID_ANY, _("Nunchuk Acceleration")); - - wxBoxSizer *const port_sizer = new wxBoxSizer(wxHORIZONTAL); - port_sizer->Add(new wxStaticText(this, wxID_ANY, _("UDP Port:")), 0, wxALIGN_CENTER); - port_tbox = new wxTextCtrl(this, wxID_ANY, StrToWxStr(wrp->port)); - port_sizer->Add(port_tbox, 1, wxLEFT | wxEXPAND, 5); - - enable->Bind(wxEVT_CHECKBOX, &UDPConfigDiag::ChangeState, this); - butt->Bind(wxEVT_CHECKBOX, &UDPConfigDiag::ChangeUpdateFlags, this); - accel->Bind(wxEVT_CHECKBOX, &UDPConfigDiag::ChangeUpdateFlags, this); - point->Bind(wxEVT_CHECKBOX, &UDPConfigDiag::ChangeUpdateFlags, this); - nun->Bind(wxEVT_CHECKBOX, &UDPConfigDiag::ChangeUpdateFlags, this); - nunaccel->Bind(wxEVT_CHECKBOX, &UDPConfigDiag::ChangeUpdateFlags, this); - port_tbox->Bind(wxEVT_TEXT, &UDPConfigDiag::ChangeState, this); - - enable->SetValue(wrp->udpEn); - butt->SetValue(wrp->updButt); - accel->SetValue(wrp->updAccel); - point->SetValue(wrp->updIR); - nun->SetValue(wrp->updNun); - nunaccel->SetValue(wrp->updNunAccel); - - sizer1->Add(enable, 1, wxALL | wxEXPAND, 5); - sizer1->Add(port_sizer, 1, wxBOTTOM | wxLEFT| wxRIGHT | wxEXPAND, 5); - - sizer2->Add(butt, 1, wxALL | wxEXPAND, 5); - sizer2->Add(accel, 1, wxALL | wxEXPAND, 5); - sizer2->Add(point, 1, wxALL | wxEXPAND, 5); - sizer2->Add(nun, 1, wxALL | wxEXPAND, 5); - sizer2->Add(nunaccel, 1, wxALL | wxEXPAND, 5); - - outer_sizer->Add(CreateButtonSizer(wxOK), 0, wxALL | wxALIGN_RIGHT, 5); - - SetSizerAndFit(outer_sizer); - Center(); - SetFocus(); -} - -void UDPConfigDiag::ChangeUpdateFlags(wxCommandEvent & WXUNUSED(event)) -{ - wrp->updAccel=accel->GetValue(); - wrp->updButt=butt->GetValue(); - wrp->updIR=point->GetValue(); - wrp->updNun=nun->GetValue(); - wrp->updNunAccel=nunaccel->GetValue(); -} - -void UDPConfigDiag::ChangeState(wxCommandEvent & WXUNUSED(event)) -{ - wrp->udpEn = enable->GetValue(); - wrp->port = WxStrToStr(port_tbox->GetValue()); - wrp->Refresh(); -} diff --git a/Source/Core/DolphinWX/UDPConfigDiag.h b/Source/Core/DolphinWX/UDPConfigDiag.h deleted file mode 100644 index 5638599..0000000 --- a/Source/Core/DolphinWX/UDPConfigDiag.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include - -class UDPWrapper; -class wxCheckBox; -class wxCommandEvent; -class wxTextCtrl; -class wxWindow; - -class UDPConfigDiag : public wxDialog -{ -public: - UDPConfigDiag(wxWindow * const parent, UDPWrapper * _wrp); -private: - UDPWrapper * wrp; - void ChangeUpdateFlags(wxCommandEvent & event); - void ChangeState(wxCommandEvent & event); - void OKPressed(wxCommandEvent & event); - wxCheckBox * enable; - wxCheckBox * butt; - wxCheckBox * accel; - wxCheckBox * point; - wxCheckBox * nun; - wxCheckBox * nunaccel; - wxTextCtrl * port_tbox; -}; diff --git a/Source/Core/DolphinWX/VideoConfigDiag.cpp b/Source/Core/DolphinWX/VideoConfigDiag.cpp index 26d8b6c..00fab2b 100644 --- a/Source/Core/DolphinWX/VideoConfigDiag.cpp +++ b/Source/Core/DolphinWX/VideoConfigDiag.cpp @@ -28,6 +28,7 @@ #include "Core/Core.h" #include "Core/CoreParameter.h" #include "DolphinWX/Frame.h" +#include "DolphinWX/Main.h" #include "DolphinWX/VideoConfigDiag.h" #include "DolphinWX/WxUtils.h" #include "VideoCommon/VideoBackendBase.h" @@ -37,8 +38,6 @@ #include #endif -extern CFrame* main_frame; - // template instantiation template class BoolSetting; template class BoolSetting; @@ -93,64 +92,64 @@ void VideoConfigDiag::Event_Close(wxCloseEvent& ev) } #if defined(_WIN32) -wxString backend_desc = wxTRANSLATE("Selects what graphics API to use internally.\nThe software renderer is only used for debugging, so you'll want to use either Direct3D or OpenGL. Different games will behave differently on each backend, so for best emulation experience it's recommended to try both and chose the one that fits your requirements best.\nNote that the Direct3D backend is not available on old Windows versions.\n\nIf unsure, use OpenGL."); +static wxString backend_desc = wxTRANSLATE("Selects what graphics API to use internally.\nThe software renderer is only used for debugging, so you'll want to use either Direct3D or OpenGL. Different games will behave differently on each backend, so for best emulation experience it's recommended to try both and chose the one that fits your requirements best.\nNote that the Direct3D backend is not available on old Windows versions.\n\nIf unsure, use OpenGL."); #else -wxString backend_desc = wxTRANSLATE("Selects what graphics API to use internally.\nThe software renderer is only used for debugging, so unless you have a reason to use it you'll want to select OpenGL here.\n\nIf unsure, use OpenGL."); +static wxString backend_desc = wxTRANSLATE("Selects what graphics API to use internally.\nThe software renderer is only used for debugging, so unless you have a reason to use it you'll want to select OpenGL here.\n\nIf unsure, use OpenGL."); #endif -wxString adapter_desc = wxTRANSLATE("Select a hardware adapter to use.\n\nIf unsure, use the first one."); -wxString display_res_desc = wxTRANSLATE("Selects the display resolution used in fullscreen mode.\nThis should always be bigger than or equal to the internal resolution. Performance impact is negligible.\n\nIf unsure, use your desktop resolution.\nIf still unsure, use the highest resolution which works for you."); -wxString use_fullscreen_desc = wxTRANSLATE("Enable this if you want the whole screen to be used for rendering.\nIf this is disabled, a render window will be created instead.\n\nIf unsure, leave this unchecked."); -wxString auto_window_size_desc = wxTRANSLATE("Automatically adjusts the window size to your internal resolution.\n\nIf unsure, leave this unchecked."); -wxString keep_window_on_top_desc = wxTRANSLATE("Keep the game window on top of all other windows.\n\nIf unsure, leave this unchecked."); -wxString hide_mouse_cursor_desc = wxTRANSLATE("Hides the mouse cursor if it's on top of the emulation window.\n\nIf unsure, leave this checked."); -wxString render_to_main_win_desc = wxTRANSLATE("Enable this if you want to use the main Dolphin window for rendering rather than a separate render window.\n\nIf unsure, leave this unchecked."); -wxString prog_scan_desc = wxTRANSLATE("Enables progressive scan if supported by the emulated software.\nMost games don't care about this.\n\nIf unsure, leave this unchecked."); -wxString ar_desc = wxTRANSLATE("Select what aspect ratio to use when rendering:\nAuto: Use the native aspect ratio\nForce 16:9: Stretch the picture to an aspect ratio of 16:9.\nForce 4:3: Stretch the picture to an aspect ratio of 4:3.\nStretch to Window: Stretch the picture to the window size.\n\nIf unsure, select Auto."); -wxString ws_hack_desc = wxTRANSLATE("Force the game to output graphics for widescreen resolutions.\nCauses graphical glitches is some games.\n\nIf unsure, leave this unchecked."); -wxString vsync_desc = wxTRANSLATE("Wait for vertical blanks in order to reduce tearing.\nDecreases performance if emulation speed is below 100%.\n\nIf unsure, leave this unchecked."); -wxString af_desc = wxTRANSLATE("Enable anisotropic filtering.\nEnhances visual quality of textures that are at oblique viewing angles.\nMight cause issues in a small number of games.\n\nIf unsure, select 1x."); -wxString aa_desc = wxTRANSLATE("Reduces the amount of aliasing caused by rasterizing 3D graphics.\nThis makes the rendered picture look less blocky.\nHeavily decreases emulation speed and sometimes causes issues.\n\nIf unsure, select None."); -wxString scaled_efb_copy_desc = wxTRANSLATE("Greatly increases quality of textures generated using render to texture effects.\nRaising the internal resolution will improve the effect of this setting.\nSlightly decreases performance and possibly causes issues (although unlikely).\n\nIf unsure, leave this checked."); -wxString pixel_lighting_desc = wxTRANSLATE("Calculate lighting of 3D graphics per-pixel rather than per vertex.\nDecreases emulation speed by some percent (depending on your GPU).\nThis usually is a safe enhancement, but might cause issues sometimes.\n\nIf unsure, leave this unchecked."); -wxString fast_depth_calc_desc = wxTRANSLATE("Use a less accurate algorithm to calculate depth values.\nCauses issues in a few games but might give a decent speedup.\n\nIf unsure, leave this checked."); -wxString force_filtering_desc = wxTRANSLATE("Force texture filtering even if the emulated game explicitly disabled it.\nImproves texture quality slightly but causes glitches in some games.\n\nIf unsure, leave this unchecked."); -wxString _3d_vision_desc = wxTRANSLATE("Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's supported by your GPU.\nPossibly causes issues.\nRequires fullscreen to work.\n\nIf unsure, leave this unchecked."); -wxString internal_res_desc = wxTRANSLATE("Specifies the resolution used to render at. A high resolution will improve visual quality a lot but is also quite heavy on performance and might cause glitches in certain games.\n\"Multiple of 640x528\" is a bit slower than \"Window Size\" but yields less issues. Generally speaking, the lower the internal resolution is, the better your performance will be.\n\nIf unsure, select 640x528."); -wxString efb_access_desc = wxTRANSLATE("Ignore any requests of the CPU to read from or write to the EFB.\nImproves performance in some games, but might disable some gameplay-related features or graphical effects.\n\nIf unsure, leave this unchecked."); -wxString efb_emulate_format_changes_desc = wxTRANSLATE("Ignore any changes to the EFB format.\nImproves performance in many games without any negative effect. Causes graphical defects in a small number of other games though.\n\nIf unsure, leave this checked."); -wxString efb_copy_desc = wxTRANSLATE("Disable emulation of EFB copies.\nThese are often used for post-processing or render-to-texture effects, so while checking this setting gives a great speedup it almost always also causes issues.\n\nIf unsure, leave this unchecked."); -wxString efb_copy_texture_desc = wxTRANSLATE("Store EFB copies in GPU texture objects.\nThis is not so accurate, but it works well enough for most games and gives a great speedup over EFB to RAM.\n\nIf unsure, leave this checked."); -wxString efb_copy_ram_desc = wxTRANSLATE("Accurately emulate EFB copies.\nSome games depend on this for certain graphical effects or gameplay functionality.\n\nIf unsure, check EFB to Texture instead."); -wxString stc_desc = wxTRANSLATE("The safer you adjust this, the less likely the emulator will be missing any texture updates from RAM.\n\nIf unsure, use the rightmost value."); -wxString wireframe_desc = wxTRANSLATE("Render the scene as a wireframe.\n\nIf unsure, leave this unchecked."); -wxString disable_fog_desc = wxTRANSLATE("Makes distant objects more visible by removing fog, thus increasing the overall detail.\nDisabling fog will break some games which rely on proper fog emulation.\n\nIf unsure, leave this unchecked."); -wxString disable_dstalpha_desc = wxTRANSLATE("Disables emulation of a hardware feature called destination alpha, which is used in many games for various graphical effects.\n\nIf unsure, leave this unchecked."); -wxString show_fps_desc = wxTRANSLATE("Show the number of frames rendered per second as a measure of emulation speed.\n\nIf unsure, leave this unchecked."); -wxString log_fps_to_file_desc = wxTRANSLATE("Log the number of frames rendered per second to User/Logs/fps.txt. Use this feature when you want to measure the performance of Dolphin.\n\nIf unsure, leave this unchecked."); -wxString show_input_display_desc = wxTRANSLATE("Display the inputs read by the emulator.\n\nIf unsure, leave this unchecked."); -wxString show_stats_desc = wxTRANSLATE("Show various statistics.\n\nIf unsure, leave this unchecked."); -wxString texfmt_desc = wxTRANSLATE("Modify textures to show the format they're encoded in. Needs an emulation reset in most cases.\n\nIf unsure, leave this unchecked."); -wxString efb_copy_regions_desc = wxTRANSLATE("[BROKEN]\nHighlight regions the EFB was copied from.\n\nIf unsure, leave this unchecked."); -wxString xfb_desc = wxTRANSLATE("Disable any XFB emulation.\nSpeeds up emulation a lot but causes heavy glitches in many games which rely on them (especially homebrew applications).\n\nIf unsure, leave this checked."); -wxString xfb_virtual_desc = wxTRANSLATE("Emulate XFBs using GPU texture objects.\nFixes many games which don't work without XFB emulation while not being as slow as real XFB emulation. However, it may still fail for a lot of other games (especially homebrew applications).\n\nIf unsure, leave this checked."); -wxString xfb_real_desc = wxTRANSLATE("Emulate XFBs accurately.\nSlows down emulation a lot and prohibits high-resolution rendering but is necessary to emulate a number of games properly.\n\nIf unsure, check virtual XFB emulation instead."); -wxString dump_textures_desc = wxTRANSLATE("Dump decoded game textures to User/Dump/Textures//\n\nIf unsure, leave this unchecked."); -wxString load_hires_textures_desc = wxTRANSLATE("Load custom textures from User/Load/Textures//\n\nIf unsure, leave this unchecked."); -wxString dump_efb_desc = wxTRANSLATE("Dump the contents of EFB copies to User/Dump/Textures/\n\nIf unsure, leave this unchecked."); -wxString dump_frames_desc = wxTRANSLATE("Dump all rendered frames to an AVI file in User/Dump/Frames/\n\nIf unsure, leave this unchecked."); +static wxString adapter_desc = wxTRANSLATE("Select a hardware adapter to use.\n\nIf unsure, use the first one."); +static wxString display_res_desc = wxTRANSLATE("Selects the display resolution used in fullscreen mode.\nThis should always be bigger than or equal to the internal resolution. Performance impact is negligible.\n\nIf unsure, use your desktop resolution.\nIf still unsure, use the highest resolution which works for you."); +static wxString use_fullscreen_desc = wxTRANSLATE("Enable this if you want the whole screen to be used for rendering.\nIf this is disabled, a render window will be created instead.\n\nIf unsure, leave this unchecked."); +static wxString auto_window_size_desc = wxTRANSLATE("Automatically adjusts the window size to your internal resolution.\n\nIf unsure, leave this unchecked."); +static wxString keep_window_on_top_desc = wxTRANSLATE("Keep the game window on top of all other windows.\n\nIf unsure, leave this unchecked."); +static wxString hide_mouse_cursor_desc = wxTRANSLATE("Hides the mouse cursor if it's on top of the emulation window.\n\nIf unsure, leave this checked."); +static wxString render_to_main_win_desc = wxTRANSLATE("Enable this if you want to use the main Dolphin window for rendering rather than a separate render window.\n\nIf unsure, leave this unchecked."); +static wxString prog_scan_desc = wxTRANSLATE("Enables progressive scan if supported by the emulated software.\nMost games don't care about this.\n\nIf unsure, leave this unchecked."); +static wxString ar_desc = wxTRANSLATE("Select what aspect ratio to use when rendering:\nAuto: Use the native aspect ratio\nForce 16:9: Stretch the picture to an aspect ratio of 16:9.\nForce 4:3: Stretch the picture to an aspect ratio of 4:3.\nStretch to Window: Stretch the picture to the window size.\n\nIf unsure, select Auto."); +static wxString ws_hack_desc = wxTRANSLATE("Force the game to output graphics for widescreen resolutions.\nCauses graphical glitches is some games.\n\nIf unsure, leave this unchecked."); +static wxString vsync_desc = wxTRANSLATE("Wait for vertical blanks in order to reduce tearing.\nDecreases performance if emulation speed is below 100%.\n\nIf unsure, leave this unchecked."); +static wxString af_desc = wxTRANSLATE("Enable anisotropic filtering.\nEnhances visual quality of textures that are at oblique viewing angles.\nMight cause issues in a small number of games.\n\nIf unsure, select 1x."); +static wxString aa_desc = wxTRANSLATE("Reduces the amount of aliasing caused by rasterizing 3D graphics.\nThis makes the rendered picture look less blocky.\nHeavily decreases emulation speed and sometimes causes issues.\n\nIf unsure, select None."); +static wxString scaled_efb_copy_desc = wxTRANSLATE("Greatly increases quality of textures generated using render to texture effects.\nRaising the internal resolution will improve the effect of this setting.\nSlightly decreases performance and possibly causes issues (although unlikely).\n\nIf unsure, leave this checked."); +static wxString pixel_lighting_desc = wxTRANSLATE("Calculate lighting of 3D graphics per-pixel rather than per vertex.\nDecreases emulation speed by some percent (depending on your GPU).\nThis usually is a safe enhancement, but might cause issues sometimes.\n\nIf unsure, leave this unchecked."); +static wxString fast_depth_calc_desc = wxTRANSLATE("Use a less accurate algorithm to calculate depth values.\nCauses issues in a few games but might give a decent speedup.\n\nIf unsure, leave this checked."); +static wxString force_filtering_desc = wxTRANSLATE("Force texture filtering even if the emulated game explicitly disabled it.\nImproves texture quality slightly but causes glitches in some games.\n\nIf unsure, leave this unchecked."); +static wxString _3d_vision_desc = wxTRANSLATE("Enable 3D effects via stereoscopy using Nvidia 3D Vision technology if it's supported by your GPU.\nPossibly causes issues.\nRequires fullscreen to work.\n\nIf unsure, leave this unchecked."); +static wxString internal_res_desc = wxTRANSLATE("Specifies the resolution used to render at. A high resolution will improve visual quality a lot but is also quite heavy on performance and might cause glitches in certain games.\n\"Multiple of 640x528\" is a bit slower than \"Window Size\" but yields less issues. Generally speaking, the lower the internal resolution is, the better your performance will be.\n\nIf unsure, select 640x528."); +static wxString efb_access_desc = wxTRANSLATE("Ignore any requests of the CPU to read from or write to the EFB.\nImproves performance in some games, but might disable some gameplay-related features or graphical effects.\n\nIf unsure, leave this unchecked."); +static wxString efb_emulate_format_changes_desc = wxTRANSLATE("Ignore any changes to the EFB format.\nImproves performance in many games without any negative effect. Causes graphical defects in a small number of other games though.\n\nIf unsure, leave this checked."); +static wxString efb_copy_desc = wxTRANSLATE("Disable emulation of EFB copies.\nThese are often used for post-processing or render-to-texture effects, so while checking this setting gives a great speedup it almost always also causes issues.\n\nIf unsure, leave this unchecked."); +static wxString efb_copy_texture_desc = wxTRANSLATE("Store EFB copies in GPU texture objects.\nThis is not so accurate, but it works well enough for most games and gives a great speedup over EFB to RAM.\n\nIf unsure, leave this checked."); +static wxString efb_copy_ram_desc = wxTRANSLATE("Accurately emulate EFB copies.\nSome games depend on this for certain graphical effects or gameplay functionality.\n\nIf unsure, check EFB to Texture instead."); +static wxString stc_desc = wxTRANSLATE("The safer you adjust this, the less likely the emulator will be missing any texture updates from RAM.\n\nIf unsure, use the rightmost value."); +static wxString wireframe_desc = wxTRANSLATE("Render the scene as a wireframe.\n\nIf unsure, leave this unchecked."); +static wxString disable_fog_desc = wxTRANSLATE("Makes distant objects more visible by removing fog, thus increasing the overall detail.\nDisabling fog will break some games which rely on proper fog emulation.\n\nIf unsure, leave this unchecked."); +static wxString disable_dstalpha_desc = wxTRANSLATE("Disables emulation of a hardware feature called destination alpha, which is used in many games for various graphical effects.\n\nIf unsure, leave this unchecked."); +static wxString show_fps_desc = wxTRANSLATE("Show the number of frames rendered per second as a measure of emulation speed.\n\nIf unsure, leave this unchecked."); +static wxString log_render_time_to_file_desc = wxTRANSLATE("Log the render time of every frame to User/Logs/render_time.txt. Use this feature when you want to measure the performance of Dolphin.\n\nIf unsure, leave this unchecked."); +static wxString show_input_display_desc = wxTRANSLATE("Display the inputs read by the emulator.\n\nIf unsure, leave this unchecked."); +static wxString show_stats_desc = wxTRANSLATE("Show various statistics.\n\nIf unsure, leave this unchecked."); +static wxString texfmt_desc = wxTRANSLATE("Modify textures to show the format they're encoded in. Needs an emulation reset in most cases.\n\nIf unsure, leave this unchecked."); +static wxString efb_copy_regions_desc = wxTRANSLATE("[BROKEN]\nHighlight regions the EFB was copied from.\n\nIf unsure, leave this unchecked."); +static wxString xfb_desc = wxTRANSLATE("Disable any XFB emulation.\nSpeeds up emulation a lot but causes heavy glitches in many games which rely on them (especially homebrew applications).\n\nIf unsure, leave this checked."); +static wxString xfb_virtual_desc = wxTRANSLATE("Emulate XFBs using GPU texture objects.\nFixes many games which don't work without XFB emulation while not being as slow as real XFB emulation. However, it may still fail for a lot of other games (especially homebrew applications).\n\nIf unsure, leave this checked."); +static wxString xfb_real_desc = wxTRANSLATE("Emulate XFBs accurately.\nSlows down emulation a lot and prohibits high-resolution rendering but is necessary to emulate a number of games properly.\n\nIf unsure, check virtual XFB emulation instead."); +static wxString dump_textures_desc = wxTRANSLATE("Dump decoded game textures to User/Dump/Textures//\n\nIf unsure, leave this unchecked."); +static wxString load_hires_textures_desc = wxTRANSLATE("Load custom textures from User/Load/Textures//\n\nIf unsure, leave this unchecked."); +static wxString dump_efb_desc = wxTRANSLATE("Dump the contents of EFB copies to User/Dump/Textures/\n\nIf unsure, leave this unchecked."); +static wxString dump_frames_desc = wxTRANSLATE("Dump all rendered frames to an AVI file in User/Dump/Frames/\n\nIf unsure, leave this unchecked."); #if !defined WIN32 && defined HAVE_LIBAV -wxString use_ffv1_desc = wxTRANSLATE("Encode frame dumps using the FFV1 codec.\n\nIf unsure, leave this unchecked."); +static wxString use_ffv1_desc = wxTRANSLATE("Encode frame dumps using the FFV1 codec.\n\nIf unsure, leave this unchecked."); #endif -wxString free_look_desc = wxTRANSLATE("This feature allows you to change the game's camera.\nMove the mouse while holding the right mouse button to pan and while holding the middle button to move.\nHold SHIFT and press one of the WASD keys to move the camera by a certain step distance (SHIFT+0 to move faster and SHIFT+9 to move slower). Press SHIFT+R to reset the camera.\n\nIf unsure, leave this unchecked."); -wxString crop_desc = wxTRANSLATE("Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n\nIf unsure, leave this unchecked."); -wxString omp_desc = wxTRANSLATE("Use multiple threads to decode textures.\nMight result in a speedup (especially on CPUs with more than two cores).\n\nIf unsure, leave this unchecked."); -wxString ppshader_desc = wxTRANSLATE("Apply a post-processing effect after finishing a frame.\n\nIf unsure, select (off)."); -wxString cache_efb_copies_desc = wxTRANSLATE("Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\nSometimes also increases visual quality.\nIf you're experiencing any issues, try raising texture cache accuracy or disable this option.\n\nIf unsure, leave this unchecked."); -wxString shader_errors_desc = wxTRANSLATE("Usually if shader compilation fails, an error message is displayed.\nHowever, one may skip the popups to allow interruption free gameplay by checking this option.\n\nIf unsure, leave this unchecked."); +static wxString free_look_desc = wxTRANSLATE("This feature allows you to change the game's camera.\nMove the mouse while holding the right mouse button to pan and while holding the middle button to move.\nHold SHIFT and press one of the WASD keys to move the camera by a certain step distance (SHIFT+0 to move faster and SHIFT+9 to move slower). Press SHIFT+R to reset the camera.\n\nIf unsure, leave this unchecked."); +static wxString crop_desc = wxTRANSLATE("Crop the picture from 4:3 to 5:4 or from 16:9 to 16:10.\n\nIf unsure, leave this unchecked."); +static wxString omp_desc = wxTRANSLATE("Use multiple threads to decode textures.\nMight result in a speedup (especially on CPUs with more than two cores).\n\nIf unsure, leave this unchecked."); +static wxString ppshader_desc = wxTRANSLATE("Apply a post-processing effect after finishing a frame.\n\nIf unsure, select (off)."); +static wxString cache_efb_copies_desc = wxTRANSLATE("Slightly speeds up EFB to RAM copies by sacrificing emulation accuracy.\nSometimes also increases visual quality.\nIf you're experiencing any issues, try raising texture cache accuracy or disable this option.\n\nIf unsure, leave this unchecked."); +static wxString shader_errors_desc = wxTRANSLATE("Usually if shader compilation fails, an error message is displayed.\nHowever, one may skip the popups to allow interruption free gameplay by checking this option.\n\nIf unsure, leave this unchecked."); // Search for available resolutions - TODO: Move to Common? -wxArrayString GetListOfResolutions() +static wxArrayString GetListOfResolutions() { wxArrayString retlist; retlist.Add("Auto"); @@ -246,7 +245,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con szr_basic->Add(label_backend, 1, wxALIGN_CENTER_VERTICAL, 5); szr_basic->Add(choice_backend, 1, 0, 0); - if (Core::GetState() != Core::CORE_UNINITIALIZED) + if (Core::IsRunning()) { label_backend->Disable(); choice_backend->Disable(); @@ -281,7 +280,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con wxArrayString res_list = GetListOfResolutions(); if (res_list.empty()) res_list.Add(_("")); - wxStaticText* const label_display_resolution = new wxStaticText(page_general, wxID_ANY, _("Fullscreen resolution:")); + wxStaticText* const label_display_resolution = new wxStaticText(page_general, wxID_ANY, _("Fullscreen Resolution:")); choice_display_resolution = new wxChoice(page_general, wxID_ANY, wxDefaultPosition, wxDefaultSize, res_list); RegisterControl(choice_display_resolution, wxGetTranslation(display_res_desc)); choice_display_resolution->Bind(wxEVT_CHOICE, &VideoConfigDiag::Event_DisplayResolution, this); @@ -291,7 +290,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con szr_display->Add(label_display_resolution, 1, wxALIGN_CENTER_VERTICAL, 0); szr_display->Add(choice_display_resolution); - if (Core::GetState() != Core::CORE_UNINITIALIZED) + if (Core::IsRunning()) { label_display_resolution->Disable(); choice_display_resolution->Disable(); @@ -322,15 +321,14 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con { SettingCheckBox* render_to_main_cb; szr_other->Add(CreateCheckBox(page_general, _("Show FPS"), wxGetTranslation(show_fps_desc), vconfig.bShowFPS)); - szr_other->Add(CreateCheckBox(page_general, _("Log FPS to file"), wxGetTranslation(log_fps_to_file_desc), vconfig.bLogFPSToFile)); + szr_other->Add(CreateCheckBox(page_general, _("Log Render Time to File"), wxGetTranslation(log_render_time_to_file_desc), vconfig.bLogRenderTimeToFile)); szr_other->Add(CreateCheckBox(page_general, _("Auto adjust Window Size"), wxGetTranslation(auto_window_size_desc), SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderWindowAutoSize)); - szr_other->Add(CreateCheckBox(page_general, _("Keep window on top"), wxGetTranslation(keep_window_on_top_desc), SConfig::GetInstance().m_LocalCoreStartupParameter.bKeepWindowOnTop)); + szr_other->Add(CreateCheckBox(page_general, _("Keep Window on Top"), wxGetTranslation(keep_window_on_top_desc), SConfig::GetInstance().m_LocalCoreStartupParameter.bKeepWindowOnTop)); szr_other->Add(CreateCheckBox(page_general, _("Hide Mouse Cursor"), wxGetTranslation(hide_mouse_cursor_desc), SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor)); szr_other->Add(render_to_main_cb = CreateCheckBox(page_general, _("Render to Main Window"), wxGetTranslation(render_to_main_win_desc), SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain)); - if (Core::GetState() != Core::CORE_UNINITIALIZED) + if (Core::IsRunning()) render_to_main_cb->Disable(); - } @@ -576,7 +574,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con wxCheckBox* const cb_prog_scan = new wxCheckBox(page_advanced, wxID_ANY, _("Enable Progressive Scan")); RegisterControl(cb_prog_scan, wxGetTranslation(prog_scan_desc)); cb_prog_scan->Bind(wxEVT_CHECKBOX, &VideoConfigDiag::Event_ProgressiveScan, this); - if (Core::GetState() != Core::CORE_UNINITIALIZED) + if (Core::IsRunning()) cb_prog_scan->Disable(); cb_prog_scan->SetValue(SConfig::GetInstance().m_LocalCoreStartupParameter.bProgressive); diff --git a/Source/Core/DolphinWX/VideoConfigDiag.h b/Source/Core/DolphinWX/VideoConfigDiag.h index 695a01e..c175063 100644 --- a/Source/Core/DolphinWX/VideoConfigDiag.h +++ b/Source/Core/DolphinWX/VideoConfigDiag.h @@ -86,7 +86,7 @@ class VideoConfigDiag : public wxDialog VideoBackend* new_backend = g_available_video_backends[ev.GetInt()]; if (g_video_backend != new_backend) { - bool do_switch = Core::GetState() == Core::CORE_UNINITIALIZED; + bool do_switch = !Core::IsRunning(); if (new_backend->GetName() == "Software Renderer") { do_switch = (wxYES == wxMessageBox(_("Software rendering is an order of magnitude slower than using the other backends.\nIt's only useful for debugging purposes.\nDo you really want to enable software rendering? If unsure, select 'No'."), diff --git a/Source/Core/InputCommon/CMakeLists.txt b/Source/Core/InputCommon/CMakeLists.txt index ac6e9c6..6b771c3 100644 --- a/Source/Core/InputCommon/CMakeLists.txt +++ b/Source/Core/InputCommon/CMakeLists.txt @@ -1,7 +1,5 @@ set(SRCS ControllerEmu.cpp InputConfig.cpp - UDPWiimote.cpp - UDPWrapper.cpp ControllerInterface/ControllerInterface.cpp ControllerInterface/Device.cpp ControllerInterface/ExpressionParser.cpp) diff --git a/Source/Core/InputCommon/ControllerEmu.cpp b/Source/Core/InputCommon/ControllerEmu.cpp index dae3d32..6e2bf8a 100644 --- a/Source/Core/InputCommon/ControllerEmu.cpp +++ b/Source/Core/InputCommon/ControllerEmu.cpp @@ -4,10 +4,6 @@ #include "InputCommon/ControllerEmu.h" -#if defined(HAVE_X11) && HAVE_X11 -#include -#endif - void ControllerEmu::UpdateReferences(ControllerInterface& devi) { for (auto& ctrlGroup : groups) @@ -47,6 +43,8 @@ void ControllerEmu::ControlGroup::LoadConfig(IniFile::Section *sec, const std::s // settings for (auto& s : settings) { + if (s->is_virtual) + continue; sec->Get(group + s->name, &s->value, s->default_value * 100); s->value /= 100; } @@ -103,7 +101,11 @@ void ControllerEmu::ControlGroup::SaveConfig(IniFile::Section *sec, const std::s std::string group(base + name); group += "/"; for (auto& s : settings) + { + if (s->is_virtual) + continue; sec->Set(group + s->name, s->value*100.0f, s->default_value*100.0f); + } for (auto& c : controls) { @@ -144,8 +146,6 @@ ControllerEmu::AnalogStick::AnalogStick(const char* const _name) : ControlGroup( settings.emplace_back(new Setting(_trans("Radius"), 0.7f, 0, 100)); settings.emplace_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); - settings.emplace_back(new Setting(_trans("Square Stick"), 0)); - } ControllerEmu::Buttons::Buttons(const std::string& _name) : ControlGroup(_name, GROUP_TYPE_BUTTONS) @@ -185,8 +185,7 @@ ControllerEmu::Force::Force(const std::string& _name) : ControlGroup(_name, GROU settings.emplace_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); } -ControllerEmu::Tilt::Tilt(const std::string& _name) - : ControlGroup(_name, GROUP_TYPE_TILT) +ControllerEmu::Tilt::Tilt(const std::string& _name) : ControlGroup(_name, GROUP_TYPE_TILT) { memset(m_tilt, 0, sizeof(m_tilt)); diff --git a/Source/Core/InputCommon/ControllerEmu.h b/Source/Core/InputCommon/ControllerEmu.h index eec79ab..bc39749 100644 --- a/Source/Core/InputCommon/ControllerEmu.h +++ b/Source/Core/InputCommon/ControllerEmu.h @@ -14,6 +14,7 @@ #include #include "Common/IniFile.h" +#include "Core/ConfigManager.h" #include "InputCommon/GCPadStatus.h" #include "InputCommon/ControllerInterface/ControllerInterface.h" @@ -30,7 +31,6 @@ enum GROUP_TYPE_TILT, GROUP_TYPE_CURSOR, GROUP_TYPE_TRIGGERS, - GROUP_TYPE_UDPWII, GROUP_TYPE_SLIDER, }; @@ -38,7 +38,6 @@ enum { SETTING_RADIUS, SETTING_DEADZONE, - SETTING_SQUARE, }; const char* const named_directions[] = @@ -96,12 +95,43 @@ class ControllerEmu , value(def_value) , default_value(def_value) , low(_low) - , high(_high){} + , high(_high) + , is_virtual(false) {} const std::string name; ControlState value; const ControlState default_value; const unsigned int low, high; + bool is_virtual; + + virtual void SetValue(ControlState new_value) + { + value = new_value; + } + + virtual ControlState GetValue() + { + return value; + } + }; + + class BackgroundInputSetting : public Setting + { + public: + BackgroundInputSetting(const std::string &_name) : Setting(_name, false) + { + is_virtual = true; + } + + void SetValue(ControlState new_value) override + { + SConfig::GetInstance().m_BackgroundInput = new_value; + } + + ControlState GetValue() override + { + return SConfig::GetInstance().m_BackgroundInput; + } }; ControlGroup(const std::string& _name, const unsigned int _type = GROUP_TYPE_OTHER) : name(_name), type(_type) {} @@ -121,66 +151,41 @@ class ControllerEmu class AnalogStick : public ControlGroup { public: + AnalogStick(const char* const _name); - template - void GetState(C* const x, C* const y, const unsigned int base, const unsigned int range) + void GetState(double* const x, double* const y) { - // this is all a mess - ControlState yy = controls[0]->control_ref->State() - controls[1]->control_ref->State(); ControlState xx = controls[3]->control_ref->State() - controls[2]->control_ref->State(); ControlState radius = settings[SETTING_RADIUS]->value; ControlState deadzone = settings[SETTING_DEADZONE]->value; - ControlState square = settings[SETTING_SQUARE]->value; ControlState m = controls[4]->control_ref->State(); - // modifier code - if (m) - { - yy = (fabsf(yy)>deadzone) * sign(yy) * (m + deadzone/2); - xx = (fabsf(xx)>deadzone) * sign(xx) * (m + deadzone/2); - } - - // deadzone / square stick code - if (radius != 1 || deadzone || square) - { - // this section might be all wrong, but its working good enough, I think - - ControlState ang = atan2(yy, xx); - ControlState ang_sin = sin(ang); - ControlState ang_cos = cos(ang); + ControlState ang = atan2(yy, xx); + ControlState ang_sin = sin(ang); + ControlState ang_cos = cos(ang); - // the amt a full square stick would have at current angle - ControlState square_full = std::min(ang_sin ? 1/fabsf(ang_sin) : 2, ang_cos ? 1/fabsf(ang_cos) : 2); + ControlState dist = sqrt(xx*xx + yy*yy); - // the amt a full stick would have that was ( user setting squareness) at current angle - // I think this is more like a pointed circle rather than a rounded square like it should be - ControlState stick_full = (1 + (square_full - 1) * square); + // dead zone code + dist = std::max(0.0f, dist - deadzone); + dist /= (1 - deadzone); - ControlState dist = sqrt(xx*xx + yy*yy); + // radius + dist *= radius; - // dead zone code - dist = std::max(0.0f, dist - deadzone * stick_full); - dist /= (1 - deadzone); - - // square stick code - ControlState amt = dist / stick_full; - dist -= ((square_full - 1) * amt * square); - - // radius - dist *= radius; + // The modifier halves the distance by 50%, which is useful + // for keyboard controls. + if (m) + dist *= 0.5; - yy = std::max(-1.0f, std::min(1.0f, ang_sin * dist)); - xx = std::max(-1.0f, std::min(1.0f, ang_cos * dist)); - } + yy = std::max(-1.0f, std::min(1.0f, ang_sin * dist)); + xx = std::max(-1.0f, std::min(1.0f, ang_cos * dist)); - *y = C(yy * range + base); - *x = C(xx * range + base); + *y = yy; + *x = xx; } - - AnalogStick(const char* const _name); - }; class Buttons : public ControlGroup @@ -205,64 +210,55 @@ class ControllerEmu class MixedTriggers : public ControlGroup { public: + MixedTriggers(const std::string& _name); - template - void GetState(C* const digital, const C* bitmasks, S* analog, const unsigned int range) + void GetState(u16 *const digital, const u16* bitmasks, double* analog) { const unsigned int trig_count = ((unsigned int) (controls.size() / 2)); for (unsigned int i=0; icontrol_ref->State() > settings[0]->value) //threshold { - *analog = range; + *analog = 1.0; *digital |= *bitmasks; } else { - *analog = S(controls[i+trig_count]->control_ref->State() * range); + *analog = controls[i+trig_count]->control_ref->State(); } } } - - MixedTriggers(const std::string& _name); - }; class Triggers : public ControlGroup { public: + Triggers(const std::string& _name); - template - void GetState(S* analog, const unsigned int range) + void GetState(double* analog) { const unsigned int trig_count = ((unsigned int) (controls.size())); const ControlState deadzone = settings[0]->value; for (unsigned int i=0; icontrol_ref->State() - deadzone, 0.0f) / (1 - deadzone) * range); + *analog = std::max(controls[i]->control_ref->State() - deadzone, 0.0f) / (1 - deadzone); } - - Triggers(const std::string& _name); - }; class Slider : public ControlGroup { public: + Slider(const std::string& _name); - template - void GetState(S* const slider, const unsigned int range, const unsigned int base = 0) + void GetState(double* const slider) { const float deadzone = settings[0]->value; const float state = controls[1]->control_ref->State() - controls[0]->control_ref->State(); if (fabsf(state) > deadzone) - *slider = (S)((state - (deadzone * sign(state))) / (1 - deadzone) * range + base); + *slider = (state - (deadzone * sign(state))) / (1 - deadzone); else *slider = 0; } - - Slider(const std::string& _name); - }; class Force : public ControlGroup @@ -270,8 +266,7 @@ class ControllerEmu public: Force(const std::string& _name); - template - void GetState(C* axis, const u8 base, const R range) + void GetState(double* axis) { const float deadzone = settings[0]->value; for (unsigned int i=0; i<6; i+=2) @@ -282,7 +277,7 @@ class ControllerEmu tmpf = ((state - (deadzone * sign(state))) / (1 - deadzone)); float &ax = m_swing[i >> 1]; - *axis++ = (C)((tmpf - ax) * range + base); + *axis++ = (tmpf - ax); ax = tmpf; } } @@ -296,8 +291,7 @@ class ControllerEmu public: Tilt(const std::string& _name); - template - void GetState(C* const x, C* const y, const unsigned int base, const R range, const bool step = true) + void GetState(double* const x, double* const y, const bool step = true) { // this is all a mess @@ -309,42 +303,35 @@ class ControllerEmu auto const angle = settings[2]->value / 1.8f; ControlState m = controls[4]->control_ref->State(); - // modifier code - if (m) - { - yy = (fabsf(yy)>deadzone) * sign(yy) * (m + deadzone/2); - xx = (fabsf(xx)>deadzone) * sign(xx) * (m + deadzone/2); - } - // deadzone / circle stick code - if (deadzone || circle) - { - // this section might be all wrong, but its working good enough, I think + // this section might be all wrong, but its working good enough, I think - ControlState ang = atan2(yy, xx); - ControlState ang_sin = sin(ang); - ControlState ang_cos = cos(ang); + ControlState ang = atan2(yy, xx); + ControlState ang_sin = sin(ang); + ControlState ang_cos = cos(ang); - // the amt a full square stick would have at current angle - ControlState square_full = std::min(ang_sin ? 1/fabsf(ang_sin) : 2, ang_cos ? 1/fabsf(ang_cos) : 2); + // the amt a full square stick would have at current angle + ControlState square_full = std::min(ang_sin ? 1/fabsf(ang_sin) : 2, ang_cos ? 1/fabsf(ang_cos) : 2); - // the amt a full stick would have that was (user setting circular) at current angle - // I think this is more like a pointed circle rather than a rounded square like it should be - ControlState stick_full = (square_full * (1 - circle)) + (circle); + // the amt a full stick would have that was (user setting circular) at current angle + // I think this is more like a pointed circle rather than a rounded square like it should be + ControlState stick_full = (square_full * (1 - circle)) + (circle); - ControlState dist = sqrt(xx*xx + yy*yy); + ControlState dist = sqrt(xx*xx + yy*yy); - // dead zone code - dist = std::max(0.0f, dist - deadzone * stick_full); - dist /= (1 - deadzone); + // dead zone code + dist = std::max(0.0f, dist - deadzone * stick_full); + dist /= (1 - deadzone); - // circle stick code - ControlState amt = dist / stick_full; - dist += (square_full - 1) * amt * circle; + // circle stick code + ControlState amt = dist / stick_full; + dist += (square_full - 1) * amt * circle; - yy = std::max(-1.0f, std::min(1.0f, ang_sin * dist)); - xx = std::max(-1.0f, std::min(1.0f, ang_cos * dist)); - } + if (m) + dist *= 0.5; + + yy = std::max(-1.0f, std::min(1.0f, ang_sin * dist)); + xx = std::max(-1.0f, std::min(1.0f, ang_cos * dist)); // this is kinda silly here // gui being open will make this happen 2x as fast, o well @@ -363,8 +350,8 @@ class ControllerEmu m_tilt[1] = std::max(m_tilt[1] - 0.1f, yy); } - *y = C(m_tilt[1] * angle * range + base); - *x = C(m_tilt[0] * angle * range + base); + *y = m_tilt[1] * angle; + *x = m_tilt[0] * angle; } private: @@ -376,8 +363,7 @@ class ControllerEmu public: Cursor(const std::string& _name); - template - void GetState(C* const x, C* const y, C* const z, const bool adjusted = false) + void GetState(double* const x, double* const y, double* const z, const bool adjusted = false) { const float zz = controls[4]->control_ref->State() - controls[5]->control_ref->State(); @@ -425,7 +411,7 @@ class ControllerEmu ~Extension() {} - void GetState(u8* const data, const bool focus = true); + void GetState(u8* const data); std::vector> attachments; diff --git a/Source/Core/InputCommon/ControllerInterface/Device.cpp b/Source/Core/InputCommon/ControllerInterface/Device.cpp index e1383ef..84af864 100644 --- a/Source/Core/InputCommon/ControllerInterface/Device.cpp +++ b/Source/Core/InputCommon/ControllerInterface/Device.cpp @@ -5,6 +5,12 @@ #include #include +// For InputGateOn() +// This is a really bad layering violation, but it's the cleanest +// place I could find to put it. +#include "Core/ConfigManager.h" +#include "Core/Host.h" + #include "InputCommon/ControllerInterface/Device.h" namespace ciface @@ -74,6 +80,16 @@ void Device::ClearInputState() // kinda slow but, w/e, should only happen when user unplugs a device while playing } +bool Device::Control::InputGateOn() +{ + if (SConfig::GetInstance().m_BackgroundInput) + return true; + else if (Host_RendererHasFocus() || Host_UIHasFocus()) + return true; + else + return false; +} + // // DeviceQualifier :: ToString // diff --git a/Source/Core/InputCommon/ControllerInterface/Device.h b/Source/Core/InputCommon/ControllerInterface/Device.h index a096bcb..6e1868a 100644 --- a/Source/Core/InputCommon/ControllerInterface/Device.h +++ b/Source/Core/InputCommon/ControllerInterface/Device.h @@ -42,6 +42,8 @@ class Device virtual std::string GetName() const = 0; virtual ~Control() {} + bool InputGateOn(); + virtual Input* ToInput() { return nullptr; } virtual Output* ToOutput() { return nullptr; } }; @@ -59,6 +61,16 @@ class Device virtual ControlState GetState() const = 0; + bool ShouldHaveInput(); + + ControlState GetGatedState() + { + if (InputGateOn()) + return GetState(); + else + return 0.0; + } + Input* ToInput() override { return this; } }; @@ -74,6 +86,12 @@ class Device virtual void SetState(ControlState state) = 0; + void SetGatedState(ControlState state) + { + if (InputGateOn()) + SetState(state); + } + Output* ToOutput() override { return this; } }; diff --git a/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp b/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp index c41e82b..da740bb 100644 --- a/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp +++ b/Source/Core/InputCommon/ControllerInterface/ExpressionParser.cpp @@ -228,12 +228,12 @@ class ControlExpression : public ExpressionNode virtual ControlState GetValue() override { - return control->ToInput()->GetState(); + return control->ToInput()->GetGatedState(); } virtual void SetValue(ControlState value) override { - control->ToOutput()->SetState(value); + control->ToOutput()->SetGatedState(value); } virtual int CountNumControls() override @@ -535,7 +535,7 @@ Expression::~Expression() delete node; } -ExpressionParseStatus ParseExpressionInner(std::string str, ControlFinder &finder, Expression **expr_out) +static ExpressionParseStatus ParseExpressionInner(std::string str, ControlFinder &finder, Expression **expr_out) { ExpressionParseStatus status; Expression *expr; diff --git a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp index 4b738d4..c43cd25 100644 --- a/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp +++ b/Source/Core/InputCommon/ControllerInterface/SDL/SDL.cpp @@ -18,7 +18,7 @@ namespace ciface namespace SDL { -std::string GetJoystickName(int index) +static std::string GetJoystickName(int index) { #if SDL_VERSION_ATLEAST(2, 0, 0) return SDL_JoystickNameForIndex(index); diff --git a/Source/Core/InputCommon/GCPadStatus.h b/Source/Core/InputCommon/GCPadStatus.h index 73d63a9..aa31982 100644 --- a/Source/Core/InputCommon/GCPadStatus.h +++ b/Source/Core/InputCommon/GCPadStatus.h @@ -4,27 +4,36 @@ #pragma once -#define PAD_ERR_NONE 0 -#define PAD_ERR_NO_CONTROLLER -1 -#define PAD_ERR_NOT_READY -2 -#define PAD_ERR_TRANSFER -3 +enum PadError +{ + PAD_ERR_NONE = 0, + PAD_ERR_NO_CONTROLLER = -1, + PAD_ERR_NOT_READY = -2, + PAD_ERR_TRANSFER = -3, +}; -#define PAD_USE_ORIGIN 0x0080 +enum +{ + PAD_USE_ORIGIN = 0x0080, +}; -#define PAD_BUTTON_LEFT 0x0001 -#define PAD_BUTTON_RIGHT 0x0002 -#define PAD_BUTTON_DOWN 0x0004 -#define PAD_BUTTON_UP 0x0008 -#define PAD_TRIGGER_Z 0x0010 -#define PAD_TRIGGER_R 0x0020 -#define PAD_TRIGGER_L 0x0040 -#define PAD_BUTTON_A 0x0100 -#define PAD_BUTTON_B 0x0200 -#define PAD_BUTTON_X 0x0400 -#define PAD_BUTTON_Y 0x0800 -#define PAD_BUTTON_START 0x1000 +enum PadButton +{ + PAD_BUTTON_LEFT = 0x0001, + PAD_BUTTON_RIGHT = 0x0002, + PAD_BUTTON_DOWN = 0x0004, + PAD_BUTTON_UP = 0x0008, + PAD_TRIGGER_Z = 0x0010, + PAD_TRIGGER_R = 0x0020, + PAD_TRIGGER_L = 0x0040, + PAD_BUTTON_A = 0x0100, + PAD_BUTTON_B = 0x0200, + PAD_BUTTON_X = 0x0400, + PAD_BUTTON_Y = 0x0800, + PAD_BUTTON_START = 0x1000, +}; -typedef struct +struct GCPadStatus { unsigned short button; // Or-ed PAD_BUTTON_* and PAD_TRIGGER_* bits unsigned char stickX; // 0 <= stickX <= 255 @@ -36,4 +45,11 @@ typedef struct unsigned char analogA; // 0 <= analogA <= 255 unsigned char analogB; // 0 <= analogB <= 255 signed char err; // one of PAD_ERR_* number -} SPADStatus; + + static const u8 MAIN_STICK_CENTER_X = 0x80; + static const u8 MAIN_STICK_CENTER_Y = 0x80; + static const u8 MAIN_STICK_RADIUS = 0x7f; + static const u8 C_STICK_CENTER_X = 0x80; + static const u8 C_STICK_CENTER_Y = 0x80; + static const u8 C_STICK_RADIUS = 0x7f; +}; diff --git a/Source/Core/InputCommon/InputCommon.vcxproj b/Source/Core/InputCommon/InputCommon.vcxproj index 5902db1..85d5bff 100644 --- a/Source/Core/InputCommon/InputCommon.vcxproj +++ b/Source/Core/InputCommon/InputCommon.vcxproj @@ -1,4 +1,4 @@ - + @@ -48,8 +48,6 @@ Create - - @@ -64,8 +62,6 @@ - - @@ -78,4 +74,4 @@ - \ No newline at end of file + diff --git a/Source/Core/InputCommon/InputCommon.vcxproj.filters b/Source/Core/InputCommon/InputCommon.vcxproj.filters index 729f7e1..e249ed3 100644 --- a/Source/Core/InputCommon/InputCommon.vcxproj.filters +++ b/Source/Core/InputCommon/InputCommon.vcxproj.filters @@ -1,4 +1,4 @@ - + @@ -17,8 +17,6 @@ - - ControllerInterface\DInput @@ -49,8 +47,6 @@ - - ControllerInterface\DInput @@ -80,4 +76,4 @@ - \ No newline at end of file + diff --git a/Source/Core/InputCommon/UDPWiimote.cpp b/Source/Core/InputCommon/UDPWiimote.cpp deleted file mode 100644 index e929e62..0000000 --- a/Source/Core/InputCommon/UDPWiimote.cpp +++ /dev/null @@ -1,439 +0,0 @@ -// Copyright 2013 Dolphin Emulator Project -// Licensed under GPLv2 -// Refer to the license.txt file included. - -#include -#include -#include -#include -#include -#include -#include - -#include "Common/Thread.h" -#include "Common/Timer.h" - -#include "InputCommon/UDPWiimote.h" - -#ifdef _WIN32 - -#include -#include -#define sock_t SOCKET -#define ERRNO WSAGetLastError() -#undef EWOULDBLOCK -#define EWOULDBLOCK WSAEWOULDBLOCK -#define BAD_SOCK INVALID_SOCKET -#define close(x) closesocket(x) -#define cleanup do {noinst--; if (noinst==0) WSACleanup();} while (0) -#define blockingoff(sock) ioctlsocket(sock, FIONBIO, &iMode) -#define dataz char* -#ifdef _MSC_VER -#pragma comment (lib, "Ws2_32.lib") -#endif - -#else - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#define BAD_SOCK -1 -#define ERRNO errno -#define cleanup noinst-- -#define blockingoff(sock) fcntl(sock, F_SETFL, O_NONBLOCK) -#define dataz void* -#define sock_t int - -#endif - - -struct UDPWiimote::_d -{ - std::thread thread; - std::list sockfds; - std::mutex termLock, mutex, nameMutex; - volatile bool exit; - sock_t bipv4_fd, bipv6_fd; -}; - -int UDPWiimote::noinst = 0; - -UDPWiimote::UDPWiimote(const std::string& _port, const std::string& name, int _index) : - port(_port), displayName(name), d(new _d), - waX(0), waY(0), waZ(1), naX(0), naY(0), naZ(-1), nunX(0), nunY(0), - pointerX(1001.0f / 2), pointerY(0), nunMask(0), wiimoteMask(0), index(_index), int_port(atoi(_port.c_str())) -{ - - static bool sranded=false; - if (!sranded) - { - srand((unsigned int)time(nullptr)); - sranded=true; - } - bcastMagic=rand() & 0xFFFF; - - #ifdef _WIN32 - u_long iMode = 1; - #endif - struct addrinfo hints, *servinfo, *p; - int rv; - - #ifdef _WIN32 - if (noinst==0) - { - WORD sockVersion; - WSADATA wsaData; - sockVersion = MAKEWORD(2, 2); - WSAStartup(sockVersion, &wsaData); - } - #endif - - noinst++; - - memset(&hints, 0, sizeof hints); - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_DGRAM; - hints.ai_flags = AI_PASSIVE; // use my IP - - if (!int_port) - { - cleanup; - err=-1; - return; - } - - if ((rv = getaddrinfo(nullptr, _port.c_str(), &hints, &servinfo)) != 0) - { - cleanup; - err=-1; - return; - } - - // loop through all the results and bind to everything we can - for (p = servinfo; p != nullptr; p = p->ai_next) - { - sock_t sock; - if ((sock = socket(p->ai_family, p->ai_socktype, p->ai_protocol)) == BAD_SOCK) - { - continue; - } - - if (bind(sock, p->ai_addr, (int)p->ai_addrlen) == -1) - { - close(sock); - continue; - } - d->sockfds.push_back(sock); - } - - if (d->sockfds.empty()) - { - cleanup; - err=-2; - return; - } - - freeaddrinfo(servinfo); - err=0; - d->exit=false; - initBroadcastIPv4(); - initBroadcastIPv6(); - - std::lock_guard lk(d->termLock); - d->thread = std::thread(std::mem_fn(&UDPWiimote::mainThread), this); - - return; -} - -void UDPWiimote::mainThread() -{ - std::unique_lock lk(d->termLock); - - Common::Timer time; - fd_set fds; - struct timeval timeout; - timeout.tv_sec=0; - timeout.tv_usec=0; - time.Update(); - do - { - int maxfd=0; - FD_ZERO(&fds); - for (auto& fd : d->sockfds) - { - FD_SET(fd,&fds); -#ifndef _WIN32 - if (fd>=maxfd) - maxfd=(fd)+1; -#endif - } - - u64 tleft=timeout.tv_sec*1000+timeout.tv_usec/1000; - u64 telapsed=time.GetTimeDifference(); - time.Update(); - if (tleft<=telapsed) - { - timeout.tv_sec=1; - timeout.tv_usec=500000; - broadcastPresence(); - } - else - { - tleft-=telapsed; - timeout.tv_sec=(long)(tleft/1000); - timeout.tv_usec=(tleft%1000)*1000; - } - - lk.unlock(); //VERY hacky. don't like it - if (d->exit) return; - int rt=select(maxfd,&fds,nullptr,nullptr,&timeout); - if (d->exit) return; - lk.lock(); - if (d->exit) return; - - if (rt) - { - for (sock_t fd : d->sockfds) - { - if (FD_ISSET(fd,&fds)) - { - u8 bf[64]; - int size=60; - size_t addr_len; - struct sockaddr_storage their_addr; - addr_len = sizeof their_addr; - if ((size = recvfrom(fd, - (dataz)bf, - size , 0,(struct sockaddr *)&their_addr, (socklen_t*)&addr_len)) == -1) - { - ERROR_LOG(WIIMOTE,"UDPWii Packet error"); - } - else - { - std::lock_guard lkm(d->mutex); - if (pharsePacket(bf,size)==0) - { - //NOTICE_LOG(WIIMOTE,"UDPWII New pack"); - } - else - { - //NOTICE_LOG(WIIMOTE,"UDPWII Wrong pack format... ignoring"); - } - } - } - } - } - } while (!(d->exit)); -} - -UDPWiimote::~UDPWiimote() -{ - d->exit = true; - { - std::lock_guard lk(d->termLock); - d->thread.join(); - } - for (auto& elem : d->sockfds) - close(elem); - close(d->bipv4_fd); - close(d->bipv6_fd); - cleanup; - delete d; -} - -#define ACCEL_FLAG (1 << 0) -#define BUTT_FLAG (1 << 1) -#define IR_FLAG (1 << 2) -#define NUN_FLAG (1 << 3) -#define NUNACCEL_FLAG (1 << 4) - -int UDPWiimote::pharsePacket(u8 * bf, size_t size) -{ - if (size < 3) - return -1; - - if (bf[0] != 0xde) - return -1; - //if (bf[1]==0) - // time=0; - //if (bf[1]bipv4_fd=socket(AF_INET, SOCK_DGRAM, 0); - if (d->bipv4_fd == BAD_SOCK) - { - WARN_LOG(WIIMOTE,"socket() failed"); - return; - } - - int broad=1; - if (setsockopt(d->bipv4_fd,SOL_SOCKET,SO_BROADCAST, (const dataz)(&broad), sizeof broad) == -1) - { - WARN_LOG(WIIMOTE,"setsockopt(SO_BROADCAST) failed"); - return; - } -} - -void UDPWiimote::broadcastIPv4(const void * data, size_t size) -{ - - struct sockaddr_in their_addr; - their_addr.sin_family = AF_INET; - their_addr.sin_port = htons(4431); - their_addr.sin_addr.s_addr = INADDR_BROADCAST; - memset(their_addr.sin_zero, '\0', sizeof their_addr.sin_zero); - - int num; - if ((num=sendto(d->bipv4_fd,(const dataz)data,(int)size,0,(struct sockaddr *) &their_addr, sizeof their_addr)) == -1) - { - WARN_LOG(WIIMOTE,"sendto() failed"); - return; - } -} - -void UDPWiimote::initBroadcastIPv6() -{ - //TODO: IPv6 support -} - -void UDPWiimote::broadcastIPv6(const void * data, size_t size) -{ - //TODO: IPv6 support -} - -void UDPWiimote::broadcastPresence() -{ - size_t slen; - u8 bf[512]; - bf[0]=0xdf; //magic number - *((u16*)(&(bf[1])))=htons(bcastMagic); //unique per-wiimote 16-bit ID - bf[3]=(u8)index; //wiimote index - *((u16*)(&(bf[4])))=htons(int_port); //port - { - std::lock_guard lk(d->nameMutex); - slen=displayName.size(); - if (slen>=256) - slen=255; - bf[6]=(u8)slen; //display name size (max 255) - memcpy(&(bf[7]),displayName.c_str(),slen); //display name - } - broadcastIPv4(bf,7+slen); - broadcastIPv6(bf,7+slen); -} - -void UDPWiimote::getAccel(float* x, float* y, float* z) -{ - std::lock_guard lk(d->mutex); - *x = (float)waX; - *y = (float)waY; - *z = (float)waZ; -} - -u32 UDPWiimote::getButtons() -{ - u32 msk; - std::lock_guard lk(d->mutex); - msk = wiimoteMask; - return msk; -} - -void UDPWiimote::getIR(float* x, float* y) -{ - std::lock_guard lk(d->mutex); - *x = (float)pointerX; - *y = (float)pointerY; -} - -void UDPWiimote::getNunchuck(float* x, float* y, u8* mask) -{ - std::lock_guard lk(d->mutex); - *x = (float)nunX; - *y = (float)nunY; - *mask = nunMask; -} - -void UDPWiimote::getNunchuckAccel(float* x, float* y, float* z) -{ - std::lock_guard lk(d->mutex); - *x = (float)naX; - *y = (float)naY; - *z = (float)naZ; -} - -const std::string& UDPWiimote::getPort() -{ - return port; -} - -void UDPWiimote::changeName(const std::string& name) -{ - std::lock_guard lk(d->nameMutex); - displayName = name; -} diff --git a/Source/Core/InputCommon/UDPWiimote.h b/Source/Core/InputCommon/UDPWiimote.h deleted file mode 100644 index 5dd2c50..0000000 --- a/Source/Core/InputCommon/UDPWiimote.h +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2013 Dolphin Emulator Project -// Licensed under GPLv2 -// Refer to the license.txt file included. - -#pragma once - -#include -#include "Common/Common.h" - -#define UDPWM_B1 (1<<0) -#define UDPWM_B2 (1<<1) -#define UDPWM_BA (1<<2) -#define UDPWM_BB (1<<3) -#define UDPWM_BP (1<<4) -#define UDPWM_BM (1<<5) -#define UDPWM_BH (1<<6) -#define UDPWM_BU (1<<7) -#define UDPWM_BD (1<<8) -#define UDPWM_BL (1<<9) -#define UDPWM_BR (1<<10) -#define UDPWM_SK (1<<11) -#define UDPWM_NC (1<<0) -#define UDPWM_NZ (1<<1) - -class UDPWiimote -{ -public: - UDPWiimote(const std::string& port, const std::string& name, int index); - virtual ~UDPWiimote(); - void getAccel(float* x, float* y, float* z); - u32 getButtons(); - void getNunchuck(float* x, float* y, u8* mask); - void getIR(float* x, float* y); - void getNunchuckAccel(float* x, float* y, float* z); - int getErrNo() - { - return err; - } - const std::string& getPort(); - void changeName(const std::string& name); - - void mainThread(); -private: - std::string port,displayName; - int pharsePacket(u8* data, size_t size); - struct _d; //using pimpl because Winsock2.h doesn't have include guards -_- - _d* d; - double waX, waY, waZ; - double naX, naY, naZ; - double nunX, nunY; - double pointerX, pointerY; - u8 nunMask; - u32 wiimoteMask; - u16 bcastMagic; - int err; - int index; - int int_port; - static int noinst; - void broadcastPresence(); - void broadcastIPv4(const void* data, size_t size); - void broadcastIPv6(const void* data, size_t size); - void initBroadcastIPv4(); - void initBroadcastIPv6(); -}; diff --git a/Source/Core/InputCommon/UDPWrapper.cpp b/Source/Core/InputCommon/UDPWrapper.cpp deleted file mode 100644 index eeba3bb..0000000 --- a/Source/Core/InputCommon/UDPWrapper.cpp +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2013 Dolphin Emulator Project -// Licensed under GPLv2 -// Refer to the license.txt file included. - -#include -#include -#include - -#include "InputCommon/UDPWrapper.h" - -const std::string DefaultPort(const int index) -{ - static std::string s; - s = "443"; - s += (char)('2' + index); - return s; -} - -UDPWrapper::UDPWrapper(int indx, const char* const _name) : - ControllerEmu::ControlGroup(_name,GROUP_TYPE_UDPWII), - inst(nullptr), index(indx), - updIR(false),updAccel(false), - updButt(false),udpEn(false) - , port(DefaultPort(indx)) -{ - //PanicAlert("UDPWrapper #%d ctor",index); -} - -void UDPWrapper::LoadConfig(IniFile::Section *sec, const std::string& defdev, const std::string& base ) -{ - ControlGroup::LoadConfig(sec,defdev,base); - - std::string group( base + name ); group += "/"; - - int _updAccel,_updIR,_updButt,_udpEn,_updNun,_updNunAccel; - sec->Get(group + "Enable",&_udpEn, 0); - sec->Get(group + "Port", &port, DefaultPort(index)); - sec->Get(group + "Update_Accel", &_updAccel, 1); - sec->Get(group + "Update_IR", &_updIR, 1); - sec->Get(group + "Update_Butt", &_updButt, 1); - sec->Get(group + "Update_Nunchuk", &_updNun, 1); - sec->Get(group + "Update_NunchukAccel", &_updNunAccel, 0); - - udpEn=(_udpEn>0); - updAccel=(_updAccel>0); - updIR=(_updIR>0); - updButt=(_updButt>0); - updNun=(_updNun>0); - updNunAccel=(_updNunAccel>0); - - Refresh(); -} - - -void UDPWrapper::SaveConfig(IniFile::Section *sec, const std::string& defdev, const std::string& base ) -{ - ControlGroup::SaveConfig(sec,defdev,base); - std::string group( base + name ); group += "/"; - sec->Set(group + "Enable", (int)udpEn, 0); - sec->Set(group + "Port", port, DefaultPort(index)); - sec->Set(group + "Update_Accel", (int)updAccel, 1); - sec->Set(group + "Update_IR", (int)updIR, 1); - sec->Set(group + "Update_Butt", (int)updButt, 1); - sec->Set(group + "Update_Nunchuk", (int)updNun, 1); - sec->Set(group + "Update_NunchukAccel", (int)updNunAccel, 0); -} - - -void UDPWrapper::Refresh() -{ - bool udpAEn=(inst!=nullptr); - if (udpEn && udpAEn) - { - if (inst->getPort() == port) - { - delete inst; - inst = new UDPWiimote(port, "Dolphin-Emu", index); //TODO: Changeable display name - } - return; - } - if (!udpEn) - { - if (inst) - delete inst; - inst = nullptr; - return; - } - //else - inst = new UDPWiimote(port, "Dolphin-Emu", index); -} - -UDPWrapper::~UDPWrapper() -{ - if (inst) - delete inst; -} diff --git a/Source/Core/InputCommon/UDPWrapper.h b/Source/Core/InputCommon/UDPWrapper.h deleted file mode 100644 index 728926e..0000000 --- a/Source/Core/InputCommon/UDPWrapper.h +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2013 Dolphin Emulator Project -// Licensed under GPLv2 -// Refer to the license.txt file included. - -#pragma once - -#include - -#include "Common/Common.h" -#include "Common/IniFile.h" -#include "InputCommon/ControllerEmu.h" -#include "InputCommon/UDPWiimote.h" - -class UDPWrapper : public ControllerEmu::ControlGroup -{ -public: - UDPWiimote * inst; - int index; - bool updIR, updAccel, updButt, updNun, updNunAccel, udpEn; //upd from update and udp from... well... UDP - std::string port; - - UDPWrapper(int index, const char* const _name); - virtual void LoadConfig(IniFile::Section *sec, const std::string& defdev = "", const std::string& base = "") override; - virtual void SaveConfig(IniFile::Section *sec, const std::string& defdev = "", const std::string& base = "") override; - void Refresh(); - virtual ~UDPWrapper(); -}; diff --git a/Source/Core/VideoBackends/D3D/D3D.vcxproj b/Source/Core/VideoBackends/D3D/D3D.vcxproj index 65ca3ec..77081ec 100644 --- a/Source/Core/VideoBackends/D3D/D3D.vcxproj +++ b/Source/Core/VideoBackends/D3D/D3D.vcxproj @@ -1,4 +1,4 @@ - + diff --git a/Source/Core/VideoBackends/D3D/D3DBase.cpp b/Source/Core/VideoBackends/D3D/D3DBase.cpp index 5bfdf54..e5e1ae2 100644 --- a/Source/Core/VideoBackends/D3D/D3DBase.cpp +++ b/Source/Core/VideoBackends/D3D/D3DBase.cpp @@ -21,7 +21,7 @@ HINSTANCE hDXGIDll = nullptr; int dxgi_dll_ref = 0; typedef HRESULT (WINAPI* D3D11CREATEDEVICEANDSWAPCHAIN)(IDXGIAdapter*, D3D_DRIVER_TYPE, HMODULE, UINT, CONST D3D_FEATURE_LEVEL*, UINT, UINT, CONST DXGI_SWAP_CHAIN_DESC*, IDXGISwapChain**, ID3D11Device**, D3D_FEATURE_LEVEL*, ID3D11DeviceContext**); -D3D11CREATEDEVICE PD3D11CreateDevice = nullptr; +static D3D11CREATEDEVICE PD3D11CreateDevice = nullptr; D3D11CREATEDEVICEANDSWAPCHAIN PD3D11CreateDeviceAndSwapChain = nullptr; HINSTANCE hD3DDll = nullptr; int d3d_dll_ref = 0; @@ -31,7 +31,7 @@ namespace D3D ID3D11Device* device = nullptr; ID3D11DeviceContext* context = nullptr; -IDXGISwapChain* swapchain = nullptr; +static IDXGISwapChain* swapchain = nullptr; D3D_FEATURE_LEVEL featlevel; D3DTexture2D* backbuf = nullptr; HWND hWnd; diff --git a/Source/Core/VideoBackends/D3D/D3DBase.h b/Source/Core/VideoBackends/D3D/D3DBase.h index f700c7b..dfea8d2 100644 --- a/Source/Core/VideoBackends/D3D/D3DBase.h +++ b/Source/Core/VideoBackends/D3D/D3DBase.h @@ -40,7 +40,6 @@ void Close(); extern ID3D11Device* device; extern ID3D11DeviceContext* context; -extern IDXGISwapChain* swapchain; extern HWND hWnd; extern bool bFrameInProgress; @@ -77,7 +76,6 @@ void SetDebugObjectName(T resource, const char* name) typedef HRESULT (WINAPI *CREATEDXGIFACTORY)(REFIID, void**); extern CREATEDXGIFACTORY PCreateDXGIFactory; typedef HRESULT (WINAPI *D3D11CREATEDEVICE)(IDXGIAdapter*, D3D_DRIVER_TYPE, HMODULE, UINT, CONST D3D_FEATURE_LEVEL*, UINT, UINT, ID3D11Device**, D3D_FEATURE_LEVEL*, ID3D11DeviceContext**); -extern D3D11CREATEDEVICE PD3D11CreateDevice; typedef HRESULT (WINAPI *D3DREFLECT)(LPCVOID, SIZE_T, REFIID, void**); extern D3DREFLECT PD3DReflect; diff --git a/Source/Core/VideoBackends/D3D/D3DShader.cpp b/Source/Core/VideoBackends/D3D/D3DShader.cpp index a1d2011..19055ac 100644 --- a/Source/Core/VideoBackends/D3D/D3DShader.cpp +++ b/Source/Core/VideoBackends/D3D/D3DShader.cpp @@ -27,7 +27,7 @@ ID3D11VertexShader* CreateVertexShaderFromByteCode(const void* bytecode, unsigne } // code->bytecode -bool CompileVertexShader(const char* code, unsigned int len, D3DBlob** blob) +bool CompileVertexShader(const std::string& code, D3DBlob** blob) { ID3D10Blob* shaderBuffer = nullptr; ID3D10Blob* errorBuffer = nullptr; @@ -37,7 +37,7 @@ bool CompileVertexShader(const char* code, unsigned int len, D3DBlob** blob) #else UINT flags = D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY|D3D10_SHADER_OPTIMIZATION_LEVEL3|D3D10_SHADER_SKIP_VALIDATION; #endif - HRESULT hr = PD3DCompile(code, len, nullptr, nullptr, nullptr, "main", D3D::VertexShaderVersionString(), + HRESULT hr = PD3DCompile(code.c_str(), code.length(), nullptr, nullptr, nullptr, "main", D3D::VertexShaderVersionString(), flags, 0, &shaderBuffer, &errorBuffer); if (errorBuffer) { @@ -82,8 +82,7 @@ ID3D11GeometryShader* CreateGeometryShaderFromByteCode(const void* bytecode, uns } // code->bytecode -bool CompileGeometryShader(const char* code, unsigned int len, D3DBlob** blob, - const D3D_SHADER_MACRO* pDefines) +bool CompileGeometryShader(const std::string& code, D3DBlob** blob, const D3D_SHADER_MACRO* pDefines) { ID3D10Blob* shaderBuffer = nullptr; ID3D10Blob* errorBuffer = nullptr; @@ -93,7 +92,7 @@ bool CompileGeometryShader(const char* code, unsigned int len, D3DBlob** blob, #else UINT flags = D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY|D3D10_SHADER_OPTIMIZATION_LEVEL3|D3D10_SHADER_SKIP_VALIDATION; #endif - HRESULT hr = PD3DCompile(code, len, nullptr, pDefines, nullptr, "main", D3D::GeometryShaderVersionString(), + HRESULT hr = PD3DCompile(code.c_str(), code.length(), nullptr, pDefines, nullptr, "main", D3D::GeometryShaderVersionString(), flags, 0, &shaderBuffer, &errorBuffer); if (errorBuffer) @@ -141,8 +140,7 @@ ID3D11PixelShader* CreatePixelShaderFromByteCode(const void* bytecode, unsigned } // code->bytecode -bool CompilePixelShader(const char* code, unsigned int len, D3DBlob** blob, - const D3D_SHADER_MACRO* pDefines) +bool CompilePixelShader(const std::string& code, D3DBlob** blob, const D3D_SHADER_MACRO* pDefines) { ID3D10Blob* shaderBuffer = nullptr; ID3D10Blob* errorBuffer = nullptr; @@ -152,7 +150,7 @@ bool CompilePixelShader(const char* code, unsigned int len, D3DBlob** blob, #else UINT flags = D3D10_SHADER_OPTIMIZATION_LEVEL3; #endif - HRESULT hr = PD3DCompile(code, len, nullptr, pDefines, nullptr, "main", D3D::PixelShaderVersionString(), + HRESULT hr = PD3DCompile(code.c_str(), code.length(), nullptr, pDefines, nullptr, "main", D3D::PixelShaderVersionString(), flags, 0, &shaderBuffer, &errorBuffer); if (errorBuffer) @@ -187,11 +185,10 @@ bool CompilePixelShader(const char* code, unsigned int len, D3DBlob** blob, return SUCCEEDED(hr); } -ID3D11VertexShader* CompileAndCreateVertexShader(const char* code, - unsigned int len) +ID3D11VertexShader* CompileAndCreateVertexShader(const std::string& code) { D3DBlob* blob = nullptr; - if (CompileVertexShader(code, len, &blob)) + if (CompileVertexShader(code, &blob)) { ID3D11VertexShader* v_shader = CreateVertexShaderFromByteCode(blob); blob->Release(); @@ -200,11 +197,10 @@ ID3D11VertexShader* CompileAndCreateVertexShader(const char* code, return nullptr; } -ID3D11GeometryShader* CompileAndCreateGeometryShader(const char* code, - unsigned int len, const D3D_SHADER_MACRO* pDefines) +ID3D11GeometryShader* CompileAndCreateGeometryShader(const std::string& code, const D3D_SHADER_MACRO* pDefines) { D3DBlob* blob = nullptr; - if (CompileGeometryShader(code, len, &blob, pDefines)) + if (CompileGeometryShader(code, &blob, pDefines)) { ID3D11GeometryShader* g_shader = CreateGeometryShaderFromByteCode(blob); blob->Release(); @@ -213,11 +209,10 @@ ID3D11GeometryShader* CompileAndCreateGeometryShader(const char* code, return nullptr; } -ID3D11PixelShader* CompileAndCreatePixelShader(const char* code, - unsigned int len) +ID3D11PixelShader* CompileAndCreatePixelShader(const std::string& code) { D3DBlob* blob = nullptr; - CompilePixelShader(code, len, &blob); + CompilePixelShader(code, &blob); if (blob) { ID3D11PixelShader* p_shader = CreatePixelShaderFromByteCode(blob); diff --git a/Source/Core/VideoBackends/D3D/D3DShader.h b/Source/Core/VideoBackends/D3D/D3DShader.h index 6d572c8..59c7175 100644 --- a/Source/Core/VideoBackends/D3D/D3DShader.h +++ b/Source/Core/VideoBackends/D3D/D3DShader.h @@ -4,6 +4,8 @@ #pragma once +#include + #include "VideoBackends/D3D/D3DBase.h" #include "VideoBackends/D3D/D3DBlob.h" @@ -20,20 +22,14 @@ namespace D3D ID3D11PixelShader* CreatePixelShaderFromByteCode(const void* bytecode, unsigned int len); // The returned bytecode buffers should be Release()d. - bool CompileVertexShader(const char* code, unsigned int len, - D3DBlob** blob); - bool CompileGeometryShader(const char* code, unsigned int len, - D3DBlob** blob, const D3D_SHADER_MACRO* pDefines = nullptr); - bool CompilePixelShader(const char* code, unsigned int len, - D3DBlob** blob, const D3D_SHADER_MACRO* pDefines = nullptr); + bool CompileVertexShader(const std::string& code, D3DBlob** blob); + bool CompileGeometryShader(const std::string& code, D3DBlob** blob, const D3D_SHADER_MACRO* pDefines = nullptr); + bool CompilePixelShader(const std::string& code, D3DBlob** blob, const D3D_SHADER_MACRO* pDefines = nullptr); // Utility functions - ID3D11VertexShader* CompileAndCreateVertexShader(const char* code, - unsigned int len); - ID3D11GeometryShader* CompileAndCreateGeometryShader(const char* code, - unsigned int len, const D3D_SHADER_MACRO* pDefines = nullptr); - ID3D11PixelShader* CompileAndCreatePixelShader(const char* code, - unsigned int len); + ID3D11VertexShader* CompileAndCreateVertexShader(const std::string& code); + ID3D11GeometryShader* CompileAndCreateGeometryShader(const std::string& code, const D3D_SHADER_MACRO* pDefines = nullptr); + ID3D11PixelShader* CompileAndCreatePixelShader(const std::string& code); inline ID3D11VertexShader* CreateVertexShaderFromByteCode(D3DBlob* bytecode) { return CreateVertexShaderFromByteCode(bytecode->Data(), bytecode->Size()); } @@ -43,11 +39,19 @@ namespace D3D { return CreatePixelShaderFromByteCode(bytecode->Data(), bytecode->Size()); } inline ID3D11VertexShader* CompileAndCreateVertexShader(D3DBlob* code) - { return CompileAndCreateVertexShader((const char*)code->Data(), code->Size()); } + { + return CompileAndCreateVertexShader((const char*)code->Data()); + } + inline ID3D11GeometryShader* CompileAndCreateGeometryShader(D3DBlob* code, const D3D_SHADER_MACRO* pDefines = nullptr) - { return CompileAndCreateGeometryShader((const char*)code->Data(), code->Size(), pDefines); } + { + return CompileAndCreateGeometryShader((const char*)code->Data(), pDefines); + } + inline ID3D11PixelShader* CompileAndCreatePixelShader(D3DBlob* code) - { return CompileAndCreatePixelShader((const char*)code->Data(), code->Size()); } + { + return CompileAndCreatePixelShader((const char*)code->Data()); + } } } // namespace DX11 \ No newline at end of file diff --git a/Source/Core/VideoBackends/D3D/D3DUtil.cpp b/Source/Core/VideoBackends/D3D/D3DUtil.cpp index a89898d..cf31b8a 100644 --- a/Source/Core/VideoBackends/D3D/D3DUtil.cpp +++ b/Source/Core/VideoBackends/D3D/D3DUtil.cpp @@ -253,12 +253,12 @@ int CD3DFont::Init() DeleteObject(hFont); // setup device objects for drawing - m_pshader = D3D::CompileAndCreatePixelShader(fontpixshader, sizeof(fontpixshader)); + m_pshader = D3D::CompileAndCreatePixelShader(fontpixshader); if (m_pshader == nullptr) PanicAlert("Failed to create pixel shader, %s %d\n", __FILE__, __LINE__); D3D::SetDebugObjectName((ID3D11DeviceChild*)m_pshader, "pixel shader of a CD3DFont object"); D3DBlob* vsbytecode; - D3D::CompileVertexShader(fontvertshader, sizeof(fontvertshader), &vsbytecode); + D3D::CompileVertexShader(fontvertshader, &vsbytecode); if (vsbytecode == nullptr) PanicAlert("Failed to compile vertex shader, %s %d\n", __FILE__, __LINE__); m_vshader = D3D::CreateVertexShaderFromByteCode(vsbytecode); if (m_vshader == nullptr) PanicAlert("Failed to create vertex shader, %s %d\n", __FILE__, __LINE__); diff --git a/Source/Core/VideoBackends/D3D/LineGeometryShader.cpp b/Source/Core/VideoBackends/D3D/LineGeometryShader.cpp index b681b57..7f1040a 100644 --- a/Source/Core/VideoBackends/D3D/LineGeometryShader.cpp +++ b/Source/Core/VideoBackends/D3D/LineGeometryShader.cpp @@ -186,7 +186,7 @@ bool LineGeometryShader::SetShader(u32 components, float lineWidth, { "NUM_TEXCOORDS", numTexCoordsStr.c_str() }, { nullptr, nullptr } }; - ID3D11GeometryShader* newShader = D3D::CompileAndCreateGeometryShader(code.GetBuffer(), unsigned int(strlen(code.GetBuffer())), macros); + ID3D11GeometryShader* newShader = D3D::CompileAndCreateGeometryShader(code.GetBuffer(), macros); if (!newShader) { WARN_LOG(VIDEO, "Line geometry shader for components 0x%.08X failed to compile", components); diff --git a/Source/Core/VideoBackends/D3D/PSTextureEncoder.cpp b/Source/Core/VideoBackends/D3D/PSTextureEncoder.cpp index 8393c21..fd1bd8a 100644 --- a/Source/Core/VideoBackends/D3D/PSTextureEncoder.cpp +++ b/Source/Core/VideoBackends/D3D/PSTextureEncoder.cpp @@ -929,7 +929,7 @@ void PSTextureEncoder::Init() // Create vertex shader D3DBlob* bytecode = nullptr; - if (!D3D::CompileVertexShader(EFB_ENCODE_VS, sizeof(EFB_ENCODE_VS), &bytecode)) + if (!D3D::CompileVertexShader(EFB_ENCODE_VS, &bytecode)) { ERROR_LOG(VIDEO, "EFB encode vertex shader failed to compile"); return; @@ -1254,7 +1254,7 @@ bool PSTextureEncoder::SetStaticShader(unsigned int dstFormat, PEControl::PixelF { "IMP_GENERATOR", generatorFuncName }, { nullptr, nullptr } }; - if (!D3D::CompilePixelShader(EFB_ENCODE_PS, sizeof(EFB_ENCODE_PS), &bytecode, macros)) + if (!D3D::CompilePixelShader(EFB_ENCODE_PS, &bytecode, macros)) { WARN_LOG(VIDEO, "EFB encoder shader for dstFormat 0x%X, srcFormat %d, isIntensity %d, scaleByHalf %d failed to compile", dstFormat, static_cast(srcFormat), isIntensity ? 1 : 0, scaleByHalf ? 1 : 0); @@ -1296,7 +1296,7 @@ bool PSTextureEncoder::InitDynamicMode() }; D3DBlob* bytecode = nullptr; - if (!D3D::CompilePixelShader(EFB_ENCODE_PS, sizeof(EFB_ENCODE_PS), &bytecode, macros)) + if (!D3D::CompilePixelShader(EFB_ENCODE_PS, &bytecode, macros)) { ERROR_LOG(VIDEO, "EFB encode pixel shader failed to compile"); return false; diff --git a/Source/Core/VideoBackends/D3D/PixelShaderCache.cpp b/Source/Core/VideoBackends/D3D/PixelShaderCache.cpp index 3531ec1..22e035c 100644 --- a/Source/Core/VideoBackends/D3D/PixelShaderCache.cpp +++ b/Source/Core/VideoBackends/D3D/PixelShaderCache.cpp @@ -21,9 +21,6 @@ #include "VideoCommon/Statistics.h" #include "VideoCommon/VideoConfig.h" - -extern int frameCount; - namespace DX11 { @@ -238,7 +235,7 @@ ID3D11PixelShader* PixelShaderCache::ReinterpRGBA6ToRGB8(bool multisampled) { if (!s_rgba6_to_rgb8[0]) { - s_rgba6_to_rgb8[0] = D3D::CompileAndCreatePixelShader(reint_rgba6_to_rgb8, sizeof(reint_rgba6_to_rgb8)); + s_rgba6_to_rgb8[0] = D3D::CompileAndCreatePixelShader(reint_rgba6_to_rgb8); CHECK(s_rgba6_to_rgb8[0], "Create RGBA6 to RGB8 pixel shader"); D3D::SetDebugObjectName(s_rgba6_to_rgb8[0], "RGBA6 to RGB8 pixel shader"); } @@ -247,10 +244,8 @@ ID3D11PixelShader* PixelShaderCache::ReinterpRGBA6ToRGB8(bool multisampled) else if (!s_rgba6_to_rgb8[1]) { // create MSAA shader for current AA mode - char buf[1024]; - const int l = sprintf_s(buf, 1024, reint_rgba6_to_rgb8_msaa, D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count); - - s_rgba6_to_rgb8[1] = D3D::CompileAndCreatePixelShader(buf, l); + std::string buf = StringFromFormat(reint_rgba6_to_rgb8_msaa, D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count); + s_rgba6_to_rgb8[1] = D3D::CompileAndCreatePixelShader(buf); CHECK(s_rgba6_to_rgb8[1], "Create RGBA6 to RGB8 MSAA pixel shader"); D3D::SetDebugObjectName(s_rgba6_to_rgb8[1], "RGBA6 to RGB8 MSAA pixel shader"); @@ -264,7 +259,7 @@ ID3D11PixelShader* PixelShaderCache::ReinterpRGB8ToRGBA6(bool multisampled) { if (!s_rgb8_to_rgba6[0]) { - s_rgb8_to_rgba6[0] = D3D::CompileAndCreatePixelShader(reint_rgb8_to_rgba6, sizeof(reint_rgb8_to_rgba6)); + s_rgb8_to_rgba6[0] = D3D::CompileAndCreatePixelShader(reint_rgb8_to_rgba6); CHECK(s_rgb8_to_rgba6[0], "Create RGB8 to RGBA6 pixel shader"); D3D::SetDebugObjectName(s_rgb8_to_rgba6[0], "RGB8 to RGBA6 pixel shader"); } @@ -273,10 +268,8 @@ ID3D11PixelShader* PixelShaderCache::ReinterpRGB8ToRGBA6(bool multisampled) else if (!s_rgb8_to_rgba6[1]) { // create MSAA shader for current AA mode - char buf[1024]; - const int l = sprintf_s(buf, 1024, reint_rgb8_to_rgba6_msaa, D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count); - - s_rgb8_to_rgba6[1] = D3D::CompileAndCreatePixelShader(buf, l); + std::string buf = StringFromFormat(reint_rgb8_to_rgba6_msaa, D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count); + s_rgb8_to_rgba6[1] = D3D::CompileAndCreatePixelShader(buf); CHECK(s_rgb8_to_rgba6[1], "Create RGB8 to RGBA6 MSAA pixel shader"); D3D::SetDebugObjectName(s_rgb8_to_rgba6[1], "RGB8 to RGBA6 MSAA pixel shader"); @@ -286,14 +279,19 @@ ID3D11PixelShader* PixelShaderCache::ReinterpRGB8ToRGBA6(bool multisampled) ID3D11PixelShader* PixelShaderCache::GetColorCopyProgram(bool multisampled) { - if (!multisampled || D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count == 1) return s_ColorCopyProgram[0]; - else if (s_ColorCopyProgram[1]) return s_ColorCopyProgram[1]; + if (!multisampled || D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count == 1) + { + return s_ColorCopyProgram[0]; + } + else if (s_ColorCopyProgram[1]) + { + return s_ColorCopyProgram[1]; + } else { // create MSAA shader for current AA mode - char buf[1024]; - int l = sprintf_s(buf, 1024, color_copy_program_code_msaa, D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count); - s_ColorCopyProgram[1] = D3D::CompileAndCreatePixelShader(buf, l); + std::string buf = StringFromFormat(color_copy_program_code_msaa, D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count); + s_ColorCopyProgram[1] = D3D::CompileAndCreatePixelShader(buf); CHECK(s_ColorCopyProgram[1]!=nullptr, "Create color copy MSAA pixel shader"); D3D::SetDebugObjectName((ID3D11DeviceChild*)s_ColorCopyProgram[1], "color copy MSAA pixel shader"); return s_ColorCopyProgram[1]; @@ -302,14 +300,19 @@ ID3D11PixelShader* PixelShaderCache::GetColorCopyProgram(bool multisampled) ID3D11PixelShader* PixelShaderCache::GetColorMatrixProgram(bool multisampled) { - if (!multisampled || D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count == 1) return s_ColorMatrixProgram[0]; - else if (s_ColorMatrixProgram[1]) return s_ColorMatrixProgram[1]; + if (!multisampled || D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count == 1) + { + return s_ColorMatrixProgram[0]; + } + else if (s_ColorMatrixProgram[1]) + { + return s_ColorMatrixProgram[1]; + } else { // create MSAA shader for current AA mode - char buf[1024]; - int l = sprintf_s(buf, 1024, color_matrix_program_code_msaa, D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count); - s_ColorMatrixProgram[1] = D3D::CompileAndCreatePixelShader(buf, l); + std::string buf = StringFromFormat(color_matrix_program_code_msaa, D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count); + s_ColorMatrixProgram[1] = D3D::CompileAndCreatePixelShader(buf); CHECK(s_ColorMatrixProgram[1]!=nullptr, "Create color matrix MSAA pixel shader"); D3D::SetDebugObjectName((ID3D11DeviceChild*)s_ColorMatrixProgram[1], "color matrix MSAA pixel shader"); return s_ColorMatrixProgram[1]; @@ -318,14 +321,19 @@ ID3D11PixelShader* PixelShaderCache::GetColorMatrixProgram(bool multisampled) ID3D11PixelShader* PixelShaderCache::GetDepthMatrixProgram(bool multisampled) { - if (!multisampled || D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count == 1) return s_DepthMatrixProgram[0]; - else if (s_DepthMatrixProgram[1]) return s_DepthMatrixProgram[1]; + if (!multisampled || D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count == 1) + { + return s_DepthMatrixProgram[0]; + } + else if (s_DepthMatrixProgram[1]) + { + return s_DepthMatrixProgram[1]; + } else { // create MSAA shader for current AA mode - char buf[1024]; - int l = sprintf_s(buf, 1024, depth_matrix_program_msaa, D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count); - s_DepthMatrixProgram[1] = D3D::CompileAndCreatePixelShader(buf, l); + std::string buf = StringFromFormat(depth_matrix_program_msaa, D3D::GetAAMode(g_ActiveConfig.iMultisampleMode).Count); + s_DepthMatrixProgram[1] = D3D::CompileAndCreatePixelShader(buf); CHECK(s_DepthMatrixProgram[1]!=nullptr, "Create depth matrix MSAA pixel shader"); D3D::SetDebugObjectName((ID3D11DeviceChild*)s_DepthMatrixProgram[1], "depth matrix MSAA pixel shader"); return s_DepthMatrixProgram[1]; @@ -372,22 +380,22 @@ void PixelShaderCache::Init() D3D::SetDebugObjectName((ID3D11DeviceChild*)pscbuf, "pixel shader constant buffer used to emulate the GX pipeline"); // used when drawing clear quads - s_ClearProgram = D3D::CompileAndCreatePixelShader(clear_program_code, sizeof(clear_program_code)); + s_ClearProgram = D3D::CompileAndCreatePixelShader(clear_program_code); CHECK(s_ClearProgram!=nullptr, "Create clear pixel shader"); D3D::SetDebugObjectName((ID3D11DeviceChild*)s_ClearProgram, "clear pixel shader"); // used when copying/resolving the color buffer - s_ColorCopyProgram[0] = D3D::CompileAndCreatePixelShader(color_copy_program_code, sizeof(color_copy_program_code)); + s_ColorCopyProgram[0] = D3D::CompileAndCreatePixelShader(color_copy_program_code); CHECK(s_ColorCopyProgram[0]!=nullptr, "Create color copy pixel shader"); D3D::SetDebugObjectName((ID3D11DeviceChild*)s_ColorCopyProgram[0], "color copy pixel shader"); // used for color conversion - s_ColorMatrixProgram[0] = D3D::CompileAndCreatePixelShader(color_matrix_program_code, sizeof(color_matrix_program_code)); + s_ColorMatrixProgram[0] = D3D::CompileAndCreatePixelShader(color_matrix_program_code); CHECK(s_ColorMatrixProgram[0]!=nullptr, "Create color matrix pixel shader"); D3D::SetDebugObjectName((ID3D11DeviceChild*)s_ColorMatrixProgram[0], "color matrix pixel shader"); // used for depth copy - s_DepthMatrixProgram[0] = D3D::CompileAndCreatePixelShader(depth_matrix_program, sizeof(depth_matrix_program)); + s_DepthMatrixProgram[0] = D3D::CompileAndCreatePixelShader(depth_matrix_program); CHECK(s_DepthMatrixProgram[0]!=nullptr, "Create depth matrix pixel shader"); D3D::SetDebugObjectName((ID3D11DeviceChild*)s_DepthMatrixProgram[0], "depth matrix pixel shader"); @@ -490,7 +498,7 @@ bool PixelShaderCache::SetShader(DSTALPHA_MODE dstAlphaMode, u32 components) GeneratePixelShaderCode(code, dstAlphaMode, API_D3D, components); D3DBlob* pbytecode; - if (!D3D::CompilePixelShader(code.GetBuffer(), (unsigned int)strlen(code.GetBuffer()), &pbytecode)) + if (!D3D::CompilePixelShader(code.GetBuffer(), &pbytecode)) { GFX_DEBUGGER_PAUSE_AT(NEXT_ERROR, true); return false; diff --git a/Source/Core/VideoBackends/D3D/PointGeometryShader.cpp b/Source/Core/VideoBackends/D3D/PointGeometryShader.cpp index cd68d93..d15fe3e 100644 --- a/Source/Core/VideoBackends/D3D/PointGeometryShader.cpp +++ b/Source/Core/VideoBackends/D3D/PointGeometryShader.cpp @@ -180,7 +180,7 @@ bool PointGeometryShader::SetShader(u32 components, float pointSize, { "NUM_TEXCOORDS", numTexCoordsStr.c_str() }, { nullptr, nullptr } }; - ID3D11GeometryShader* newShader = D3D::CompileAndCreateGeometryShader(code.GetBuffer(), unsigned int(strlen(code.GetBuffer())), macros); + ID3D11GeometryShader* newShader = D3D::CompileAndCreateGeometryShader(code.GetBuffer(), macros); if (!newShader) { WARN_LOG(VIDEO, "Point geometry shader for components 0x%.08X failed to compile", components); diff --git a/Source/Core/VideoBackends/D3D/Render.cpp b/Source/Core/VideoBackends/D3D/Render.cpp index 5420cca..7c39b4c 100644 --- a/Source/Core/VideoBackends/D3D/Render.cpp +++ b/Source/Core/VideoBackends/D3D/Render.cpp @@ -38,8 +38,6 @@ namespace DX11 { -static int s_fps = 0; - static u32 s_LastAA = 0; static Television s_television; @@ -181,8 +179,6 @@ Renderer::Renderer(void *&window_handle) { int x, y, w_temp, h_temp; - InitFPSCounter(); - Host_GetRenderWindowSize(x, y, w_temp, h_temp); D3D::Create((HWND)window_handle); @@ -903,7 +899,7 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangl // Finish up the current frame, print some stats if (g_ActiveConfig.bShowFPS) { - std::string fps = StringFromFormat("FPS: %d\n", s_fps); + std::string fps = StringFromFormat("FPS: %d\n", m_fps_counter.m_fps); D3D::font.DrawTextScaled(0, 0, 20, 0.0f, 0xFF00FFFF, fps); } @@ -952,10 +948,6 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangl FramebufferManagerBase::SetLastXfbHeight(h); } - // update FPS counter - if (XFBWrited) - s_fps = UpdateFPSCounter(); - // Flip/present backbuffer to frontbuffer here D3D::Present(); diff --git a/Source/Core/VideoBackends/D3D/Television.cpp b/Source/Core/VideoBackends/D3D/Television.cpp index 50516b7..f24a3dc 100644 --- a/Source/Core/VideoBackends/D3D/Television.cpp +++ b/Source/Core/VideoBackends/D3D/Television.cpp @@ -98,7 +98,7 @@ void Television::Init() // Create YUYV-decoding pixel shader - m_pShader = D3D::CompileAndCreatePixelShader(YUYV_DECODER_PS, sizeof(YUYV_DECODER_PS)); + m_pShader = D3D::CompileAndCreatePixelShader(YUYV_DECODER_PS); CHECK(m_pShader != nullptr, "compile and create yuyv decoder pixel shader"); D3D::SetDebugObjectName(m_pShader, "yuyv decoder pixel shader"); diff --git a/Source/Core/VideoBackends/D3D/VertexManager.cpp b/Source/Core/VideoBackends/D3D/VertexManager.cpp index 71e7d72..6ae5f17 100644 --- a/Source/Core/VideoBackends/D3D/VertexManager.cpp +++ b/Source/Core/VideoBackends/D3D/VertexManager.cpp @@ -16,12 +16,10 @@ #include "VideoCommon/RenderBase.h" #include "VideoCommon/Statistics.h" #include "VideoCommon/TextureCacheBase.h" +#include "VideoCommon/VertexLoader.h" #include "VideoCommon/VertexShaderManager.h" #include "VideoCommon/VideoConfig.h" -// internal state for loading vertices -extern NativeVertexFormat *g_nativeVertexFmt; - namespace DX11 { @@ -145,7 +143,7 @@ void VertexManager::Draw(UINT stride) { D3D::context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); D3D::context->DrawIndexed(IndexGenerator::GetIndexLen(), m_index_draw_offset, 0); - INCSTAT(stats.thisFrame.numIndexedDrawCalls); + INCSTAT(stats.thisFrame.numDrawCalls); } else if (current_primitive_type == PRIMITIVE_LINES) { @@ -165,7 +163,7 @@ void VertexManager::Draw(UINT stride) ((DX11::Renderer*)g_renderer)->ApplyCullDisable(); // Disable culling for lines and points D3D::context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_LINELIST); D3D::context->DrawIndexed(IndexGenerator::GetIndexLen(), m_index_draw_offset, 0); - INCSTAT(stats.thisFrame.numIndexedDrawCalls); + INCSTAT(stats.thisFrame.numDrawCalls); D3D::context->GSSetShader(nullptr, nullptr, 0); ((DX11::Renderer*)g_renderer)->RestoreCull(); @@ -189,7 +187,7 @@ void VertexManager::Draw(UINT stride) ((DX11::Renderer*)g_renderer)->ApplyCullDisable(); // Disable culling for lines and points D3D::context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_POINTLIST); D3D::context->DrawIndexed(IndexGenerator::GetIndexLen(), m_index_draw_offset, 0); - INCSTAT(stats.thisFrame.numIndexedDrawCalls); + INCSTAT(stats.thisFrame.numDrawCalls); D3D::context->GSSetShader(nullptr, nullptr, 0); ((DX11::Renderer*)g_renderer)->RestoreCull(); diff --git a/Source/Core/VideoBackends/D3D/VertexShaderCache.cpp b/Source/Core/VideoBackends/D3D/VertexShaderCache.cpp index f62d0f7..4758d2e 100644 --- a/Source/Core/VideoBackends/D3D/VertexShaderCache.cpp +++ b/Source/Core/VideoBackends/D3D/VertexShaderCache.cpp @@ -122,7 +122,7 @@ void VertexShaderCache::Init() D3D::SetDebugObjectName((ID3D11DeviceChild*)vscbuf, "vertex shader constant buffer used to emulate the GX pipeline"); D3DBlob* blob; - D3D::CompileVertexShader(simple_shader_code, sizeof(simple_shader_code), &blob); + D3D::CompileVertexShader(simple_shader_code, &blob); D3D::device->CreateInputLayout(simpleelems, 2, blob->Data(), blob->Size(), &SimpleLayout); SimpleVertexShader = D3D::CreateVertexShaderFromByteCode(blob); if (SimpleLayout == nullptr || SimpleVertexShader == nullptr) PanicAlert("Failed to create simple vertex shader or input layout at %s %d\n", __FILE__, __LINE__); @@ -130,7 +130,7 @@ void VertexShaderCache::Init() D3D::SetDebugObjectName((ID3D11DeviceChild*)SimpleVertexShader, "simple vertex shader"); D3D::SetDebugObjectName((ID3D11DeviceChild*)SimpleLayout, "simple input layout"); - D3D::CompileVertexShader(clear_shader_code, sizeof(clear_shader_code), &blob); + D3D::CompileVertexShader(clear_shader_code, &blob); D3D::device->CreateInputLayout(clearelems, 2, blob->Data(), blob->Size(), &ClearLayout); ClearVertexShader = D3D::CreateVertexShaderFromByteCode(blob); if (ClearLayout == nullptr || ClearVertexShader == nullptr) PanicAlert("Failed to create clear vertex shader or input layout at %s %d\n", __FILE__, __LINE__); @@ -218,7 +218,7 @@ bool VertexShaderCache::SetShader(u32 components) GenerateVertexShaderCode(code, components, API_D3D); D3DBlob* pbytecode = nullptr; - D3D::CompileVertexShader(code.GetBuffer(), (int)strlen(code.GetBuffer()), &pbytecode); + D3D::CompileVertexShader(code.GetBuffer(), &pbytecode); if (pbytecode == nullptr) { diff --git a/Source/Core/VideoBackends/D3D/XFBEncoder.cpp b/Source/Core/VideoBackends/D3D/XFBEncoder.cpp index d32d76f..8c200b4 100644 --- a/Source/Core/VideoBackends/D3D/XFBEncoder.cpp +++ b/Source/Core/VideoBackends/D3D/XFBEncoder.cpp @@ -189,7 +189,7 @@ void XFBEncoder::Init() // Create vertex shader D3DBlob* bytecode = nullptr; - if (!D3D::CompileVertexShader(XFB_ENCODE_VS, sizeof(XFB_ENCODE_VS), &bytecode)) + if (!D3D::CompileVertexShader(XFB_ENCODE_VS, &bytecode)) { ERROR_LOG(VIDEO, "XFB encode vertex shader failed to compile"); return; @@ -211,7 +211,7 @@ void XFBEncoder::Init() // Create pixel shader - m_pShader = D3D::CompileAndCreatePixelShader(XFB_ENCODE_PS, sizeof(XFB_ENCODE_PS)); + m_pShader = D3D::CompileAndCreatePixelShader(XFB_ENCODE_PS); if (!m_pShader) { ERROR_LOG(VIDEO, "XFB encode pixel shader failed to compile"); diff --git a/Source/Core/VideoBackends/OGL/FramebufferManager.cpp b/Source/Core/VideoBackends/OGL/FramebufferManager.cpp index cb21fc3..62f112a 100644 --- a/Source/Core/VideoBackends/OGL/FramebufferManager.cpp +++ b/Source/Core/VideoBackends/OGL/FramebufferManager.cpp @@ -169,7 +169,7 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms { // non-msaa, so just fetch the pixel sampler = - "uniform sampler2D samp9;\n" + "SAMPLER_BINDING(9) uniform sampler2D samp9;\n" "vec4 sampleEFB(ivec2 pos) {\n" " return texelFetch(samp9, pos, 0);\n" "}\n"; @@ -180,7 +180,7 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms // This will lead to sample shading, but it's the only way to not loose // the values of each sample. sampler = - "uniform sampler2DMS samp9;\n" + "SAMPLER_BINDING(9) uniform sampler2DMS samp9;\n" "vec4 sampleEFB(ivec2 pos) {\n" " return texelFetch(samp9, pos, gl_SampleID);\n" "}\n"; @@ -191,7 +191,7 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms std::stringstream samples; samples << m_msaaSamples; sampler = - "uniform sampler2DMS samp9;\n" + "SAMPLER_BINDING(9) uniform sampler2DMS samp9;\n" "vec4 sampleEFB(ivec2 pos) {\n" " vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\n" " for(int i=0; i<" + samples.str() + "; i++)\n" diff --git a/Source/Core/VideoBackends/OGL/GLExtensions/GLExtensions.cpp b/Source/Core/VideoBackends/OGL/GLExtensions/GLExtensions.cpp index d7ba629..7b70871 100644 --- a/Source/Core/VideoBackends/OGL/GLExtensions/GLExtensions.cpp +++ b/Source/Core/VideoBackends/OGL/GLExtensions/GLExtensions.cpp @@ -1574,16 +1574,16 @@ const GLFunc gl_function_array[] = namespace GLExtensions { // Private members and functions - bool _isES3; - bool _isES; - u32 _GLVersion; - std::unordered_map m_extension_list; + static bool _isES3; + static bool _isES; + static u32 _GLVersion; + static std::unordered_map m_extension_list; // Private initialization functions bool InitFunctionPointers(); // Initializes the extension list the old way - void InitExtensionList21() + static void InitExtensionList21() { const char* extensions = (const char*)glGetString(GL_EXTENSIONS); std::string tmp(extensions); @@ -1593,7 +1593,7 @@ namespace GLExtensions m_extension_list[tmp] = true; } - void InitExtensionList() + static void InitExtensionList() { m_extension_list.clear(); if (_isES3) @@ -1730,7 +1730,7 @@ namespace GLExtensions for (GLint i = 0; i < NumExtension; ++i) m_extension_list[std::string((const char*)glGetStringi(GL_EXTENSIONS, i))] = true; } - void InitVersion() + static void InitVersion() { GLint major, minor; glGetIntegerv(GL_MAJOR_VERSION, &major); @@ -1743,7 +1743,7 @@ namespace GLExtensions _GLVersion = 330; // Get all the fun things } - void* GetFuncAddress(std::string name, void **func) + static void* GetFuncAddress(std::string name, void **func) { *func = GLInterface->GetFuncAddress(name); if (*func == nullptr) @@ -1792,7 +1792,7 @@ namespace GLExtensions } // Private initialization functions - bool HasFeatures(const std::string& extensions) + static bool HasFeatures(const std::string& extensions) { bool result = true; std::string tmp; diff --git a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp index b1499c7..768663f 100644 --- a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp +++ b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp @@ -29,7 +29,7 @@ s32 ProgramShaderCache::s_ubo_align; static StreamBuffer *s_buffer; static int num_failures = 0; -LinearDiskCache g_program_disk_cache; +static LinearDiskCache g_program_disk_cache; static GLuint CurrentProgram = 0; ProgramShaderCache::PCache ProgramShaderCache::pshaders; ProgramShaderCache::PCacheEntry* ProgramShaderCache::last_entry; @@ -39,7 +39,7 @@ UidChecker ProgramShaderCache::vertex_uid_chec static char s_glsl_header[1024] = ""; -std::string GetGLSLVersionString() +static std::string GetGLSLVersionString() { GLSL_VERSION v = g_ogl_config.eSupportedGLSLVersion; switch(v) @@ -61,12 +61,12 @@ std::string GetGLSLVersionString() void SHADER::SetProgramVariables() { - // glsl shader must be bind to set samplers - Bind(); - - // Bind UBO + // Bind UBO and texture samplers if (!g_ActiveConfig.backend_info.bSupportsBindingLayout) { + // glsl shader must be bind to set samplers if we don't support binding layout + Bind(); + GLint PSBlock_id = glGetUniformBlockIndex(glprogid, "PSBlock"); GLint VSBlock_id = glGetUniformBlockIndex(glprogid, "VSBlock"); @@ -74,20 +74,19 @@ void SHADER::SetProgramVariables() glUniformBlockBinding(glprogid, PSBlock_id, 1); if (VSBlock_id != -1) glUniformBlockBinding(glprogid, VSBlock_id, 2); - } - // Bind Texture Sampler - for (int a = 0; a <= 9; ++a) - { - char name[8]; - snprintf(name, 8, "samp%d", a); + // Bind Texture Sampler + for (int a = 0; a <= 9; ++a) + { + char name[8]; + snprintf(name, 8, "samp%d", a); - // Still need to get sampler locations since we aren't binding them statically in the shaders - int loc = glGetUniformLocation(glprogid, name); - if (loc != -1) - glUniform1i(loc, a); + // Still need to get sampler locations since we aren't binding them statically in the shaders + int loc = glGetUniformLocation(glprogid, name); + if (loc != -1) + glUniform1i(loc, a); + } } - } void SHADER::SetProgramBindings() @@ -123,6 +122,7 @@ void SHADER::Bind() { if (CurrentProgram != glprogid) { + INCSTAT(stats.thisFrame.numShaderChanges); glUseProgram(glprogid); CurrentProgram = glprogid; } @@ -478,6 +478,7 @@ void ProgramShaderCache::CreateHeader ( void ) "%s\n" // 420pack "%s\n" // msaa "%s\n" // sample shading + "%s\n" // Sampler binding // Precision defines for GLSL ES "%s\n" @@ -508,6 +509,7 @@ void ProgramShaderCache::CreateHeader ( void ) , (g_ActiveConfig.backend_info.bSupportsBindingLayout && v < GLSLES_310) ? "#extension GL_ARB_shading_language_420pack : enable" : "" , (g_ogl_config.bSupportsMSAA && v < GLSL_150) ? "#extension GL_ARB_texture_multisample : enable" : "" , (g_ogl_config.bSupportSampleShading) ? "#extension GL_ARB_sample_shading : enable" : "" + , g_ActiveConfig.backend_info.bSupportsBindingLayout ? "#define SAMPLER_BINDING(x) layout(binding = x)" : "#define SAMPLER_BINDING(x)" , v>=GLSLES_300 ? "precision highp float;" : "" , v>=GLSLES_300 ? "precision highp int;" : "" diff --git a/Source/Core/VideoBackends/OGL/RasterFont.cpp b/Source/Core/VideoBackends/OGL/RasterFont.cpp index d281f9a..7d96e03 100644 --- a/Source/Core/VideoBackends/OGL/RasterFont.cpp +++ b/Source/Core/VideoBackends/OGL/RasterFont.cpp @@ -124,7 +124,7 @@ static const char *s_vertexShaderSrc = "}\n"; static const char *s_fragmentShaderSrc = - "uniform sampler2D samp8;\n" + "SAMPLER_BINDING(8) uniform sampler2D samp8;\n" "uniform vec4 color;\n" "in vec2 uv0;\n" "out vec4 ocol0;\n" diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 136efde..bbd10dd 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -67,7 +67,7 @@ void VideoConfig::UpdateProjectionHack() ::UpdateProjectionHack(g_Config.iPhackvalue, g_Config.sPhackvalue); } -int OSDInternalW, OSDInternalH; +static int OSDInternalW, OSDInternalH; namespace OGL { @@ -85,7 +85,6 @@ VideoConfig g_ogl_config; // Declarations and definitions // ---------------------------- -static int s_fps = 0; static GLuint s_ShowEFBCopyRegions_VBO = 0; static GLuint s_ShowEFBCopyRegions_VAO = 0; static SHADER s_ShowEFBCopyRegions; @@ -112,7 +111,7 @@ static bool s_efbCacheValid[2][EFB_CACHE_WIDTH * EFB_CACHE_HEIGHT]; static bool s_efbCacheIsCleared = false; static std::vector s_efbCache[2][EFB_CACHE_WIDTH * EFB_CACHE_HEIGHT]; // 2 for PEEK_Z and PEEK_COLOR -int GetNumMSAASamples(int MSAAMode) +static int GetNumMSAASamples(int MSAAMode) { int samples; switch (MSAAMode) @@ -145,7 +144,7 @@ int GetNumMSAASamples(int MSAAMode) return g_ogl_config.max_samples; } -void ApplySSAASettings() { +static void ApplySSAASettings() { // GLES3 doesn't support SSAA if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGL) { @@ -163,7 +162,8 @@ void ApplySSAASettings() { } } -void GLAPIENTRY ErrorCallback( GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const char* message, const void* userParam) +#if defined(_DEBUG) || defined(DEBUGFAST) +static void GLAPIENTRY ErrorCallback( GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const char* message, const void* userParam) { const char *s_source; const char *s_type; @@ -196,18 +196,19 @@ void GLAPIENTRY ErrorCallback( GLenum source, GLenum type, GLuint id, GLenum sev default: ERROR_LOG(VIDEO, "id: %x, source: %s, type: %s - %s", id, s_source, s_type, message); break; } } +#endif // Two small Fallbacks to avoid GL_ARB_ES2_compatibility -void GLAPIENTRY DepthRangef(GLfloat neardepth, GLfloat fardepth) +static void GLAPIENTRY DepthRangef(GLfloat neardepth, GLfloat fardepth) { glDepthRange(neardepth, fardepth); } -void GLAPIENTRY ClearDepthf(GLfloat depthval) +static void GLAPIENTRY ClearDepthf(GLfloat depthval) { glClearDepth(depthval); } -void InitDriverInfo() +static void InitDriverInfo() { std::string svendor = std::string(g_ogl_config.gl_vendor); std::string srenderer = std::string(g_ogl_config.gl_renderer); @@ -337,10 +338,8 @@ Renderer::Renderer() OSDInternalW = 0; OSDInternalH = 0; - s_fps=0; s_ShowEFBCopyRegions_VBO = 0; s_blendMode = 0; - InitFPSCounter(); bool bSuccess = true; @@ -686,7 +685,7 @@ void Renderer::DrawDebugInfo() std::string debug_info; if (g_ActiveConfig.bShowFPS) - debug_info += StringFromFormat("FPS: %d\n", s_fps); + debug_info += StringFromFormat("FPS: %d\n", m_fps_counter.m_fps); if (SConfig::GetInstance().m_ShowLag) debug_info += StringFromFormat("Lag: %" PRIu64 "\n", Movie::g_currentLagCount); @@ -1299,7 +1298,7 @@ void Renderer::SetBlendMode(bool forceUpdate) s_blendMode = newval; } -void DumpFrame(const std::vector& data, int w, int h) +static void DumpFrame(const std::vector& data, int w, int h) { #if defined(HAVE_LIBAV) || defined(_WIN32) if (g_ActiveConfig.bDumpFrames && !data.empty()) @@ -1583,8 +1582,6 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbHeight,const EFBRectangl } } - if (XFBWrited) - s_fps = UpdateFPSCounter(); // --------------------------------------------------------------------- if (!DriverDetails::HasBug(DriverDetails::BUG_BROKENSWAP)) { diff --git a/Source/Core/VideoBackends/OGL/Render.h b/Source/Core/VideoBackends/OGL/Render.h index 2ccc00a..c51be20 100644 --- a/Source/Core/VideoBackends/OGL/Render.h +++ b/Source/Core/VideoBackends/OGL/Render.h @@ -17,7 +17,7 @@ enum GLSL_VERSION { }; // ogl-only config, so not in VideoConfig.h -extern struct VideoConfig { +struct VideoConfig { bool bSupportsGLSLCache; bool bSupportsGLPinnedMemory; bool bSupportsGLSync; @@ -35,7 +35,8 @@ extern struct VideoConfig { const char* glsl_version; s32 max_samples; -} g_ogl_config; +}; +extern VideoConfig g_ogl_config; class Renderer : public ::Renderer { diff --git a/Source/Core/VideoBackends/OGL/StreamBuffer.cpp b/Source/Core/VideoBackends/OGL/StreamBuffer.cpp index 5723283..fd49d1b 100644 --- a/Source/Core/VideoBackends/OGL/StreamBuffer.cpp +++ b/Source/Core/VideoBackends/OGL/StreamBuffer.cpp @@ -346,16 +346,16 @@ StreamBuffer* StreamBuffer::Create(u32 type, u32 size) // Prefer the syncing buffers over the orphaning one if (g_ogl_config.bSupportsGLSync) { - // try to use buffer storage whenever possible - if (g_ogl_config.bSupportsGLBufferStorage && - !(DriverDetails::HasBug(DriverDetails::BUG_BROKENBUFFERSTORAGE) && type == GL_ARRAY_BUFFER)) - return new BufferStorage(type, size); - - // pinned memory is almost as fine + // pinned memory is much faster than buffer storage on amd cards if (g_ogl_config.bSupportsGLPinnedMemory && !(DriverDetails::HasBug(DriverDetails::BUG_BROKENPINNEDMEMORY) && type == GL_ELEMENT_ARRAY_BUFFER)) return new PinnedMemory(type, size); + // buffer storage works well in most situations + if (g_ogl_config.bSupportsGLBufferStorage && + !(DriverDetails::HasBug(DriverDetails::BUG_BROKENBUFFERSTORAGE) && type == GL_ARRAY_BUFFER)) + return new BufferStorage(type, size); + // don't fall back to MapAnd* for nvidia drivers if (DriverDetails::HasBug(DriverDetails::BUG_BROKENUNSYNCMAPPING)) return new BufferSubData(type, size); diff --git a/Source/Core/VideoBackends/OGL/TextureCache.cpp b/Source/Core/VideoBackends/OGL/TextureCache.cpp index 198ffda..8b38fca 100644 --- a/Source/Core/VideoBackends/OGL/TextureCache.cpp +++ b/Source/Core/VideoBackends/OGL/TextureCache.cpp @@ -346,7 +346,7 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo TextureCache::TextureCache() { const char *pColorMatrixProg = - "uniform sampler2D samp9;\n" + "SAMPLER_BINDING(9) uniform sampler2D samp9;\n" "uniform vec4 colmat[7];\n" "in vec2 uv0;\n" "out vec4 ocol0;\n" @@ -358,7 +358,7 @@ TextureCache::TextureCache() "}\n"; const char *pDepthMatrixProg = - "uniform sampler2D samp9;\n" + "SAMPLER_BINDING(9) uniform sampler2D samp9;\n" "uniform vec4 colmat[5];\n" "in vec2 uv0;\n" "out vec4 ocol0;\n" @@ -372,7 +372,7 @@ TextureCache::TextureCache() const char *VProgram = "out vec2 uv0;\n" - "uniform sampler2D samp9;\n" + "SAMPLER_BINDING(9) uniform sampler2D samp9;\n" "uniform vec4 copy_position;\n" // left, top, right, bottom "void main()\n" "{\n" diff --git a/Source/Core/VideoBackends/OGL/TextureConverter.cpp b/Source/Core/VideoBackends/OGL/TextureConverter.cpp index f4300db..7381969 100644 --- a/Source/Core/VideoBackends/OGL/TextureConverter.cpp +++ b/Source/Core/VideoBackends/OGL/TextureConverter.cpp @@ -72,7 +72,7 @@ static void CreatePrograms() const char *VProgramRgbToYuyv = "out vec2 uv0;\n" "uniform vec4 copy_position;\n" // left, top, right, bottom - "uniform sampler2D samp9;\n" + "SAMPLER_BINDING(9) uniform sampler2D samp9;\n" "void main()\n" "{\n" " vec2 rawpos = vec2(gl_VertexID&1, gl_VertexID&2);\n" @@ -80,7 +80,7 @@ static void CreatePrograms() " uv0 = mix(copy_position.xy, copy_position.zw, rawpos) / vec2(textureSize(samp9, 0));\n" "}\n"; const char *FProgramRgbToYuyv = - "uniform sampler2D samp9;\n" + "SAMPLER_BINDING(9) uniform sampler2D samp9;\n" "in vec2 uv0;\n" "out vec4 ocol0;\n" "void main()\n" @@ -111,7 +111,7 @@ static void CreatePrograms() " gl_Position = vec4(rawpos*2.0-1.0, 0.0, 1.0);\n" "}\n"; const char *FProgramYuyvToRgb = - "uniform sampler2D samp9;\n" + "SAMPLER_BINDING(9) uniform sampler2D samp9;\n" "in vec2 uv0;\n" "out vec4 ocol0;\n" "void main()\n" @@ -134,7 +134,7 @@ static void CreatePrograms() static SHADER &GetOrCreateEncodingShader(u32 format) { - if (format > NUM_ENCODING_PROGRAMS) + if (format >= NUM_ENCODING_PROGRAMS) { PanicAlert("Unknown texture copy format: 0x%x\n", format); return s_encodingPrograms[0]; diff --git a/Source/Core/VideoBackends/OGL/VertexManager.cpp b/Source/Core/VideoBackends/OGL/VertexManager.cpp index b32c6ad..0ac5904 100644 --- a/Source/Core/VideoBackends/OGL/VertexManager.cpp +++ b/Source/Core/VideoBackends/OGL/VertexManager.cpp @@ -29,9 +29,6 @@ #include "VideoCommon/VertexShaderManager.h" #include "VideoCommon/VideoConfig.h" -// internal state for loading vertices -extern NativeVertexFormat *g_nativeVertexFmt; - namespace OGL { //This are the initially requested size for the buffers expressed in bytes @@ -124,7 +121,7 @@ void VertexManager::Draw(u32 stride) } else { glDrawRangeElements(primitive_mode, 0, max_index, index_size, GL_UNSIGNED_SHORT, (u8*)nullptr+s_index_offset); } - INCSTAT(stats.thisFrame.numIndexedDrawCalls); + INCSTAT(stats.thisFrame.numDrawCalls); } void VertexManager::vFlush(bool useDstAlpha) diff --git a/Source/Core/VideoBackends/OGL/main.cpp b/Source/Core/VideoBackends/OGL/main.cpp index c4db8d9..fb4079a 100644 --- a/Source/Core/VideoBackends/OGL/main.cpp +++ b/Source/Core/VideoBackends/OGL/main.cpp @@ -103,7 +103,7 @@ std::string VideoBackend::GetDisplayName() const return "OpenGL"; } -void GetShaders(std::vector &shaders) +static void GetShaders(std::vector &shaders) { std::set already_found; @@ -138,7 +138,7 @@ void GetShaders(std::vector &shaders) std::sort(shaders.begin(), shaders.end()); } -void InitBackendInfo() +static void InitBackendInfo() { g_Config.backend_info.APIType = API_OPENGL; g_Config.backend_info.bUseRGBATextures = true; diff --git a/Source/Core/VideoBackends/Software/Clipper.cpp b/Source/Core/VideoBackends/Software/Clipper.cpp index 9cd4195..9e8e603 100644 --- a/Source/Core/VideoBackends/Software/Clipper.cpp +++ b/Source/Core/VideoBackends/Software/Clipper.cpp @@ -47,10 +47,10 @@ namespace Clipper { enum { NUM_CLIPPED_VERTICES = 33, NUM_INDICES = NUM_CLIPPED_VERTICES + 3 }; - float m_ViewOffset[2]; + static float m_ViewOffset[2]; - OutputVertexData ClippedVertices[NUM_CLIPPED_VERTICES]; - OutputVertexData *Vertices[NUM_INDICES]; + static OutputVertexData ClippedVertices[NUM_CLIPPED_VERTICES]; + static OutputVertexData *Vertices[NUM_INDICES]; void DoState(PointerWrap &p) { @@ -169,7 +169,7 @@ namespace Clipper } \ } - void ClipTriangle(int *indices, int &numIndices) + static void ClipTriangle(int *indices, int &numIndices) { int mask = 0; @@ -218,7 +218,7 @@ namespace Clipper } } - void ClipLine(int *indices) + static void ClipLine(int *indices) { int mask = 0; int clip_mask[2] = { 0, 0 }; @@ -310,7 +310,7 @@ namespace Clipper } } - void CopyVertex(OutputVertexData *dst, OutputVertexData *src, float dx, float dy, unsigned int sOffset) + static void CopyVertex(OutputVertexData *dst, OutputVertexData *src, float dx, float dy, unsigned int sOffset) { dst->screenPosition.x = src->screenPosition.x + dx; dst->screenPosition.y = src->screenPosition.y + dy; diff --git a/Source/Core/VideoBackends/Software/DebugUtil.cpp b/Source/Core/VideoBackends/Software/DebugUtil.cpp index 8157567..c1a7980 100644 --- a/Source/Core/VideoBackends/Software/DebugUtil.cpp +++ b/Source/Core/VideoBackends/Software/DebugUtil.cpp @@ -11,10 +11,12 @@ #include "VideoBackends/Software/EfbInterface.h" #include "VideoBackends/Software/HwRasterizer.h" #include "VideoBackends/Software/SWCommandProcessor.h" +#include "VideoBackends/Software/SWRenderer.h" #include "VideoBackends/Software/SWStatistics.h" #include "VideoBackends/Software/SWVideoConfig.h" #include "VideoBackends/Software/TextureSampler.h" +#include "VideoCommon/Fifo.h" #include "VideoCommon/ImageWrite.h" @@ -51,7 +53,7 @@ void Shutdown() } } -void SaveTexture(const std::string& filename, u32 texmap, s32 mip) +static void SaveTexture(const std::string& filename, u32 texmap, s32 mip) { FourTexUnits& texUnit = bpmem.tex[(texmap >> 2) & 1]; u8 subTexmap = texmap & 3; @@ -65,7 +67,7 @@ void SaveTexture(const std::string& filename, u32 texmap, s32 mip) GetTextureRGBA(data, texmap, mip, width, height); - (void)TextureToPng(data, width*4, filename, width, height, true); + TextureToPng(data, width*4, filename, width, height, true); delete[] data; } @@ -82,7 +84,7 @@ void GetTextureRGBA(u8 *dst, u32 texmap, s32 mip, u32 width, u32 height) } } -s32 GetMaxTextureLod(u32 texmap) +static s32 GetMaxTextureLod(u32 texmap) { FourTexUnits& texUnit = bpmem.tex[(texmap >> 2) & 1]; u8 subTexmap = texmap & 3; @@ -130,7 +132,7 @@ void DumpActiveTextures() } } -void DumpEfb(const std::string& filename) +static void DumpEfb(const std::string& filename) { u8 *data = new u8[EFB_WIDTH * EFB_HEIGHT * 4]; u8 *writePtr = data; @@ -149,30 +151,15 @@ void DumpEfb(const std::string& filename) } } - (void)TextureToPng(data, EFB_WIDTH * 4, filename, EFB_WIDTH, EFB_HEIGHT, true); + TextureToPng(data, EFB_WIDTH * 4, filename, EFB_WIDTH, EFB_HEIGHT, true); delete[] data; } -void DumpDepth(const std::string& filename) -{ - u8 *data = new u8[EFB_WIDTH * EFB_HEIGHT * 4]; - u8 *writePtr = data; - for (int y = 0; y < EFB_HEIGHT; y++) - { - for (int x = 0; x < EFB_WIDTH; x++) - { - u32 depth = EfbInterface::GetDepth(x, y); - // depth to rgba - *(writePtr++) = depth & 0xff; - *(writePtr++) = (depth >> 8) & 0xff; - *(writePtr++) = (depth >> 16) & 0xff; - *(writePtr++) = 255; - } - } - (void)TextureToPng(data, EFB_WIDTH * 4, filename, EFB_WIDTH, EFB_HEIGHT, true); - delete[] data; +static void DumpColorTexture(const std::string& filename, u32 width, u32 height) +{ + TextureToPng(SWRenderer::getCurrentColorTexture(), width * 4, filename, width, height, true); } void DrawObjectBuffer(s16 x, s16 y, u8 *color, int bufferBase, int subBuffer, const char *name) @@ -251,7 +238,7 @@ void OnObjectEnd() File::GetUserPath(D_DUMPFRAMES_IDX).c_str(), swstats.thisFrame.numDrawnObjects, ObjectBufferName[i], i - BufferBase[i]); - (void)TextureToPng((u8*)ObjectBuffer[i], EFB_WIDTH * 4, filename, EFB_WIDTH, EFB_HEIGHT, true); + TextureToPng((u8*)ObjectBuffer[i], EFB_WIDTH * 4, filename, EFB_WIDTH, EFB_HEIGHT, true); memset(ObjectBuffer[i], 0, EFB_WIDTH * EFB_HEIGHT * sizeof(u32)); } @@ -261,16 +248,15 @@ void OnObjectEnd() } } -void OnFrameEnd() +// If frame dumping is enabled, dump whatever is drawn to the screen. +void OnFrameEnd(u32 width, u32 height) { if (!g_bSkipCurrentFrame) { if (g_SWVideoConfig.bDumpFrames) { - DumpEfb(StringFromFormat("%sframe%i_color.png", - File::GetUserPath(D_DUMPFRAMES_IDX).c_str(), swstats.frameCount)); - DumpDepth(StringFromFormat("%sframe%i_depth.png", - File::GetUserPath(D_DUMPFRAMES_IDX).c_str(), swstats.frameCount)); + DumpColorTexture(StringFromFormat("%sframe%i_color.png", + File::GetUserPath(D_DUMPFRAMES_IDX).c_str(), swstats.frameCount), width, height); } } } diff --git a/Source/Core/VideoBackends/Software/DebugUtil.h b/Source/Core/VideoBackends/Software/DebugUtil.h index e975b2a..6234e14 100644 --- a/Source/Core/VideoBackends/Software/DebugUtil.h +++ b/Source/Core/VideoBackends/Software/DebugUtil.h @@ -16,7 +16,7 @@ namespace DebugUtil void OnObjectBegin(); void OnObjectEnd(); - void OnFrameEnd(); + void OnFrameEnd(u32 width, u32 height); void DrawObjectBuffer(s16 x, s16 y, u8 *color, int bufferBase, int subBuffer, const char *name); diff --git a/Source/Core/VideoBackends/Software/EfbCopy.cpp b/Source/Core/VideoBackends/Software/EfbCopy.cpp index 6018e2b..479cc35 100644 --- a/Source/Core/VideoBackends/Software/EfbCopy.cpp +++ b/Source/Core/VideoBackends/Software/EfbCopy.cpp @@ -14,6 +14,7 @@ #include "VideoBackends/Software/SWStatistics.h" #include "VideoBackends/Software/SWVideoConfig.h" #include "VideoBackends/Software/TextureEncoder.h" +#include "VideoCommon/Fifo.h" static const float s_gammaLUT[] = { @@ -25,7 +26,7 @@ static const float s_gammaLUT[] = namespace EfbCopy { - void CopyToXfb(u32 xfbAddr, u32 fbWidth, u32 fbHeight, const EFBRectangle& sourceRc, float Gamma) + static void CopyToXfb(u32 xfbAddr, u32 fbWidth, u32 fbHeight, const EFBRectangle& sourceRc, float Gamma) { GLInterface->Update(); // update the render window position and the backbuffer size @@ -43,7 +44,7 @@ namespace EfbCopy else { // Ask SWRenderer for the next color texture - u8 *colorTexture = SWRenderer::getColorTexture(); + u8 *colorTexture = SWRenderer::getNextColorTexture(); EfbInterface::BypassXFB(colorTexture, fbWidth, fbHeight, sourceRc, Gamma); @@ -57,11 +58,12 @@ namespace EfbCopy // This requires careful synchronization since GPU commands // are processed on a different thread than VI commands. SWRenderer::Swap(fbWidth, fbHeight); + DebugUtil::OnFrameEnd(fbWidth, fbHeight); } } } - void CopyToRam() + static void CopyToRam() { if (!g_SWVideoConfig.bHwRasterizer) { @@ -71,7 +73,7 @@ namespace EfbCopy } } - void ClearEfb() + static void ClearEfb() { u32 clearColor = (bpmem.clearcolorAR & 0xff) << 24 | bpmem.clearcolorGB << 8 | (bpmem.clearcolorAR & 0xff00) >> 8; diff --git a/Source/Core/VideoBackends/Software/EfbInterface.cpp b/Source/Core/VideoBackends/Software/EfbInterface.cpp index 8187345..bf40586 100644 --- a/Source/Core/VideoBackends/Software/EfbInterface.cpp +++ b/Source/Core/VideoBackends/Software/EfbInterface.cpp @@ -14,7 +14,7 @@ #include "VideoCommon/PixelEngine.h" -u8 efb[EFB_WIDTH*EFB_HEIGHT*6]; +static u8 efb[EFB_WIDTH*EFB_HEIGHT*6]; namespace EfbInterface { @@ -35,7 +35,7 @@ namespace EfbInterface p.DoArray(efb, EFB_WIDTH*EFB_HEIGHT*6); } - void SetPixelAlphaOnly(u32 offset, u8 a) + static void SetPixelAlphaOnly(u32 offset, u8 a) { switch (bpmem.zcontrol.pixel_format) { @@ -58,7 +58,7 @@ namespace EfbInterface } } - void SetPixelColorOnly(u32 offset, u8 *rgb) + static void SetPixelColorOnly(u32 offset, u8 *rgb) { switch (bpmem.zcontrol.pixel_format) { @@ -98,7 +98,7 @@ namespace EfbInterface } } - void SetPixelAlphaColor(u32 offset, u8 *color) + static void SetPixelAlphaColor(u32 offset, u8 *color) { switch (bpmem.zcontrol.pixel_format) { @@ -139,7 +139,7 @@ namespace EfbInterface } } - void GetPixelColor(u32 offset, u8 *color) + static void GetPixelColor(u32 offset, u8 *color) { switch (bpmem.zcontrol.pixel_format) { @@ -175,7 +175,7 @@ namespace EfbInterface } } - void SetPixelDepth(u32 offset, u32 depth) + static void SetPixelDepth(u32 offset, u32 depth) { switch (bpmem.zcontrol.pixel_format) { @@ -203,7 +203,7 @@ namespace EfbInterface } } - u32 GetPixelDepth(u32 offset) + static u32 GetPixelDepth(u32 offset) { u32 depth = 0; @@ -229,7 +229,7 @@ namespace EfbInterface return depth; } - u32 GetSourceFactor(u8 *srcClr, u8 *dstClr, BlendMode::BlendFactor mode) + static u32 GetSourceFactor(u8 *srcClr, u8 *dstClr, BlendMode::BlendFactor mode) { switch (mode) { @@ -270,7 +270,7 @@ namespace EfbInterface return 0; } - u32 GetDestinationFactor(u8 *srcClr, u8 *dstClr, BlendMode::BlendFactor mode) + static u32 GetDestinationFactor(u8 *srcClr, u8 *dstClr, BlendMode::BlendFactor mode) { switch (mode) { @@ -311,7 +311,7 @@ namespace EfbInterface return 0; } - void BlendColor(u8 *srcClr, u8 *dstClr) + static void BlendColor(u8 *srcClr, u8 *dstClr) { u32 srcFactor = GetSourceFactor(srcClr, dstClr, bpmem.blendmode.srcfactor); u32 dstFactor = GetDestinationFactor(srcClr, dstClr, bpmem.blendmode.dstfactor); @@ -333,7 +333,7 @@ namespace EfbInterface } } - void LogicBlend(u32 srcClr, u32 &dstClr, BlendMode::LogicOp op) + static void LogicBlend(u32 srcClr, u32 &dstClr, BlendMode::LogicOp op) { switch (op) { @@ -388,7 +388,7 @@ namespace EfbInterface } } - void SubtractBlend(u8 *srcClr, u8 *dstClr) + static void SubtractBlend(u8 *srcClr, u8 *dstClr) { for (int i = 0; i < 4; i++) { @@ -558,7 +558,7 @@ namespace EfbInterface // Like CopyToXFB, but we copy directly into the opengl colour texture without going via GameCube main memory or doing a yuyv conversion void BypassXFB(u8* texture, u32 fbWidth, u32 fbHeight, const EFBRectangle& sourceRc, float Gamma) { - if (fbWidth*fbHeight > 640*568) { + if (fbWidth*fbHeight > MAX_XFB_WIDTH*MAX_XFB_HEIGHT) { ERROR_LOG(VIDEO, "Framebuffer is too large: %ix%i", fbWidth, fbHeight); return; } diff --git a/Source/Core/VideoBackends/Software/HwRasterizer.cpp b/Source/Core/VideoBackends/Software/HwRasterizer.cpp index 1a85b34..5645c26 100644 --- a/Source/Core/VideoBackends/Software/HwRasterizer.cpp +++ b/Source/Core/VideoBackends/Software/HwRasterizer.cpp @@ -16,11 +16,11 @@ namespace HwRasterizer { - float efbHalfWidth; - float efbHalfHeight; - bool hasTexture; + static float efbHalfWidth; + static float efbHalfHeight; + static bool hasTexture; - u8 *temp; + static u8 *temp; // Programs static GLuint colProg, texProg, clearProg; @@ -35,7 +35,7 @@ namespace HwRasterizer // Clear shader static GLint clear_apos = -1, clear_ucol = -1; - void CreateShaders() + static void CreateShaders() { // Color Vertices static const char *fragcolText = @@ -155,7 +155,7 @@ namespace HwRasterizer GL_REPORT_ERRORD(); } static float width, height; - void LoadTexture() + static void LoadTexture() { FourTexUnits &texUnit = bpmem.tex[0]; u32 imageAddr = texUnit.texImage3[0].image_base; @@ -199,7 +199,7 @@ namespace HwRasterizer glDisable(GL_BLEND); } - void DrawColorVertex(OutputVertexData *v0, OutputVertexData *v1, OutputVertexData *v2) + static void DrawColorVertex(OutputVertexData *v0, OutputVertexData *v1, OutputVertexData *v2) { float x0 = (v0->screenPosition.x / efbHalfWidth) - 1.0f; float y0 = 1.0f - (v0->screenPosition.y / efbHalfHeight); @@ -249,7 +249,7 @@ namespace HwRasterizer GL_REPORT_ERRORD(); } - void DrawTextureVertex(OutputVertexData *v0, OutputVertexData *v1, OutputVertexData *v2) + static void DrawTextureVertex(OutputVertexData *v0, OutputVertexData *v1, OutputVertexData *v2) { float x0 = (v0->screenPosition.x / efbHalfWidth) - 1.0f; float y0 = 1.0f - (v0->screenPosition.y / efbHalfHeight); diff --git a/Source/Core/VideoBackends/Software/OpcodeDecoder.cpp b/Source/Core/VideoBackends/Software/OpcodeDecoder.cpp index 52bd632..33863c8 100644 --- a/Source/Core/VideoBackends/Software/OpcodeDecoder.cpp +++ b/Source/Core/VideoBackends/Software/OpcodeDecoder.cpp @@ -14,6 +14,7 @@ #include "VideoBackends/Software/SWVideoConfig.h" #include "VideoBackends/Software/XFMemLoader.h" #include "VideoCommon/DataReader.h" +#include "VideoCommon/Fifo.h" typedef void (*DecodingFunction)(u32); @@ -43,7 +44,7 @@ void DoState(PointerWrap &p) ResetDecoding(); } -void DecodePrimitiveStream(u32 iBufferSize) +static void DecodePrimitiveStream(u32 iBufferSize) { u32 vertexSize = vertexLoader.GetVertexSize(); @@ -77,7 +78,7 @@ void DecodePrimitiveStream(u32 iBufferSize) } } -void ReadXFData(u32 iBufferSize) +static void ReadXFData(u32 iBufferSize) { _assert_msg_(VIDEO, iBufferSize >= (u32)(streamSize * 4), "Underflow during standard opcode decoding"); @@ -90,7 +91,7 @@ void ReadXFData(u32 iBufferSize) ResetDecoding(); } -void ExecuteDisplayList(u32 addr, u32 count) +static void ExecuteDisplayList(u32 addr, u32 count) { u8 *videoDataSave = g_pVideoData; @@ -114,7 +115,7 @@ void ExecuteDisplayList(u32 addr, u32 count) g_pVideoData = videoDataSave; } -void DecodeStandard(u32 bufferSize) +static void DecodeStandard(u32 bufferSize) { _assert_msg_(VIDEO, CommandRunnable(bufferSize), "Underflow during standard opcode decoding"); diff --git a/Source/Core/VideoBackends/Software/Rasterizer.cpp b/Source/Core/VideoBackends/Software/Rasterizer.cpp index 915757f..1a5e469 100644 --- a/Source/Core/VideoBackends/Software/Rasterizer.cpp +++ b/Source/Core/VideoBackends/Software/Rasterizer.cpp @@ -32,23 +32,23 @@ static inline s32 FixedLog2(float f) namespace Rasterizer { -Slope ZSlope; -Slope WSlope; -Slope ColorSlopes[2][4]; -Slope TexSlopes[8][3]; +static Slope ZSlope; +static Slope WSlope; +static Slope ColorSlopes[2][4]; +static Slope TexSlopes[8][3]; -s32 vertex0X; -s32 vertex0Y; -float vertexOffsetX; -float vertexOffsetY; +static s32 vertex0X; +static s32 vertex0Y; +static float vertexOffsetX; +static float vertexOffsetY; -s32 scissorLeft = 0; -s32 scissorTop = 0; -s32 scissorRight = 0; -s32 scissorBottom = 0; +static s32 scissorLeft = 0; +static s32 scissorTop = 0; +static s32 scissorRight = 0; +static s32 scissorBottom = 0; -Tev tev; -RasterBlock rasterBlock; +static Tev tev; +static RasterBlock rasterBlock; void DoState(PointerWrap &p) { @@ -183,7 +183,7 @@ inline void Draw(s32 x, s32 y, s32 xi, s32 yi) tev.Draw(); } -void InitTriangle(float X1, float Y1, s32 xi, s32 yi) +static void InitTriangle(float X1, float Y1, s32 xi, s32 yi) { vertex0X = xi; vertex0Y = yi; @@ -195,7 +195,7 @@ void InitTriangle(float X1, float Y1, s32 xi, s32 yi) vertexOffsetY = ((float)yi - Y1) + adjust; } -void InitSlope(Slope *slope, float f1, float f2, float f3, float DX31, float DX12, float DY12, float DY31) +static void InitSlope(Slope *slope, float f1, float f2, float f3, float DX31, float DX12, float DY12, float DY31) { float DF31 = f3 - f1; float DF21 = f2 - f1; @@ -253,7 +253,7 @@ inline void CalculateLOD(s32 &lod, bool &linear, u32 texmap, u32 texcoord) lod = CLAMP(lod, (s32)tm1.min_lod, (s32)tm1.max_lod); } -void BuildBlock(s32 blockX, s32 blockY) +static void BuildBlock(s32 blockX, s32 blockY) { for (s32 yi = 0; yi < BLOCK_SIZE; yi++) { diff --git a/Source/Core/VideoBackends/Software/SWCommandProcessor.cpp b/Source/Core/VideoBackends/Software/SWCommandProcessor.cpp index d310a55..4f4790e 100644 --- a/Source/Core/VideoBackends/Software/SWCommandProcessor.cpp +++ b/Source/Core/VideoBackends/Software/SWCommandProcessor.cpp @@ -20,6 +20,8 @@ #include "VideoBackends/Software/SWCommandProcessor.h" #include "VideoBackends/Software/VideoBackend.h" +#include "VideoCommon/DataReader.h" +#include "VideoCommon/Fifo.h" namespace SWCommandProcessor { @@ -33,16 +35,16 @@ enum // STATE_TO_SAVE // variables -const int commandBufferSize = 1024 * 1024; -const int maxCommandBufferWrite = commandBufferSize - GATHER_PIPE_SIZE; -u8 commandBuffer[commandBufferSize]; -u32 readPos; -u32 writePos; -int et_UpdateInterrupts; -volatile bool interruptSet; -volatile bool interruptWaiting; +static const int commandBufferSize = 1024 * 1024; +static const int maxCommandBufferWrite = commandBufferSize - GATHER_PIPE_SIZE; +static u8 commandBuffer[commandBufferSize]; +static u32 readPos; +static u32 writePos; +static int et_UpdateInterrupts; +static volatile bool interruptSet; +static volatile bool interruptWaiting; -CPReg cpreg; // shared between gfx and emulator thread +static CPReg cpreg; // shared between gfx and emulator thread void DoState(PointerWrap &p) { @@ -66,7 +68,7 @@ inline u16 ReadLow (u32 _reg) {return (u16)(_reg & 0xFFFF);} inline u16 ReadHigh (u32 _reg) {return (u16)(_reg >> 16);} -void UpdateInterrupts_Wrapper(u64 userdata, int cyclesLate) +static void UpdateInterrupts_Wrapper(u64 userdata, int cyclesLate) { UpdateInterrupts(userdata); } @@ -219,7 +221,7 @@ void UpdateInterruptsFromVideoBackend(u64 userdata) CoreTiming::ScheduleEvent_Threadsafe(0, et_UpdateInterrupts, userdata); } -void ReadFifo() +static void ReadFifo() { bool canRead = cpreg.readptr != cpreg.writeptr && writePos < (int)maxCommandBufferWrite; bool atBreakpoint = AtBreakpoint(); @@ -256,7 +258,7 @@ void ReadFifo() } } -void SetStatus() +static void SetStatus() { // overflow check if (cpreg.rwdistance > cpreg.hiwatermark) diff --git a/Source/Core/VideoBackends/Software/SWCommandProcessor.h b/Source/Core/VideoBackends/Software/SWCommandProcessor.h index dbedc10..6102921 100644 --- a/Source/Core/VideoBackends/Software/SWCommandProcessor.h +++ b/Source/Core/VideoBackends/Software/SWCommandProcessor.h @@ -11,9 +11,6 @@ class PointerWrap; namespace MMIO { class Mapping; } -extern volatile bool g_bSkipCurrentFrame; -extern u8* g_pVideoData; - namespace SWCommandProcessor { using UCPStatusReg = CommandProcessor::UCPStatusReg; @@ -44,8 +41,6 @@ namespace SWCommandProcessor u32 breakpt; // 0x3c }; - extern CPReg cpreg; - // Init void Init(); void Shutdown(); diff --git a/Source/Core/VideoBackends/Software/SWRenderer.cpp b/Source/Core/VideoBackends/Software/SWRenderer.cpp index ef6c491..f94fad5 100644 --- a/Source/Core/VideoBackends/Software/SWRenderer.cpp +++ b/Source/Core/VideoBackends/Software/SWRenderer.cpp @@ -32,7 +32,7 @@ static std::string s_sScreenshotName; // Rasterfont isn't compatible with GLES // degasus: I think it does, but I can't test it -RasterFont* s_pfont = nullptr; +static RasterFont* s_pfont = nullptr; void SWRenderer::Init() { @@ -52,7 +52,7 @@ void SWRenderer::Shutdown() } } -void CreateShaders() +static void CreateShaders() { static const char *fragShaderText = "#ifdef GL_ES\n" @@ -86,8 +86,8 @@ void CreateShaders() void SWRenderer::Prepare() { - s_xfbColorTexture[0] = new u8[640*568*4]; - s_xfbColorTexture[1] = new u8[640*568*4]; + s_xfbColorTexture[0] = new u8[MAX_XFB_WIDTH*MAX_XFB_HEIGHT*4]; + s_xfbColorTexture[1] = new u8[MAX_XFB_WIDTH*MAX_XFB_HEIGHT*4]; s_currentColorTexture = 0; @@ -152,23 +152,27 @@ void SWRenderer::DrawDebugText() SWRenderer::RenderText(debugtext.c_str(), 20, 20, 0xFFFFFF00); } -u8* SWRenderer::getColorTexture() { +u8* SWRenderer::getNextColorTexture() { return s_xfbColorTexture[!s_currentColorTexture]; } +u8* SWRenderer::getCurrentColorTexture() { + return s_xfbColorTexture[s_currentColorTexture]; +} + void SWRenderer::swapColorTexture() { s_currentColorTexture = !s_currentColorTexture; } void SWRenderer::UpdateColorTexture(EfbInterface::yuv422_packed *xfb, u32 fbWidth, u32 fbHeight) { - if (fbWidth*fbHeight > 640*568) { + if (fbWidth*fbHeight > MAX_XFB_WIDTH*MAX_XFB_HEIGHT) { ERROR_LOG(VIDEO, "Framebuffer is too large: %ix%i", fbWidth, fbHeight); return; } u32 offset = 0; - u8 *TexturePointer = getColorTexture(); + u8 *TexturePointer = getNextColorTexture(); for (u16 y = 0; y < fbHeight; y++) { @@ -182,14 +186,14 @@ void SWRenderer::UpdateColorTexture(EfbInterface::yuv422_packed *xfb, u32 fbWidt // We do the inverse BT.601 conversion for YCbCr to RGB // http://www.equasys.de/colorconversion.html#YCbCr-RGBColorFormatConversion - TexturePointer[offset++] = std::min(255.0f, std::max(0.0f, 1.164f * Y1 + 1.596f * V)); - TexturePointer[offset++] = std::min(255.0f, std::max(0.0f, 1.164f * Y1 - 0.392f * U - 0.813f * V)); - TexturePointer[offset++] = std::min(255.0f, std::max(0.0f, 1.164f * Y1 + 2.017f * U )); + TexturePointer[offset++] = MathUtil::Clamp(int(1.164f * Y1 + 1.596f * V), 0, 255); + TexturePointer[offset++] = MathUtil::Clamp(int(1.164f * Y1 - 0.392f * U - 0.813f * V), 0, 255); + TexturePointer[offset++] = MathUtil::Clamp(int(1.164f * Y1 + 2.017f * U ), 0, 255); TexturePointer[offset++] = 255; - TexturePointer[offset++] = std::min(255.0f, std::max(0.0f, 1.164f * Y2 + 1.596f * V)); - TexturePointer[offset++] = std::min(255.0f, std::max(0.0f, 1.164f * Y2 - 0.392f * U - 0.813f * V)); - TexturePointer[offset++] = std::min(255.0f, std::max(0.0f, 1.164f * Y2 + 2.017f * U )); + TexturePointer[offset++] = MathUtil::Clamp(int(1.164f * Y2 + 1.596f * V), 0, 255); + TexturePointer[offset++] = MathUtil::Clamp(int(1.164f * Y2 - 0.392f * U - 0.813f * V), 0, 255); + TexturePointer[offset++] = MathUtil::Clamp(int(1.164f * Y2 + 2.017f * U ), 0, 255); TexturePointer[offset++] = 255; } xfb += fbWidth; @@ -202,7 +206,7 @@ void SWRenderer::Swap(u32 fbWidth, u32 fbHeight) { GLInterface->Update(); // just updates the render window position and the backbuffer size if (!g_SWVideoConfig.bHwRasterizer) - SWRenderer::DrawTexture(s_xfbColorTexture[s_currentColorTexture], fbWidth, fbHeight); + SWRenderer::DrawTexture(getCurrentColorTexture(), fbWidth, fbHeight); swstats.frameCount++; SWRenderer::SwapBuffer(); diff --git a/Source/Core/VideoBackends/Software/SWRenderer.h b/Source/Core/VideoBackends/Software/SWRenderer.h index 83970ef..e9ac11c 100644 --- a/Source/Core/VideoBackends/Software/SWRenderer.h +++ b/Source/Core/VideoBackends/Software/SWRenderer.h @@ -18,7 +18,8 @@ namespace SWRenderer void RenderText(const char* pstr, int left, int top, u32 color); void DrawDebugText(); - u8* getColorTexture(); + u8* getNextColorTexture(); + u8* getCurrentColorTexture(); void swapColorTexture(); void UpdateColorTexture(EfbInterface::yuv422_packed *xfb, u32 fbWidth, u32 fbHeight); void DrawTexture(u8 *texture, int width, int height); diff --git a/Source/Core/VideoBackends/Software/SWVertexLoader.cpp b/Source/Core/VideoBackends/Software/SWVertexLoader.cpp index f0cc09e..52af0ae 100644 --- a/Source/Core/VideoBackends/Software/SWVertexLoader.cpp +++ b/Source/Core/VideoBackends/Software/SWVertexLoader.cpp @@ -12,20 +12,13 @@ #include "VideoBackends/Software/XFMemLoader.h" #include "VideoCommon/DataReader.h" +#include "VideoCommon/VertexLoader.h" #include "VideoCommon/VertexLoader_Color.h" #include "VideoCommon/VertexLoader_Normal.h" #include "VideoCommon/VertexLoader_Position.h" #include "VideoCommon/VertexLoader_TextCoord.h" #include "VideoCommon/VertexManagerBase.h" -// Vertex loaders read these -extern int tcIndex; -extern int colIndex; -extern int colElements[2]; -extern float posScale; -extern float tcScale[8]; - - SWVertexLoader::SWVertexLoader() : m_VertexSize(0), m_NumAttributeLoaders(0) diff --git a/Source/Core/VideoBackends/Software/SWmain.cpp b/Source/Core/VideoBackends/Software/SWmain.cpp index 6fe4cf4..c4a6d2f 100644 --- a/Source/Core/VideoBackends/Software/SWmain.cpp +++ b/Source/Core/VideoBackends/Software/SWmain.cpp @@ -35,6 +35,7 @@ #include "VideoBackends/Software/VideoConfigDialog.h" #endif // HAVE_WX +#include "VideoCommon/Fifo.h" #include "VideoCommon/OnScreenDisplay.h" #include "VideoCommon/PixelEngine.h" #include "VideoCommon/XFMemory.h" @@ -62,11 +63,6 @@ std::string VideoSoftware::GetName() const return _trans("Software Renderer"); } -void *DllDebugger(void *_hParent, bool Show) -{ - return nullptr; -} - void VideoSoftware::ShowConfig(void *_hParent) { #if defined(HAVE_WX) && HAVE_WX @@ -243,6 +239,9 @@ void VideoSoftware::Video_EndField() // If BypassXFB has already done a swap (cf. EfbCopy::CopyToXfb), skip this. if (!g_SWVideoConfig.bBypassXFB) { + // Dump frame if needed + DebugUtil::OnFrameEnd(s_beginFieldArgs.fbWidth, s_beginFieldArgs.fbHeight); + // If we are in dual core mode, notify the GPU thread about the new color texture. if (SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread) Common::AtomicStoreRelease(s_swapRequested, true); diff --git a/Source/Core/VideoBackends/Software/TextureEncoder.cpp b/Source/Core/VideoBackends/Software/TextureEncoder.cpp index 5913125..8351d39 100644 --- a/Source/Core/VideoBackends/Software/TextureEncoder.cpp +++ b/Source/Core/VideoBackends/Software/TextureEncoder.cpp @@ -196,7 +196,7 @@ inline void boxfilterRGB_to_xx8(u8 *src, u8 &x1, u8 &x2, int comp1, int comp2) x2 = x16_2 >> 2; } -void SetBlockDimensions(int blkWidthLog2, int blkHeightLog2, u16 &sBlkCount, u16 &tBlkCount, u16 &sBlkSize, u16 &tBlkSize) +static void SetBlockDimensions(int blkWidthLog2, int blkHeightLog2, u16 &sBlkCount, u16 &tBlkCount, u16 &sBlkSize, u16 &tBlkSize) { // if half_scale is 1 then the size is cut in half u32 width = bpmem.copyTexSrcWH.x >> bpmem.triggerEFBCopy.half_scale; @@ -209,7 +209,7 @@ void SetBlockDimensions(int blkWidthLog2, int blkHeightLog2, u16 &sBlkCount, u16 tBlkSize = 1 << blkHeightLog2; } -void SetSpans(int sBlkSize, int tBlkSize, s32 &tSpan, s32 &sBlkSpan, s32 &tBlkSpan, s32 &writeStride) +static void SetSpans(int sBlkSize, int tBlkSize, s32 &tSpan, s32 &sBlkSpan, s32 &tBlkSpan, s32 &writeStride) { // width is 1 less than the number of pixels of width u32 width = bpmem.copyTexSrcWH.x >> bpmem.triggerEFBCopy.half_scale; @@ -253,7 +253,7 @@ void SetSpans(int sBlkSize, int tBlkSize, s32 &tSpan, s32 &sBlkSpan, s32 &tBlkSp dstBlockStart += writeStride; \ } \ -void EncodeRGBA6(u8 *dst, u8 *src, u32 format) +static void EncodeRGBA6(u8 *dst, u8 *src, u32 format) { u16 sBlkCount, tBlkCount, sBlkSize, tBlkSize; s32 tSpan, sBlkSpan, tBlkSpan, writeStride; @@ -490,7 +490,7 @@ void EncodeRGBA6(u8 *dst, u8 *src, u32 format) } -void EncodeRGBA6halfscale(u8 *dst, u8 *src, u32 format) +static void EncodeRGBA6halfscale(u8 *dst, u8 *src, u32 format) { u16 sBlkCount, tBlkCount, sBlkSize, tBlkSize; s32 tSpan, sBlkSpan, tBlkSpan, writeStride; @@ -725,7 +725,7 @@ void EncodeRGBA6halfscale(u8 *dst, u8 *src, u32 format) } } -void EncodeRGB8(u8 *dst, u8 *src, u32 format) +static void EncodeRGB8(u8 *dst, u8 *src, u32 format) { u16 sBlkCount, tBlkCount, sBlkSize, tBlkSize; s32 tSpan, sBlkSpan, tBlkSpan, writeStride; @@ -939,7 +939,7 @@ void EncodeRGB8(u8 *dst, u8 *src, u32 format) } } -void EncodeRGB8halfscale(u8 *dst, u8 *src, u32 format) +static void EncodeRGB8halfscale(u8 *dst, u8 *src, u32 format) { u16 sBlkCount, tBlkCount, sBlkSize, tBlkSize; s32 tSpan, sBlkSpan, tBlkSpan, writeStride; @@ -1170,7 +1170,7 @@ void EncodeRGB8halfscale(u8 *dst, u8 *src, u32 format) } } -void EncodeZ24(u8 *dst, u8 *src, u32 format) +static void EncodeZ24(u8 *dst, u8 *src, u32 format) { u16 sBlkCount, tBlkCount, sBlkSize, tBlkSize; s32 tSpan, sBlkSpan, tBlkSpan, writeStride; @@ -1274,7 +1274,7 @@ void EncodeZ24(u8 *dst, u8 *src, u32 format) } } -void EncodeZ24halfscale(u8 *dst, u8 *src, u32 format) +static void EncodeZ24halfscale(u8 *dst, u8 *src, u32 format) { u16 sBlkCount, tBlkCount, sBlkSize, tBlkSize; s32 tSpan, sBlkSpan, tBlkSpan, writeStride; diff --git a/Source/Core/VideoBackends/Software/TransformUnit.cpp b/Source/Core/VideoBackends/Software/TransformUnit.cpp index f79c57b..e0907d7 100644 --- a/Source/Core/VideoBackends/Software/TransformUnit.cpp +++ b/Source/Core/VideoBackends/Software/TransformUnit.cpp @@ -19,42 +19,42 @@ namespace TransformUnit { -void MultiplyVec2Mat24(const Vec3 &vec, const float *mat, Vec3 &result) +static void MultiplyVec2Mat24(const Vec3 &vec, const float *mat, Vec3 &result) { result.x = mat[0] * vec.x + mat[1] * vec.y + mat[2] + mat[3]; result.y = mat[4] * vec.x + mat[5] * vec.y + mat[6] + mat[7]; result.z = 1.0f; } -void MultiplyVec2Mat34(const Vec3 &vec, const float *mat, Vec3 &result) +static void MultiplyVec2Mat34(const Vec3 &vec, const float *mat, Vec3 &result) { result.x = mat[0] * vec.x + mat[1] * vec.y + mat[2] + mat[3]; result.y = mat[4] * vec.x + mat[5] * vec.y + mat[6] + mat[7]; result.z = mat[8] * vec.x + mat[9] * vec.y + mat[10] + mat[11]; } -void MultiplyVec3Mat33(const Vec3 &vec, const float *mat, Vec3 &result) +static void MultiplyVec3Mat33(const Vec3 &vec, const float *mat, Vec3 &result) { result.x = mat[0] * vec.x + mat[1] * vec.y + mat[2] * vec.z; result.y = mat[3] * vec.x + mat[4] * vec.y + mat[5] * vec.z; result.z = mat[6] * vec.x + mat[7] * vec.y + mat[8] * vec.z; } -void MultiplyVec3Mat24(const Vec3 &vec, const float *mat, Vec3 &result) +static void MultiplyVec3Mat24(const Vec3 &vec, const float *mat, Vec3 &result) { result.x = mat[0] * vec.x + mat[1] * vec.y + mat[2] * vec.z + mat[3]; result.y = mat[4] * vec.x + mat[5] * vec.y + mat[6] * vec.z + mat[7]; result.z = 1.0f; } -void MultiplyVec3Mat34(const Vec3 &vec, const float *mat, Vec3 &result) +static void MultiplyVec3Mat34(const Vec3 &vec, const float *mat, Vec3 &result) { result.x = mat[0] * vec.x + mat[1] * vec.y + mat[2] * vec.z + mat[3]; result.y = mat[4] * vec.x + mat[5] * vec.y + mat[6] * vec.z + mat[7]; result.z = mat[8] * vec.x + mat[9] * vec.y + mat[10] * vec.z + mat[11]; } -void MultipleVec3Perspective(const Vec3 &vec, const float *proj, Vec4 &result) +static void MultipleVec3Perspective(const Vec3 &vec, const float *proj, Vec4 &result) { result.x = proj[0] * vec.x + proj[1] * vec.z; result.y = proj[2] * vec.y + proj[3] * vec.z; @@ -63,7 +63,7 @@ void MultipleVec3Perspective(const Vec3 &vec, const float *proj, Vec4 &result) result.w = -vec.z; } -void MultipleVec3Ortho(const Vec3 &vec, const float *proj, Vec4 &result) +static void MultipleVec3Ortho(const Vec3 &vec, const float *proj, Vec4 &result) { result.x = proj[0] * vec.x + proj[1]; result.y = proj[2] * vec.y + proj[3]; @@ -104,7 +104,7 @@ void TransformNormal(const InputVertexData *src, bool nbt, OutputVertexData *dst } } -void TransformTexCoordRegular(const TexMtxInfo &texinfo, int coordNum, bool specialCase, const InputVertexData *srcVertex, OutputVertexData *dstVertex) +static void TransformTexCoordRegular(const TexMtxInfo &texinfo, int coordNum, bool specialCase, const InputVertexData *srcVertex, OutputVertexData *dstVertex) { const Vec3 *src; switch (texinfo.sourcerow) @@ -208,7 +208,7 @@ inline float SafeDivide(float n, float d) return (d==0) ? (n>0?1:0) : n/d; } -void LightColor(const Vec3 &pos, const Vec3 &normal, u8 lightNum, const LitChannel &chan, Vec3 &lightCol) +static void LightColor(const Vec3 &pos, const Vec3 &normal, u8 lightNum, const LitChannel &chan, Vec3 &lightCol) { const LightPointer *light = (const LightPointer*)&xfmem.lights[lightNum]; @@ -293,7 +293,7 @@ void LightColor(const Vec3 &pos, const Vec3 &normal, u8 lightNum, const LitChann } } -void LightAlpha(const Vec3 &pos, const Vec3 &normal, u8 lightNum, const LitChannel &chan, float &lightCol) +static void LightAlpha(const Vec3 &pos, const Vec3 &normal, u8 lightNum, const LitChannel &chan, float &lightCol) { const LightPointer *light = (const LightPointer*)&xfmem.lights[lightNum]; diff --git a/Source/Core/VideoCommon/AVIDump.cpp b/Source/Core/VideoCommon/AVIDump.cpp index f3b5da6..075ab27 100644 --- a/Source/Core/VideoCommon/AVIDump.cpp +++ b/Source/Core/VideoCommon/AVIDump.cpp @@ -88,6 +88,7 @@ bool AVIDump::CreateFile() m_frameCount = 0; m_samplesSound = 0; std::string movie_file_name = StringFromFormat("%sframedump%d.avi", File::GetUserPath(D_DUMPFRAMES_IDX).c_str(), m_fileCount); + // Create path File::CreateFullPath(movie_file_name); @@ -547,14 +548,20 @@ extern "C" { #include } -AVFormatContext *s_FormatContext = nullptr; -AVStream *s_Stream = nullptr; -AVFrame *s_BGRFrame = nullptr, *s_YUVFrame = nullptr; -uint8_t *s_YUVBuffer = nullptr; -uint8_t *s_OutBuffer = nullptr; -int s_width; -int s_height; -int s_size; +#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(55, 28, 1) +#define av_frame_alloc avcodec_alloc_frame +#define av_frame_free avcodec_free_frame +#endif + +static AVFormatContext* s_format_context = nullptr; +static AVStream* s_stream = nullptr; +static AVFrame* s_src_frame = nullptr; +static AVFrame* s_scaled_frame = nullptr; +static uint8_t* s_yuv_buffer = nullptr; +static SwsContext* s_sws_context = nullptr; +static int s_width; +static int s_height; +static int s_size; static void InitAVCodec() { @@ -572,143 +579,153 @@ bool AVIDump::Start(int w, int h) s_height = h; InitAVCodec(); - return CreateFile(); + bool success = CreateFile(); + if (!success) + CloseFile(); + return success; } bool AVIDump::CreateFile() { - AVCodec *codec = nullptr; + AVCodec* codec = nullptr; - s_FormatContext = avformat_alloc_context(); - snprintf(s_FormatContext->filename, sizeof(s_FormatContext->filename), "%s", - (File::GetUserPath(D_DUMPFRAMES_IDX) + "framedump0.avi").c_str()); - File::CreateFullPath(s_FormatContext->filename); + s_format_context = avformat_alloc_context(); + snprintf(s_format_context->filename, sizeof(s_format_context->filename), "%s", + (File::GetUserPath(D_DUMPFRAMES_IDX) + "framedump0.avi").c_str()); + File::CreateFullPath(s_format_context->filename); - if (!(s_FormatContext->oformat = av_guess_format("avi", nullptr, nullptr)) || - !(s_Stream = avformat_new_stream(s_FormatContext, codec))) + if (!(s_format_context->oformat = av_guess_format("avi", nullptr, nullptr)) || + !(s_stream = avformat_new_stream(s_format_context, codec))) { - CloseFile(); return false; } - s_Stream->codec->codec_id = - g_Config.bUseFFV1 ? CODEC_ID_FFV1 : s_FormatContext->oformat->video_codec; - s_Stream->codec->codec_type = AVMEDIA_TYPE_VIDEO; - s_Stream->codec->bit_rate = 400000; - s_Stream->codec->width = s_width; - s_Stream->codec->height = s_height; - s_Stream->codec->time_base = (AVRational){1, static_cast(VideoInterface::TargetRefreshRate)}; - s_Stream->codec->gop_size = 12; - s_Stream->codec->pix_fmt = g_Config.bUseFFV1 ? PIX_FMT_BGRA : PIX_FMT_YUV420P; + s_stream->codec->codec_id = g_Config.bUseFFV1 ? AV_CODEC_ID_FFV1 + : s_format_context->oformat->video_codec; + s_stream->codec->codec_type = AVMEDIA_TYPE_VIDEO; + s_stream->codec->bit_rate = 400000; + s_stream->codec->width = s_width; + s_stream->codec->height = s_height; + s_stream->codec->time_base = (AVRational){1, static_cast(VideoInterface::TargetRefreshRate)}; + s_stream->codec->gop_size = 12; + s_stream->codec->pix_fmt = g_Config.bUseFFV1 ? AV_PIX_FMT_BGRA : AV_PIX_FMT_YUV420P; - if (!(codec = avcodec_find_encoder(s_Stream->codec->codec_id)) || - (avcodec_open2(s_Stream->codec, codec, nullptr) < 0)) + if (!(codec = avcodec_find_encoder(s_stream->codec->codec_id)) || + (avcodec_open2(s_stream->codec, codec, nullptr) < 0)) { - CloseFile(); return false; } - s_BGRFrame = avcodec_alloc_frame(); - s_YUVFrame = avcodec_alloc_frame(); - - s_size = avpicture_get_size(s_Stream->codec->pix_fmt, s_width, s_height); + s_src_frame = av_frame_alloc(); + s_scaled_frame = av_frame_alloc(); - s_YUVBuffer = new uint8_t[s_size]; - avpicture_fill((AVPicture *)s_YUVFrame, s_YUVBuffer, s_Stream->codec->pix_fmt, s_width, s_height); + s_size = avpicture_get_size(s_stream->codec->pix_fmt, s_width, s_height); - s_OutBuffer = new uint8_t[s_size]; + s_yuv_buffer = new uint8_t[s_size]; + avpicture_fill((AVPicture*)s_scaled_frame, s_yuv_buffer, s_stream->codec->pix_fmt, s_width, s_height); - NOTICE_LOG(VIDEO, "Opening file %s for dumping", s_FormatContext->filename); - if (avio_open(&s_FormatContext->pb, s_FormatContext->filename, AVIO_FLAG_WRITE) < 0) + NOTICE_LOG(VIDEO, "Opening file %s for dumping", s_format_context->filename); + if (avio_open(&s_format_context->pb, s_format_context->filename, AVIO_FLAG_WRITE) < 0) { - WARN_LOG(VIDEO, "Could not open %s", s_FormatContext->filename); - CloseFile(); + WARN_LOG(VIDEO, "Could not open %s", s_format_context->filename); return false; } - avformat_write_header(s_FormatContext, nullptr); + avformat_write_header(s_format_context, nullptr); return true; } +static void PreparePacket(AVPacket* pkt) +{ + av_init_packet(pkt); + pkt->data = nullptr; + pkt->size = 0; + if (s_stream->codec->coded_frame->pts != AV_NOPTS_VALUE) + { + pkt->pts = av_rescale_q(s_stream->codec->coded_frame->pts, + s_stream->codec->time_base, s_stream->time_base); + } + if (s_stream->codec->coded_frame->key_frame) + pkt->flags |= AV_PKT_FLAG_KEY; + pkt->stream_index = s_stream->index; +} + void AVIDump::AddFrame(const u8* data, int width, int height) { - avpicture_fill((AVPicture *)s_BGRFrame, const_cast(data), PIX_FMT_BGR24, width, height); + avpicture_fill((AVPicture*)s_src_frame, const_cast(data), AV_PIX_FMT_BGR24, width, height); // Convert image from BGR24 to desired pixel format, and scale to initial // width and height - struct SwsContext *s_SwsContext; - if ((s_SwsContext = sws_getContext(width, height, PIX_FMT_BGR24, s_width, s_height, - s_Stream->codec->pix_fmt, SWS_BICUBIC, nullptr, nullptr, nullptr))) + if ((s_sws_context = sws_getCachedContext(s_sws_context, + width, height, AV_PIX_FMT_BGR24, + s_width, s_height, s_stream->codec->pix_fmt, + SWS_BICUBIC, nullptr, nullptr, nullptr))) { - sws_scale(s_SwsContext, s_BGRFrame->data, s_BGRFrame->linesize, 0, - height, s_YUVFrame->data, s_YUVFrame->linesize); - sws_freeContext(s_SwsContext); + sws_scale(s_sws_context, s_src_frame->data, s_src_frame->linesize, 0, + height, s_scaled_frame->data, s_scaled_frame->linesize); } - // Encode and write the image - int outsize = avcodec_encode_video(s_Stream->codec, s_OutBuffer, s_size, s_YUVFrame); - while (outsize > 0) - { - AVPacket pkt; - av_init_packet(&pkt); - - if (s_Stream->codec->coded_frame->pts != (unsigned int)AV_NOPTS_VALUE) - pkt.pts = av_rescale_q(s_Stream->codec->coded_frame->pts, - s_Stream->codec->time_base, s_Stream->time_base); - if (s_Stream->codec->coded_frame->key_frame) - pkt.flags |= AV_PKT_FLAG_KEY; - pkt.stream_index = s_Stream->index; - pkt.data = s_OutBuffer; - pkt.size = outsize; + s_scaled_frame->format = s_stream->codec->pix_fmt; + s_scaled_frame->width = s_width; + s_scaled_frame->height = s_height; - // Write the compressed frame in the media file - av_interleaved_write_frame(s_FormatContext, &pkt); + // Encode and write the image. + AVPacket pkt; + PreparePacket(&pkt); + int got_packet; + int error = avcodec_encode_video2(s_stream->codec, &pkt, s_scaled_frame, &got_packet); + while (!error && got_packet) + { + // Write the compressed frame in the media file. + av_interleaved_write_frame(s_format_context, &pkt); - // Encode delayed frames - outsize = avcodec_encode_video(s_Stream->codec, s_OutBuffer, s_size, nullptr); + // Handle delayed frames. + PreparePacket(&pkt); + error = avcodec_encode_video2(s_stream->codec, &pkt, nullptr, &got_packet); } + if (error) + ERROR_LOG(VIDEO, "Error while encoding video: %d", error); } void AVIDump::Stop() { - av_write_trailer(s_FormatContext); + av_write_trailer(s_format_context); CloseFile(); NOTICE_LOG(VIDEO, "Stopping frame dump"); } void AVIDump::CloseFile() { - if (s_Stream) + if (s_stream) { - if (s_Stream->codec) - avcodec_close(s_Stream->codec); - av_free(s_Stream); - s_Stream = nullptr; + if (s_stream->codec) + avcodec_close(s_stream->codec); + av_free(s_stream); + s_stream = nullptr; } - if (s_YUVBuffer) - delete[] s_YUVBuffer; - s_YUVBuffer = nullptr; - - if (s_OutBuffer) - delete[] s_OutBuffer; - s_OutBuffer = nullptr; + if (s_yuv_buffer) + { + delete[] s_yuv_buffer; + s_yuv_buffer = nullptr; + } - if (s_BGRFrame) - av_free(s_BGRFrame); - s_BGRFrame = nullptr; + av_frame_free(&s_src_frame); + av_frame_free(&s_scaled_frame); - if (s_YUVFrame) - av_free(s_YUVFrame); - s_YUVFrame = nullptr; + if (s_format_context) + { + if (s_format_context->pb) + avio_close(s_format_context->pb); + av_free(s_format_context); + s_format_context = nullptr; + } - if (s_FormatContext) + if (s_sws_context) { - if (s_FormatContext->pb) - avio_close(s_FormatContext->pb); - av_free(s_FormatContext); - s_FormatContext = nullptr; + sws_freeContext(s_sws_context); + s_sws_context = nullptr; } } diff --git a/Source/Core/VideoCommon/AVIDump.h b/Source/Core/VideoCommon/AVIDump.h index d9a3d15..3c1bb75 100644 --- a/Source/Core/VideoCommon/AVIDump.h +++ b/Source/Core/VideoCommon/AVIDump.h @@ -14,27 +14,27 @@ class AVIDump { - private: - static bool CreateFile(); - static void CloseFile(); - static void SetBitmapFormat(); - static bool SetCompressionOptions(); - static bool SetVideoFormat(); +private: + static bool CreateFile(); + static void CloseFile(); + static void SetBitmapFormat(); + static bool SetCompressionOptions(); + static bool SetVideoFormat(); static void AddSoundInternal(const short *data, int nsamp); static void StoreFrame(const void *data); static void *GetFrame (void); - public: +public: #ifdef _WIN32 - static bool Start(HWND hWnd, int w, int h); + static bool Start(HWND hWnd, int w, int h); static void AddFrame(const u8 *data); static void AddSound(const short *data, int nsamp, int rate); static void AddSoundBE(const short *data, int nsamp, int rate); #else - static bool Start(int w, int h); + static bool Start(int w, int h); #endif - static void AddFrame(const u8* data, int width, int height); + static void AddFrame(const u8* data, int width, int height); - static void Stop(); + static void Stop(); }; diff --git a/Source/Core/VideoCommon/BPStructs.cpp b/Source/Core/VideoCommon/BPStructs.cpp index e9fdf1f..6ba663b 100644 --- a/Source/Core/VideoCommon/BPStructs.cpp +++ b/Source/Core/VideoCommon/BPStructs.cpp @@ -11,6 +11,7 @@ #include "VideoCommon/BPFunctions.h" #include "VideoCommon/BPStructs.h" +#include "VideoCommon/Fifo.h" #include "VideoCommon/PerfQueryBase.h" #include "VideoCommon/PixelEngine.h" #include "VideoCommon/PixelShaderManager.h" @@ -24,8 +25,6 @@ using namespace BPFunctions; -extern volatile bool g_bSkipCurrentFrame; - static const float s_gammaLUT[] = { 1.0f, diff --git a/Source/Core/VideoCommon/CommandProcessor.cpp b/Source/Core/VideoCommon/CommandProcessor.cpp index 22af52c..e42b722 100644 --- a/Source/Core/VideoCommon/CommandProcessor.cpp +++ b/Source/Core/VideoCommon/CommandProcessor.cpp @@ -24,21 +24,21 @@ namespace CommandProcessor { -int et_UpdateInterrupts; +static int et_UpdateInterrupts; // TODO(ector): Warn on bbox read/write // STATE_TO_SAVE SCPFifoStruct fifo; -UCPStatusReg m_CPStatusReg; -UCPCtrlReg m_CPCtrlReg; -UCPClearReg m_CPClearReg; +static UCPStatusReg m_CPStatusReg; +static UCPCtrlReg m_CPCtrlReg; +static UCPClearReg m_CPClearReg; -u16 m_bboxleft; -u16 m_bboxtop; -u16 m_bboxright; -u16 m_bboxbottom; -u16 m_tokenReg; +static u16 m_bboxleft; +static u16 m_bboxtop; +static u16 m_bboxright; +static u16 m_bboxbottom; +static u16 m_tokenReg; volatile bool isPossibleWaitingSetDrawDone = false; volatile bool interruptSet= false; @@ -48,12 +48,12 @@ volatile bool interruptFinishWaiting = false; volatile u32 VITicks = CommandProcessor::m_cpClockOrigin; -bool IsOnThread() +static bool IsOnThread() { return SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread; } -void UpdateInterrupts_Wrapper(u64 userdata, int cyclesLate) +static void UpdateInterrupts_Wrapper(u64 userdata, int cyclesLate) { UpdateInterrupts(userdata); } diff --git a/Source/Core/VideoCommon/DataReader.h b/Source/Core/VideoCommon/DataReader.h index dd963b1..17c927a 100644 --- a/Source/Core/VideoCommon/DataReader.h +++ b/Source/Core/VideoCommon/DataReader.h @@ -92,9 +92,6 @@ __forceinline u32 DataReadU32() return DataRead(); } -typedef void (*DataReadU32xNfunc)(u32 *buf); -extern DataReadU32xNfunc DataReadU32xFuncs[16]; - #if _M_SSE >= 0x301 const __m128i bs_mask = _mm_set_epi32(0x0C0D0E0FL, 0x08090A0BL, 0x04050607L, 0x00010203L); diff --git a/Source/Core/VideoCommon/Debugger.cpp b/Source/Core/VideoCommon/Debugger.cpp index c5ca50f..b5dcca7 100644 --- a/Source/Core/VideoCommon/Debugger.cpp +++ b/Source/Core/VideoCommon/Debugger.cpp @@ -15,7 +15,6 @@ #include "VideoCommon/VideoConfig.h" //void UpdateFPSDisplay(const char *text); -extern NativeVertexFormat *g_nativeVertexFmt; GFXDebuggerBase *g_pdebugger = nullptr; volatile bool GFXDebuggerPauseFlag = false; // if true, the GFX thread will be spin locked until it's false again diff --git a/Source/Core/VideoCommon/DriverDetails.cpp b/Source/Core/VideoCommon/DriverDetails.cpp index 9646e6a..0580bd9 100644 --- a/Source/Core/VideoCommon/DriverDetails.cpp +++ b/Source/Core/VideoCommon/DriverDetails.cpp @@ -32,14 +32,14 @@ namespace DriverDetails const u32 m_os = OS_ALL | OS_LINUX; #endif - Vendor m_vendor = VENDOR_UNKNOWN; - Driver m_driver = DRIVER_UNKNOWN; - s32 m_family = 0; - double m_version = 0.0; + static Vendor m_vendor = VENDOR_UNKNOWN; + static Driver m_driver = DRIVER_UNKNOWN; + static s32 m_family = 0; + static double m_version = 0.0; // This is a list of all known bugs for each vendor // We use this to check if the device and driver has a issue - BugInfo m_known_bugs[] = { + static BugInfo m_known_bugs[] = { {OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_NODYNUBOACCESS, 14.0, -1.0, true}, {OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_BROKENCENTROID, 14.0, 46.0, true}, {OS_ALL, VENDOR_QUALCOMM, DRIVER_QUALCOMM_3XX, -1, BUG_BROKENINFOLOG, -1.0, 46.0, true}, @@ -59,7 +59,7 @@ namespace DriverDetails {OS_LINUX, VENDOR_NVIDIA, DRIVER_NVIDIA, -1, BUG_BROKENUNSYNCMAPPING, -1.0, -1.0, true}, }; - std::map m_bugs; + static std::map m_bugs; void Init(Vendor vendor, Driver driver, const double version, const s32 family) { diff --git a/Source/Core/VideoCommon/FPSCounter.cpp b/Source/Core/VideoCommon/FPSCounter.cpp index 59a67e0..1ce4637 100644 --- a/Source/Core/VideoCommon/FPSCounter.cpp +++ b/Source/Core/VideoCommon/FPSCounter.cpp @@ -2,51 +2,46 @@ // Licensed under GPLv2 // Refer to the license.txt file included. +#include + #include "Common/FileUtil.h" +#include "Common/StringUtil.h" #include "Common/Timer.h" - #include "VideoCommon/FPSCounter.h" #include "VideoCommon/VideoConfig.h" #define FPS_REFRESH_INTERVAL 1000 -static unsigned int s_counter = 0; -static unsigned int s_fps = 0; -static unsigned int s_fps_last_counter = 0; -static unsigned long s_last_update_time = 0; -static File::IOFile s_bench_file; - -void InitFPSCounter() +FPSCounter::FPSCounter() { - s_counter = s_fps_last_counter = 0; - s_fps = 0; - s_last_update_time = Common::Timer::GetTimeMs(); - - if (s_bench_file.IsOpen()) - s_bench_file.Close(); + m_update_time.Update(); + m_render_time.Update(); } -static void LogFPSToFile(unsigned long val) +void FPSCounter::LogRenderTimeToFile(u64 val) { - if (!s_bench_file.IsOpen()) - s_bench_file.Open(File::GetUserPath(D_LOGS_IDX) + "fps.txt", "w"); + if (!m_bench_file.is_open()) + m_bench_file.open(File::GetUserPath(D_LOGS_IDX) + "render_time.txt"); - char buffer[256]; - snprintf(buffer, 256, "%lu\n", val); - s_bench_file.WriteArray(buffer, strlen(buffer)); + m_bench_file << val << std::endl; } -int UpdateFPSCounter() +int FPSCounter::Update() { - if (Common::Timer::GetTimeMs() - s_last_update_time >= FPS_REFRESH_INTERVAL) + if (m_update_time.GetTimeDifference() >= FPS_REFRESH_INTERVAL) { - s_last_update_time = Common::Timer::GetTimeMs(); - s_fps = s_counter - s_fps_last_counter; - s_fps_last_counter = s_counter; - if (g_ActiveConfig.bLogFPSToFile) - LogFPSToFile(s_fps); + m_update_time.Update(); + m_fps = m_counter - m_fps_last_counter; + m_fps_last_counter = m_counter; + m_bench_file.flush(); } - s_counter++; - return s_fps; -} \ No newline at end of file + if (g_ActiveConfig.bLogRenderTimeToFile) + { + LogRenderTimeToFile(m_render_time.GetTimeDifference()); + m_render_time.Update(); + } + + m_counter++; + return m_fps; +} diff --git a/Source/Core/VideoCommon/FPSCounter.h b/Source/Core/VideoCommon/FPSCounter.h index e1dc0ec..bb1dc79 100644 --- a/Source/Core/VideoCommon/FPSCounter.h +++ b/Source/Core/VideoCommon/FPSCounter.h @@ -4,9 +4,29 @@ #pragma once -// Initializes the FPS counter. -void InitFPSCounter(); +#include -// Called when a frame is rendered. Returns the value to be displayed on -// screen as the FPS counter (updated every second). -int UpdateFPSCounter(); +#include "Common/Timer.h" + +class FPSCounter +{ +public: + unsigned int m_fps; + + // Initializes the FPS counter. + FPSCounter(); + + // Called when a frame is rendered. Returns the value to be displayed on + // screen as the FPS counter (updated every second). + int Update(); + +private: + unsigned int m_counter; + unsigned int m_fps_last_counter; + Common::Timer m_update_time; + + Common::Timer m_render_time; + std::ofstream m_bench_file; + + void LogRenderTimeToFile(u64 val); +}; diff --git a/Source/Core/VideoCommon/Fifo.cpp b/Source/Core/VideoCommon/Fifo.cpp index 2886498..3460b25 100644 --- a/Source/Core/VideoCommon/Fifo.cpp +++ b/Source/Core/VideoCommon/Fifo.cpp @@ -13,13 +13,13 @@ #include "Core/HW/Memmap.h" #include "VideoCommon/CommandProcessor.h" +#include "VideoCommon/DataReader.h" #include "VideoCommon/Fifo.h" #include "VideoCommon/OpcodeDecoding.h" #include "VideoCommon/PixelEngine.h" #include "VideoCommon/VideoConfig.h" volatile bool g_bSkipCurrentFrame = false; -extern u8* g_pVideoData; namespace { diff --git a/Source/Core/VideoCommon/Fifo.h b/Source/Core/VideoCommon/Fifo.h index 9045c56..1254a27 100644 --- a/Source/Core/VideoCommon/Fifo.h +++ b/Source/Core/VideoCommon/Fifo.h @@ -17,6 +17,9 @@ extern volatile bool g_bSkipCurrentFrame; void Fifo_Init(); void Fifo_Shutdown(); +u8* GetVideoBufferStartPtr(); +u8* GetVideoBufferEndPtr(); + void Fifo_DoState(PointerWrap &f); void Fifo_PauseAndLock(bool doLock, bool unpauseOnUnlock); diff --git a/Source/Core/VideoCommon/HiresTextures.cpp b/Source/Core/VideoCommon/HiresTextures.cpp index af7e8bb..f9e7d91 100644 --- a/Source/Core/VideoCommon/HiresTextures.cpp +++ b/Source/Core/VideoCommon/HiresTextures.cpp @@ -18,7 +18,7 @@ namespace HiresTextures { -std::map textureMap; +static std::map textureMap; void Init(const std::string& gameCode) { diff --git a/Source/Core/VideoCommon/MainBase.cpp b/Source/Core/VideoCommon/MainBase.cpp index f3c916e..f96201c 100644 --- a/Source/Core/VideoCommon/MainBase.cpp +++ b/Source/Core/VideoCommon/MainBase.cpp @@ -22,8 +22,8 @@ volatile u32 s_swapRequested = false; u32 s_efbAccessRequested = false; volatile u32 s_FifoShuttingDown = false; -std::condition_variable s_perf_query_cond; -std::mutex s_perf_query_lock; +static std::condition_variable s_perf_query_cond; +static std::mutex s_perf_query_lock; static volatile bool s_perf_query_requested; static volatile struct @@ -66,7 +66,7 @@ void VideoBackendHardware::Video_SetRendering(bool bEnabled) } // Run from the graphics thread (from Fifo.cpp) -void VideoFifo_CheckSwapRequest() +static void VideoFifo_CheckSwapRequest() { if (g_ActiveConfig.bUseXFB) { @@ -177,7 +177,7 @@ static bool QueryResultIsReady() return !s_perf_query_requested || s_FifoShuttingDown; } -void VideoFifo_CheckPerfQueryRequest() +static void VideoFifo_CheckPerfQueryRequest() { if (s_perf_query_requested) { diff --git a/Source/Core/VideoCommon/NativeVertexFormat.h b/Source/Core/VideoCommon/NativeVertexFormat.h index 8dd53c7..d1912e1 100644 --- a/Source/Core/VideoCommon/NativeVertexFormat.h +++ b/Source/Core/VideoCommon/NativeVertexFormat.h @@ -76,6 +76,15 @@ struct PortableVertexDeclaration AttributeFormat colors[2]; AttributeFormat texcoords[8]; AttributeFormat posmtx; + + inline bool operator<(const PortableVertexDeclaration& b) const + { + return memcmp(this, &b, sizeof(PortableVertexDeclaration)) < 0; + } + inline bool operator==(const PortableVertexDeclaration& b) const + { + return memcmp(this, &b, sizeof(PortableVertexDeclaration)) == 0; + } }; // The implementation of this class is specific for GL/DX, so NativeVertexFormat.cpp diff --git a/Source/Core/VideoCommon/OpcodeDecoding.cpp b/Source/Core/VideoCommon/OpcodeDecoding.cpp index 9575563..4dc80f8 100644 --- a/Source/Core/VideoCommon/OpcodeDecoding.cpp +++ b/Source/Core/VideoCommon/OpcodeDecoding.cpp @@ -34,8 +34,9 @@ u8* g_pVideoData = nullptr; bool g_bRecordFifoData = false; +typedef void (*DataReadU32xNfunc)(u32 *buf); #if _M_SSE >= 0x301 -DataReadU32xNfunc DataReadU32xFuncs_SSSE3[16] = { +static DataReadU32xNfunc DataReadU32xFuncs_SSSE3[16] = { DataReadU32xN_SSSE3<1>, DataReadU32xN_SSSE3<2>, DataReadU32xN_SSSE3<3>, @@ -55,7 +56,7 @@ DataReadU32xNfunc DataReadU32xFuncs_SSSE3[16] = { }; #endif -DataReadU32xNfunc DataReadU32xFuncs[16] = { +static DataReadU32xNfunc DataReadU32xFuncs[16] = { DataReadU32xN<1>, DataReadU32xN<2>, DataReadU32xN<3>, @@ -74,9 +75,6 @@ DataReadU32xNfunc DataReadU32xFuncs[16] = { DataReadU32xN<16> }; -extern u8* GetVideoBufferStartPtr(); -extern u8* GetVideoBufferEndPtr(); - static void Decode(); void InterpretDisplayList(u32 address, u32 size) @@ -97,7 +95,6 @@ void InterpretDisplayList(u32 address, u32 size) { Decode(); } - INCSTAT(stats.numDListsCalled); INCSTAT(stats.thisFrame.numDListsCalled); // un-swap @@ -108,7 +105,7 @@ void InterpretDisplayList(u32 address, u32 size) g_pVideoData = old_pVideoData; } -u32 FifoCommandRunnable(u32 &command_size) +static u32 FifoCommandRunnable(u32 &command_size) { u32 cycleTime = 0; u32 buffer_size = (u32)(GetVideoBufferEndPtr() - g_pVideoData); @@ -268,7 +265,7 @@ u32 FifoCommandRunnable(u32 &command_size) return cycleTime; } -u32 FifoCommandRunnable() +static u32 FifoCommandRunnable() { u32 command_size = 0; return FifoCommandRunnable(command_size); diff --git a/Source/Core/VideoCommon/PixelEngine.cpp b/Source/Core/VideoCommon/PixelEngine.cpp index 531ef21..5e049e3 100644 --- a/Source/Core/VideoCommon/PixelEngine.cpp +++ b/Source/Core/VideoCommon/PixelEngine.cpp @@ -97,14 +97,14 @@ static UPEAlphaReadReg m_AlphaRead; static UPECtrlReg m_Control; //static u16 m_Token; // token value most recently encountered -volatile u32 g_bSignalTokenInterrupt; -volatile u32 g_bSignalFinishInterrupt; +static volatile u32 g_bSignalTokenInterrupt; +static volatile u32 g_bSignalFinishInterrupt; static int et_SetTokenOnMainThread; static int et_SetFinishOnMainThread; -volatile u32 interruptSetToken = 0; -volatile u32 interruptSetFinish = 0; +static volatile u32 interruptSetToken = 0; +static volatile u32 interruptSetFinish = 0; u16 bbox[4]; bool bbox_active; @@ -252,11 +252,6 @@ void RegisterMMIO(MMIO::Mapping* mmio, u32 base) } } -bool AllowIdleSkipping() -{ - return !SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread || (!m_Control.PETokenEnable && !m_Control.PEFinishEnable); -} - void UpdateInterrupts() { // check if there is a token-interrupt diff --git a/Source/Core/VideoCommon/PixelShaderGen.cpp b/Source/Core/VideoCommon/PixelShaderGen.cpp index 0b4ed68..8e90713 100644 --- a/Source/Core/VideoCommon/PixelShaderGen.cpp +++ b/Source/Core/VideoCommon/PixelShaderGen.cpp @@ -204,7 +204,7 @@ static inline void GeneratePixelShader(T& out, DSTALPHA_MODE dstAlphaMode, API_T { // Declare samplers for (int i = 0; i < 8; ++i) - out.Write("uniform sampler2D samp%d;\n", i); + out.Write("SAMPLER_BINDING(%d) uniform sampler2D samp%d;\n", i, i); } else // D3D { @@ -405,7 +405,7 @@ static inline void GeneratePixelShader(T& out, DSTALPHA_MODE dstAlphaMode, API_T { out.Write("uv%d.xy", i); } - out.Write(" * " I_TEXDIMS"[%d].zw * 128.0);\n\n", i); + out.Write(" * " I_TEXDIMS"[%d].zw * 128.0);\n", i); // TODO: S24 overflows here? } } @@ -575,7 +575,7 @@ static inline void WriteStage(T& out, pixel_shader_uid_data& uid_data, int n, AP if (!bHasTexCoord) texcoord = 0; - out.Write("\t// TEV stage %d\n", n); + out.Write("\n\t// TEV stage %d\n", n); uid_data.stagehash[n].hasindstage = bHasIndStage; uid_data.stagehash[n].tevorders_texcoord = texcoord; @@ -780,10 +780,10 @@ static inline void WriteStage(T& out, pixel_shader_uid_data& uid_data, int n, AP out.SetConstantsUsed(C_COLORS+ac.dest, C_COLORS+ac.dest); - out.Write("tevin_a = int4(%s, %s)&255;\n", tevCInputTable[cc.a], tevAInputTable[ac.a]); - out.Write("tevin_b = int4(%s, %s)&255;\n", tevCInputTable[cc.b], tevAInputTable[ac.b]); - out.Write("tevin_c = int4(%s, %s)&255;\n", tevCInputTable[cc.c], tevAInputTable[ac.c]); - out.Write("tevin_d = int4(%s, %s);\n", tevCInputTable[cc.d], tevAInputTable[ac.d]); + out.Write("\ttevin_a = int4(%s, %s)&255;\n", tevCInputTable[cc.a], tevAInputTable[ac.a]); + out.Write("\ttevin_b = int4(%s, %s)&255;\n", tevCInputTable[cc.b], tevAInputTable[ac.b]); + out.Write("\ttevin_c = int4(%s, %s)&255;\n", tevCInputTable[cc.c], tevAInputTable[ac.c]); + out.Write("\ttevin_d = int4(%s, %s);\n", tevCInputTable[cc.d], tevAInputTable[ac.d]); out.Write("\t// color combine\n"); out.Write("\t%s = clamp(", tevCOutputTable[cc.dest]); @@ -844,7 +844,7 @@ static inline void WriteStage(T& out, pixel_shader_uid_data& uid_data, int n, AP else out.Write(", -1024, 1023)"); - out.Write(";\n\n"); + out.Write(";\n"); } template @@ -980,7 +980,7 @@ static inline void WriteAlphaTest(T& out, pixel_shader_uid_data& uid_data, API_T out.Write("\t\treturn;\n"); } - out.Write("}\n"); + out.Write("\t}\n"); } static const char *tevFogFuncsTable[] = diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 2c95cdf..4ba52d0 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -29,6 +29,7 @@ #include "VideoCommon/CPMemory.h" #include "VideoCommon/Debugger.h" #include "VideoCommon/Fifo.h" +#include "VideoCommon/FPSCounter.h" #include "VideoCommon/FramebufferManagerBase.h" #include "VideoCommon/MainBase.h" #include "VideoCommon/OpcodeDecoding.h" @@ -40,7 +41,8 @@ // TODO: Move these out of here. int frameCount; -int OSDChoice, OSDTime; +int OSDChoice; +static int OSDTime; Renderer *g_renderer = nullptr; @@ -350,9 +352,6 @@ void Renderer::DrawDebugText() g_renderer->RenderText(final_yellow, 20, 20, 0xFFFFFF00); } -// TODO: remove -extern bool g_aspect_wide; - void Renderer::UpdateDrawRectangle(int backbuffer_width, int backbuffer_height) { float FloatGLWidth = (float)backbuffer_width; @@ -521,6 +520,9 @@ void Renderer::Swap(u32 xfbAddr, u32 fbWidth, u32 fbHeight, const EFBRectangle& // TODO: merge more generic parts into VideoCommon g_renderer->SwapImpl(xfbAddr, fbWidth, fbHeight, rc, Gamma); + if (XFBWrited) + g_renderer->m_fps_counter.Update(); + frameCount++; GFX_DEBUGGER_PAUSE_AT(NEXT_FRAME, true); diff --git a/Source/Core/VideoCommon/RenderBase.h b/Source/Core/VideoCommon/RenderBase.h index 16b17ae..8707219 100644 --- a/Source/Core/VideoCommon/RenderBase.h +++ b/Source/Core/VideoCommon/RenderBase.h @@ -19,6 +19,7 @@ #include "Common/MathUtil.h" #include "Common/Thread.h" #include "VideoCommon/BPMemory.h" +#include "VideoCommon/FPSCounter.h" #include "VideoCommon/FramebufferManagerBase.h" #include "VideoCommon/NativeVertexFormat.h" #include "VideoCommon/VideoCommon.h" @@ -150,6 +151,8 @@ class Renderer static bool s_skipSwap; static bool XFBWrited; + FPSCounter m_fps_counter; + private: static PEControl::PixelFormat prev_efb_format; static unsigned int efb_scale_numeratorX; diff --git a/Source/Core/VideoCommon/Statistics.cpp b/Source/Core/VideoCommon/Statistics.cpp index 303972f..9857c7c 100644 --- a/Source/Core/VideoCommon/Statistics.cpp +++ b/Source/Core/VideoCommon/Statistics.cpp @@ -27,32 +27,28 @@ void Statistics::SwapDL() std::string Statistics::ToString() { std::string str; - str += StringFromFormat("Textures created: %i\n",stats.numTexturesCreated); + str += StringFromFormat("Textures created: %i\n", stats.numTexturesCreated); str += StringFromFormat("Textures alive: %i\n", stats.numTexturesAlive); str += StringFromFormat("pshaders created: %i\n", stats.numPixelShadersCreated); - str += StringFromFormat("pshaders alive: %i\n",stats.numPixelShadersAlive); - str += StringFromFormat("pshaders (unique, delete cache first): %i\n",stats.numUniquePixelShaders); - str += StringFromFormat("vshaders created: %i\n",stats.numVertexShadersCreated); - str += StringFromFormat("vshaders alive: %i\n",stats.numVertexShadersAlive); - str += StringFromFormat("dlists called: %i\n",stats.numDListsCalled); - str += StringFromFormat("dlists called(f): %i\n",stats.thisFrame.numDListsCalled); - str += StringFromFormat("dlists alive: %i\n",stats.numDListsAlive); - str += StringFromFormat("Primitive joins: %i\n",stats.thisFrame.numPrimitiveJoins); - str += StringFromFormat("Draw calls: %i\n",stats.thisFrame.numDrawCalls); - str += StringFromFormat("Indexed draw calls: %i\n",stats.thisFrame.numIndexedDrawCalls); - str += StringFromFormat("Buffer splits: %i\n",stats.thisFrame.numBufferSplits); - str += StringFromFormat("Primitives: %i\n",stats.thisFrame.numPrims); - str += StringFromFormat("Primitives (DL): %i\n",stats.thisFrame.numDLPrims); - str += StringFromFormat("XF loads: %i\n",stats.thisFrame.numXFLoads); - str += StringFromFormat("XF loads (DL): %i\n",stats.thisFrame.numXFLoadsInDL); - str += StringFromFormat("CP loads: %i\n",stats.thisFrame.numCPLoads); - str += StringFromFormat("CP loads (DL): %i\n",stats.thisFrame.numCPLoadsInDL); - str += StringFromFormat("BP loads: %i\n",stats.thisFrame.numBPLoads); - str += StringFromFormat("BP loads (DL): %i\n",stats.thisFrame.numBPLoadsInDL); - str += StringFromFormat("Vertex streamed: %i kB\n",stats.thisFrame.bytesVertexStreamed/1024); - str += StringFromFormat("Index streamed: %i kB\n",stats.thisFrame.bytesIndexStreamed/1024); - str += StringFromFormat("Uniform streamed: %i kB\n",stats.thisFrame.bytesUniformStreamed/1024); - str += StringFromFormat("Vertex Loaders: %i\n",stats.numVertexLoaders); + str += StringFromFormat("pshaders alive: %i\n", stats.numPixelShadersAlive); + str += StringFromFormat("vshaders created: %i\n", stats.numVertexShadersCreated); + str += StringFromFormat("vshaders alive: %i\n", stats.numVertexShadersAlive); + str += StringFromFormat("shaders changes: %i\n", stats.thisFrame.numShaderChanges); + str += StringFromFormat("dlists called: %i\n", stats.thisFrame.numDListsCalled); + str += StringFromFormat("Primitive joins: %i\n", stats.thisFrame.numPrimitiveJoins); + str += StringFromFormat("Draw calls: %i\n", stats.thisFrame.numDrawCalls); + str += StringFromFormat("Primitives: %i\n", stats.thisFrame.numPrims); + str += StringFromFormat("Primitives (DL): %i\n", stats.thisFrame.numDLPrims); + str += StringFromFormat("XF loads: %i\n", stats.thisFrame.numXFLoads); + str += StringFromFormat("XF loads (DL): %i\n", stats.thisFrame.numXFLoadsInDL); + str += StringFromFormat("CP loads: %i\n", stats.thisFrame.numCPLoads); + str += StringFromFormat("CP loads (DL): %i\n", stats.thisFrame.numCPLoadsInDL); + str += StringFromFormat("BP loads: %i\n", stats.thisFrame.numBPLoads); + str += StringFromFormat("BP loads (DL): %i\n", stats.thisFrame.numBPLoadsInDL); + str += StringFromFormat("Vertex streamed: %i kB\n", stats.thisFrame.bytesVertexStreamed/1024); + str += StringFromFormat("Index streamed: %i kB\n", stats.thisFrame.bytesIndexStreamed/1024); + str += StringFromFormat("Uniform streamed: %i kB\n", stats.thisFrame.bytesUniformStreamed/1024); + str += StringFromFormat("Vertex Loaders: %i\n", stats.numVertexLoaders); std::string vertex_list; VertexLoaderManager::AppendListToString(&vertex_list); diff --git a/Source/Core/VideoCommon/Statistics.h b/Source/Core/VideoCommon/Statistics.h index 9f9f97b..55e7121 100644 --- a/Source/Core/VideoCommon/Statistics.h +++ b/Source/Core/VideoCommon/Statistics.h @@ -20,17 +20,8 @@ struct Statistics int numTexturesCreated; int numTexturesAlive; - int numRenderTargetsCreated; - int numRenderTargetsAlive; - - int numDListsCalled; - int numDListsCreated; - int numDListsAlive; - int numVertexLoaders; - int numUniquePixelShaders; - float proj_0, proj_1, proj_2, proj_3, proj_4, proj_5; float gproj_0, gproj_1, gproj_2, gproj_3, gproj_4, gproj_5; float gproj_6, gproj_7, gproj_8, gproj_9, gproj_10, gproj_11, gproj_12, gproj_13, gproj_14, gproj_15; @@ -50,15 +41,12 @@ struct Statistics int numCPLoadsInDL; int numXFLoadsInDL; - int numDLs; int numPrims; int numDLPrims; int numShaderChanges; int numPrimitiveJoins; int numDrawCalls; - int numIndexedDrawCalls; - int numBufferSplits; int numDListsCalled; diff --git a/Source/Core/VideoCommon/TextureCacheBase.cpp b/Source/Core/VideoCommon/TextureCacheBase.cpp index edb0f49..d43e209 100644 --- a/Source/Core/VideoCommon/TextureCacheBase.cpp +++ b/Source/Core/VideoCommon/TextureCacheBase.cpp @@ -19,9 +19,6 @@ #include "VideoCommon/TextureCacheBase.h" #include "VideoCommon/VideoConfig.h" -// ugly -extern int frameCount; - enum { TEXTURE_KILL_THRESHOLD = 200, @@ -36,7 +33,7 @@ TextureCache::TexCache TextureCache::textures; TextureCache::BackupConfig TextureCache::backup_config; -bool invalidate_texture_cache_requested; +static bool invalidate_texture_cache_requested; TextureCache::TCacheEntryBase::~TCacheEntryBase() { diff --git a/Source/Core/VideoCommon/TextureConversionShader.cpp b/Source/Core/VideoCommon/TextureConversionShader.cpp index fc9d336..76e49ce 100644 --- a/Source/Core/VideoCommon/TextureConversionShader.cpp +++ b/Source/Core/VideoCommon/TextureConversionShader.cpp @@ -57,7 +57,7 @@ u16 GetEncodedSampleCount(u32 format) // block dimensions : widthStride, heightStride // texture dims : width, height, x offset, y offset -void WriteSwizzler(char*& p, u32 format, API_TYPE ApiType) +static void WriteSwizzler(char*& p, u32 format, API_TYPE ApiType) { // left, top, of source rectangle within source texture // width of the destination rectangle, scale_factor (1 or 2) @@ -70,7 +70,7 @@ void WriteSwizzler(char*& p, u32 format, API_TYPE ApiType) if (ApiType == API_OPENGL) { WRITE(p, "#define samp0 samp9\n"); - WRITE(p, "uniform sampler2D samp0;\n"); + WRITE(p, "SAMPLER_BINDING(9) uniform sampler2D samp0;\n"); WRITE(p, " out vec4 ocol0;\n"); WRITE(p, "void main()\n"); @@ -118,14 +118,14 @@ void WriteSwizzler(char*& p, u32 format, API_TYPE ApiType) WRITE(p, " float sample_offset = float(position.w) / float(%d);\n", EFB_WIDTH); } -void WriteSampleColor(char*& p, const char* colorComp, const char* dest, int xoffset, API_TYPE ApiType) +static void WriteSampleColor(char*& p, const char* colorComp, const char* dest, int xoffset, API_TYPE ApiType) { WRITE(p, " %s = texture(samp0, uv0 + float2(%d, 0) * sample_offset).%s;\n", dest, xoffset, colorComp ); } -void WriteColorToIntensity(char*& p, const char* src, const char* dest) +static void WriteColorToIntensity(char*& p, const char* src, const char* dest) { if (!IntensityConstantAdded) { @@ -136,18 +136,18 @@ void WriteColorToIntensity(char*& p, const char* src, const char* dest) // don't add IntensityConst.a yet, because doing it later is faster and uses less instructions, due to vectorization } -void WriteToBitDepth(char*& p, u8 depth, const char* src, const char* dest) +static void WriteToBitDepth(char*& p, u8 depth, const char* src, const char* dest) { WRITE(p, " %s = floor(%s * 255.0 / exp2(8.0 - %d.0));\n", dest, src, depth); } -void WriteEncoderEnd(char*& p, API_TYPE ApiType) +static void WriteEncoderEnd(char*& p, API_TYPE ApiType) { WRITE(p, "}\n"); IntensityConstantAdded = false; } -void WriteI8Encoder(char*& p, API_TYPE ApiType) +static void WriteI8Encoder(char*& p, API_TYPE ApiType) { WriteSwizzler(p, GX_TF_I8, ApiType); WRITE(p, " float3 texSample;\n"); @@ -169,7 +169,7 @@ void WriteI8Encoder(char*& p, API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteI4Encoder(char*& p, API_TYPE ApiType) +static void WriteI4Encoder(char*& p, API_TYPE ApiType) { WriteSwizzler(p, GX_TF_I4, ApiType); WRITE(p, " float3 texSample;\n"); @@ -210,7 +210,7 @@ void WriteI4Encoder(char*& p, API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteIA8Encoder(char*& p,API_TYPE ApiType) +static void WriteIA8Encoder(char*& p,API_TYPE ApiType) { WriteSwizzler(p, GX_TF_IA8, ApiType); WRITE(p, " float4 texSample;\n"); @@ -228,7 +228,7 @@ void WriteIA8Encoder(char*& p,API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteIA4Encoder(char*& p,API_TYPE ApiType) +static void WriteIA4Encoder(char*& p,API_TYPE ApiType) { WriteSwizzler(p, GX_TF_IA4, ApiType); WRITE(p, " float4 texSample;\n"); @@ -260,7 +260,7 @@ void WriteIA4Encoder(char*& p,API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteRGB565Encoder(char*& p,API_TYPE ApiType) +static void WriteRGB565Encoder(char*& p,API_TYPE ApiType) { WriteSwizzler(p, GX_TF_RGB565, ApiType); @@ -283,7 +283,7 @@ void WriteRGB565Encoder(char*& p,API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteRGB5A3Encoder(char*& p,API_TYPE ApiType) +static void WriteRGB5A3Encoder(char*& p,API_TYPE ApiType) { WriteSwizzler(p, GX_TF_RGB5A3, ApiType); @@ -349,31 +349,7 @@ void WriteRGB5A3Encoder(char*& p,API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteRGBA4443Encoder(char*& p,API_TYPE ApiType) -{ - WriteSwizzler(p, GX_TF_RGB5A3, ApiType); - - WRITE(p, " float4 texSample;\n"); - WRITE(p, " float4 color0;\n"); - WRITE(p, " float4 color1;\n"); - - WriteSampleColor(p, "rgba", "texSample", 0, ApiType); - WriteToBitDepth(p, 3, "texSample.a", "color0.b"); - WriteToBitDepth(p, 4, "texSample.r", "color1.b"); - WriteToBitDepth(p, 4, "texSample.g", "color0.g"); - WriteToBitDepth(p, 4, "texSample.b", "color1.g"); - - WriteSampleColor(p, "rgba", "texSample", 1, ApiType); - WriteToBitDepth(p, 3, "texSample.a", "color0.r"); - WriteToBitDepth(p, 4, "texSample.r", "color1.r"); - WriteToBitDepth(p, 4, "texSample.g", "color0.a"); - WriteToBitDepth(p, 4, "texSample.b", "color1.a"); - - WRITE(p, " ocol0 = (color0 * 16.0 + color1) / 255.0;\n"); - WriteEncoderEnd(p, ApiType); -} - -void WriteRGBA8Encoder(char*& p,API_TYPE ApiType) +static void WriteRGBA8Encoder(char*& p,API_TYPE ApiType) { WriteSwizzler(p, GX_TF_RGBA8, ApiType); @@ -398,7 +374,7 @@ void WriteRGBA8Encoder(char*& p,API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteC4Encoder(char*& p, const char* comp,API_TYPE ApiType) +static void WriteC4Encoder(char*& p, const char* comp,API_TYPE ApiType) { WriteSwizzler(p, GX_CTF_R4, ApiType); WRITE(p, " float4 color0;\n"); @@ -420,7 +396,7 @@ void WriteC4Encoder(char*& p, const char* comp,API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteC8Encoder(char*& p, const char* comp,API_TYPE ApiType) +static void WriteC8Encoder(char*& p, const char* comp,API_TYPE ApiType) { WriteSwizzler(p, GX_CTF_R8, ApiType); @@ -432,7 +408,7 @@ void WriteC8Encoder(char*& p, const char* comp,API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteCC4Encoder(char*& p, const char* comp,API_TYPE ApiType) +static void WriteCC4Encoder(char*& p, const char* comp,API_TYPE ApiType) { WriteSwizzler(p, GX_CTF_RA4, ApiType); WRITE(p, " float2 texSample;\n"); @@ -462,7 +438,7 @@ void WriteCC4Encoder(char*& p, const char* comp,API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteCC8Encoder(char*& p, const char* comp, API_TYPE ApiType) +static void WriteCC8Encoder(char*& p, const char* comp, API_TYPE ApiType) { WriteSwizzler(p, GX_CTF_RA8, ApiType); @@ -472,7 +448,7 @@ void WriteCC8Encoder(char*& p, const char* comp, API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteZ8Encoder(char*& p, const char* multiplier,API_TYPE ApiType) +static void WriteZ8Encoder(char*& p, const char* multiplier,API_TYPE ApiType) { WriteSwizzler(p, GX_CTF_Z8M, ApiType); @@ -493,7 +469,7 @@ void WriteZ8Encoder(char*& p, const char* multiplier,API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteZ16Encoder(char*& p,API_TYPE ApiType) +static void WriteZ16Encoder(char*& p,API_TYPE ApiType) { WriteSwizzler(p, GX_TF_Z16, ApiType); @@ -525,7 +501,7 @@ void WriteZ16Encoder(char*& p,API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteZ16LEncoder(char*& p,API_TYPE ApiType) +static void WriteZ16LEncoder(char*& p,API_TYPE ApiType) { WriteSwizzler(p, GX_CTF_Z16L, ApiType); @@ -561,7 +537,7 @@ void WriteZ16LEncoder(char*& p,API_TYPE ApiType) WriteEncoderEnd(p, ApiType); } -void WriteZ24Encoder(char*& p, API_TYPE ApiType) +static void WriteZ24Encoder(char*& p, API_TYPE ApiType) { WriteSwizzler(p, GX_TF_Z24X8, ApiType); diff --git a/Source/Core/VideoCommon/TextureDecoder.h b/Source/Core/VideoCommon/TextureDecoder.h index 284b992..45925f7 100644 --- a/Source/Core/VideoCommon/TextureDecoder.h +++ b/Source/Core/VideoCommon/TextureDecoder.h @@ -52,6 +52,10 @@ enum TextureFormat GX_CTF_Z16L = 0xC | _GX_TF_ZTF | _GX_TF_CTF, }; +extern const char* texfmt[]; +extern const unsigned char sfont_map[]; +extern const unsigned char sfont_raw[][9*10]; + int TexDecoder_GetTexelSizeInNibbles(int format); int TexDecoder_GetTextureSizeInBytes(int width, int height, int format); int TexDecoder_GetBlockWidthInTexels(u32 format); diff --git a/Source/Core/VideoCommon/TextureDecoder_Generic.cpp b/Source/Core/VideoCommon/TextureDecoder_Generic.cpp index e945010..c9549b4 100644 --- a/Source/Core/VideoCommon/TextureDecoder_Generic.cpp +++ b/Source/Core/VideoCommon/TextureDecoder_Generic.cpp @@ -15,10 +15,6 @@ bool TexFmt_Overlay_Enable=false; bool TexFmt_Overlay_Center=false; -extern const char* texfmt[]; -extern const unsigned char sfont_map[]; -extern const unsigned char sfont_raw[][9*10]; - // TRAM // STATE_TO_SAVE GC_ALIGNED16(u8 texMem[TMEM_SIZE]); diff --git a/Source/Core/VideoCommon/TextureDecoder_x64.cpp b/Source/Core/VideoCommon/TextureDecoder_x64.cpp index 727b668..0edfbc0 100644 --- a/Source/Core/VideoCommon/TextureDecoder_x64.cpp +++ b/Source/Core/VideoCommon/TextureDecoder_x64.cpp @@ -28,16 +28,12 @@ // This avoids a harmless warning from a system header in Clang; // see http://llvm.org/bugs/show_bug.cgi?id=16093 -#ifdef __clang__ +#if defined(__clang__) && (__clang_major__ * 100 + __clang_minor__ < 304) #pragma clang diagnostic ignored "-Wshadow" #endif -bool TexFmt_Overlay_Enable=false; -bool TexFmt_Overlay_Center=false; - -extern const char* texfmt[]; -extern const unsigned char sfont_map[]; -extern const unsigned char sfont_raw[][9*10]; +static bool TexFmt_Overlay_Enable=false; +static bool TexFmt_Overlay_Center=false; // TRAM // STATE_TO_SAVE @@ -521,7 +517,7 @@ inline u32 makeRGBA(int r, int g, int b, int a) return (a<<24)|(b<<16)|(g<<8)|r; } -void decodeDXTBlock(u32 *dst, const DXTBlock *src, int pitch) +static void decodeDXTBlock(u32 *dst, const DXTBlock *src, int pitch) { // S3TC Decoder (Note: GCN decodes differently from PC so we can't use native support) // Needs more speed. @@ -564,7 +560,8 @@ void decodeDXTBlock(u32 *dst, const DXTBlock *src, int pitch) } } -void decodeDXTBlockRGBA(u32 *dst, const DXTBlock *src, int pitch) +#ifdef CHECK +static void decodeDXTBlockRGBA(u32 *dst, const DXTBlock *src, int pitch) { // S3TC Decoder (Note: GCN decodes differently from PC so we can't use native support) // Needs more speed. @@ -606,6 +603,7 @@ void decodeDXTBlockRGBA(u32 *dst, const DXTBlock *src, int pitch) dst += pitch; } } +#endif #if 0 // TODO - currently does not handle transparency correctly and causes problems when texture dimensions are not multiples of 8 static void copyDXTBlock(u8* dst, const u8* src) @@ -689,7 +687,7 @@ inline void SetOpenMPThreadCount(int width, int height) //TODO: to save memory, don't blindly convert everything to argb8888 //also ARGB order needs to be swapped later, to accommodate modern hardware better //need to add DXT support too -PC_TexFormat TexDecoder_Decode_real(u8 *dst, const u8 *src, int width, int height, int texformat, int tlutaddr, int tlutfmt) +static PC_TexFormat TexDecoder_Decode_real(u8 *dst, const u8 *src, int width, int height, int texformat, int tlutaddr, int tlutfmt) { SetOpenMPThreadCount(width, height); @@ -956,7 +954,7 @@ PC_TexFormat TexDecoder_Decode_real(u8 *dst, const u8 *src, int width, int heigh // TODO: complete SSE2 optimization of less often used texture formats. // TODO: refactor algorithms using _mm_loadl_epi64 unaligned loads to prefer 128-bit aligned loads. -PC_TexFormat TexDecoder_Decode_RGBA(u32 * dst, const u8 * src, int width, int height, int texformat, int tlutaddr, int tlutfmt) +static PC_TexFormat TexDecoder_Decode_RGBA(u32 * dst, const u8 * src, int width, int height, int texformat, int tlutaddr, int tlutfmt) { SetOpenMPThreadCount(width, height); diff --git a/Source/Core/VideoCommon/VertexLoader.cpp b/Source/Core/VideoCommon/VertexLoader.cpp index 83f9aaa..4087554 100644 --- a/Source/Core/VideoCommon/VertexLoader.cpp +++ b/Source/Core/VideoCommon/VertexLoader.cpp @@ -51,7 +51,6 @@ static int loop_counter; // Vertex loaders read these. Although the scale ones should be baked into the shader. int tcIndex; int colIndex; -TVtxAttr* pVtxAttr; int colElements[2]; float posScale; float tcScale[8]; @@ -84,13 +83,13 @@ static const float fractionTable[32] = { using namespace Gen; -void LOADERDECL PosMtx_ReadDirect_UByte() +static void LOADERDECL PosMtx_ReadDirect_UByte() { s_curposmtx = DataReadU8() & 0x3f; PRIM_LOG("posmtx: %d, ", s_curposmtx); } -void LOADERDECL PosMtx_Write() +static void LOADERDECL PosMtx_Write() { DataWrite(s_curposmtx); DataWrite(0); @@ -101,7 +100,7 @@ void LOADERDECL PosMtx_Write() s_curposmtx = (u8) MatrixIndexA.PosNormalMtxIdx; } -void LOADERDECL UpdateBoundingBoxPrepare() +static void LOADERDECL UpdateBoundingBoxPrepare() { if (!PixelEngine::bbox_active) return; @@ -112,7 +111,7 @@ void LOADERDECL UpdateBoundingBoxPrepare() VertexManager::s_pCurBufferPointer = (u8*)s_bbox_vertex_buffer; } -inline bool UpdateBoundingBoxVars() +static inline bool UpdateBoundingBoxVars() { switch (s_bbox_primitive) { @@ -198,7 +197,7 @@ inline bool UpdateBoundingBoxVars() } } -void LOADERDECL UpdateBoundingBox() +static void LOADERDECL UpdateBoundingBox() { if (!PixelEngine::bbox_active) return; @@ -431,25 +430,25 @@ void LOADERDECL UpdateBoundingBox() PixelEngine::bbox[3] = (bottom > PixelEngine::bbox[3]) ? bottom : PixelEngine::bbox[3]; } -void LOADERDECL TexMtx_ReadDirect_UByte() +static void LOADERDECL TexMtx_ReadDirect_UByte() { s_curtexmtx[s_texmtxread] = DataReadU8() & 0x3f; PRIM_LOG("texmtx%d: %d, ", s_texmtxread, s_curtexmtx[s_texmtxread]); s_texmtxread++; } -void LOADERDECL TexMtx_Write_Float() +static void LOADERDECL TexMtx_Write_Float() { DataWrite(float(s_curtexmtx[s_texmtxwrite++])); } -void LOADERDECL TexMtx_Write_Float2() +static void LOADERDECL TexMtx_Write_Float2() { DataWrite(0.f); DataWrite(float(s_curtexmtx[s_texmtxwrite++])); } -void LOADERDECL TexMtx_Write_Float4() +static void LOADERDECL TexMtx_Write_Float4() { DataWrite(0.f); DataWrite(0.f); @@ -463,7 +462,6 @@ VertexLoader::VertexLoader(const TVtxDesc &vtx_desc, const VAT &vtx_attr) m_compiledCode = nullptr; m_numLoadedVertices = 0; m_VertexSize = 0; - m_NativeFmt = nullptr; loop_counter = 0; VertexLoader_Normal::Init(); VertexLoader_Position::Init(); @@ -488,7 +486,6 @@ VertexLoader::~VertexLoader() #ifdef USE_VERTEX_LOADER_JIT FreeCodeSpace(); #endif - delete m_NativeFmt; } void VertexLoader::CompileVertexTranslator() @@ -773,9 +770,7 @@ void VertexLoader::CompileVertexTranslator() ABI_PopAllCalleeSavedRegsAndAdjustStack(); RET(); #endif - m_NativeFmt = g_vertex_manager->CreateNativeVertexFormat(); - m_NativeFmt->m_components = components; - m_NativeFmt->Initialize(vtx_decl); + m_NativeFmt = VertexLoaderManager::GetNativeVertexFormat(vtx_decl, components); } void VertexLoader::WriteCall(TPipelineFunction func) @@ -825,9 +820,6 @@ void VertexLoader::SetupRunVertices(int vtx_attr_group, int primitive, int const // Flush if our vertex format is different from the currently set. if (g_nativeVertexFmt != nullptr && g_nativeVertexFmt != m_NativeFmt) { - // We really must flush here. It's possible that the native representations - // of the two vtx formats are the same, but we have no way to easily check that - // now. VertexManager::Flush(); // Also move the Set() here? } @@ -844,7 +836,6 @@ void VertexLoader::SetupRunVertices(int vtx_attr_group, int primitive, int const m_VtxAttr.texCoord[6].Frac = g_VtxAttr[vtx_attr_group].g2.Tex6Frac; m_VtxAttr.texCoord[7].Frac = g_VtxAttr[vtx_attr_group].g2.Tex7Frac; - pVtxAttr = &m_VtxAttr; posScale = fractionTable[m_VtxAttr.PosFrac]; if (m_NativeFmt->m_components & VB_HAS_UVALL) for (int i = 0; i < 8; i++) diff --git a/Source/Core/VideoCommon/VertexLoader.h b/Source/Core/VideoCommon/VertexLoader.h index 407a20e..7e40bc8 100644 --- a/Source/Core/VideoCommon/VertexLoader.h +++ b/Source/Core/VideoCommon/VertexLoader.h @@ -23,6 +23,14 @@ #endif #endif +// They are used for the communication with the loader functions +extern NativeVertexFormat *g_nativeVertexFmt; +extern int tcIndex; +extern int colIndex; +extern int colElements[2]; +extern float posScale; +extern float tcScale[8]; + class VertexLoaderUID { u32 vid[5]; diff --git a/Source/Core/VideoCommon/VertexLoaderManager.cpp b/Source/Core/VideoCommon/VertexLoaderManager.cpp index b39577d..dd1196a 100644 --- a/Source/Core/VideoCommon/VertexLoaderManager.cpp +++ b/Source/Core/VideoCommon/VertexLoaderManager.cpp @@ -3,6 +3,7 @@ // Refer to the license.txt file included. #include +#include #include #include @@ -33,11 +34,13 @@ struct hash } typedef std::unordered_map VertexLoaderMap; +typedef std::map> NativeVertexLoaderMap; namespace VertexLoaderManager { static VertexLoaderMap g_VertexLoaderMap; +static NativeVertexLoaderMap s_native_vertex_map; // TODO - change into array of pointers. Keep a map of all seen so far. void Init() @@ -55,6 +58,7 @@ void Shutdown() delete p.second; } g_VertexLoaderMap.clear(); + s_native_vertex_map.clear(); } namespace @@ -131,6 +135,19 @@ int GetVertexSize(int vtx_attr_group) return RefreshLoader(vtx_attr_group)->GetVertexSize(); } +NativeVertexFormat* GetNativeVertexFormat(const PortableVertexDeclaration& format, u32 components) +{ + auto& native = s_native_vertex_map[format]; + if (!native) + { + auto raw_pointer = g_vertex_manager->CreateNativeVertexFormat(); + native = std::unique_ptr(raw_pointer); + native->m_components = components; + native->Initialize(format); + } + return native.get(); +} + } // namespace void LoadCPReg(u32 sub_cmd, u32 value) diff --git a/Source/Core/VideoCommon/VertexLoaderManager.h b/Source/Core/VideoCommon/VertexLoaderManager.h index 7e6c468..909701b 100644 --- a/Source/Core/VideoCommon/VertexLoaderManager.h +++ b/Source/Core/VideoCommon/VertexLoaderManager.h @@ -7,6 +7,7 @@ #include #include "Common/Common.h" +#include "VideoCommon/NativeVertexFormat.h" namespace VertexLoaderManager { @@ -20,6 +21,8 @@ namespace VertexLoaderManager // For debugging void AppendListToString(std::string *dest); + + NativeVertexFormat* GetNativeVertexFormat(const PortableVertexDeclaration& format, u32 components); }; void RecomputeCachedArraybases(); diff --git a/Source/Core/VideoCommon/VertexLoader_Color.cpp b/Source/Core/VideoCommon/VertexLoader_Color.cpp index 03fee03..8ffed47 100644 --- a/Source/Core/VideoCommon/VertexLoader_Color.cpp +++ b/Source/Core/VideoCommon/VertexLoader_Color.cpp @@ -16,10 +16,6 @@ #define ASHIFT 24 #define AMASK 0xFF000000 -extern int colIndex; -extern int colElements[2]; - - __forceinline void _SetCol(u32 val) { DataWrite(val); diff --git a/Source/Core/VideoCommon/VertexLoader_Position.cpp b/Source/Core/VideoCommon/VertexLoader_Position.cpp index f95ef66..9554adc 100644 --- a/Source/Core/VideoCommon/VertexLoader_Position.cpp +++ b/Source/Core/VideoCommon/VertexLoader_Position.cpp @@ -12,9 +12,6 @@ #include "VideoCommon/VertexManagerBase.h" #include "VideoCommon/VideoCommon.h" -extern float posScale; -extern TVtxAttr *pVtxAttr; - // Thoughts on the implementation of a vertex loader compiler. // s_pCurBufferPointer should definitely be in a register. // Could load the position scale factor in XMM7, for example. diff --git a/Source/Core/VideoCommon/VertexLoader_Position.h b/Source/Core/VideoCommon/VertexLoader_Position.h index 41e6028..a6bbf7c 100644 --- a/Source/Core/VideoCommon/VertexLoader_Position.h +++ b/Source/Core/VideoCommon/VertexLoader_Position.h @@ -2,8 +2,7 @@ // Licensed under GPLv2 // Refer to the license.txt file included. -#ifndef VERTEXLOADER_POSITION_H -#define VERTEXLOADER_POSITION_H +#pragma once class VertexLoader_Position { public: @@ -18,4 +17,3 @@ class VertexLoader_Position { static TPipelineFunction GetFunction(unsigned int _type, unsigned int _format, unsigned int _elements); }; -#endif diff --git a/Source/Core/VideoCommon/VertexLoader_TextCoord.cpp b/Source/Core/VideoCommon/VertexLoader_TextCoord.cpp index b7a6a3e..5b47b4f 100644 --- a/Source/Core/VideoCommon/VertexLoader_TextCoord.cpp +++ b/Source/Core/VideoCommon/VertexLoader_TextCoord.cpp @@ -34,10 +34,7 @@ __forceinline void LOG_TEX<2>() // PRIM_LOG("tex: %f %f, ", ((float*)VertexManager::s_pCurBufferPointer)[-2], ((float*)VertexManager::s_pCurBufferPointer)[-1]); } -extern int tcIndex; -extern float tcScale[8]; - -void LOADERDECL TexCoord_Read_Dummy() +static void LOADERDECL TexCoord_Read_Dummy() { tcIndex++; } diff --git a/Source/Core/VideoCommon/VertexShaderGen.h b/Source/Core/VideoCommon/VertexShaderGen.h index 718b62b..998f8fe 100644 --- a/Source/Core/VideoCommon/VertexShaderGen.h +++ b/Source/Core/VideoCommon/VertexShaderGen.h @@ -27,20 +27,6 @@ #define SHADER_TEXTURE6_ATTRIB 14 #define SHADER_TEXTURE7_ATTRIB 15 - -//TODO: get rid of them, they aren't used at all -#define C_POSNORMALMATRIX 0 -#define C_PROJECTION (C_POSNORMALMATRIX + 6) -#define C_MATERIALS (C_PROJECTION + 4) -#define C_LIGHT_COLORS (C_MATERIALS + 4) -#define C_LIGHTS (C_LIGHT_COLORS + 8) -#define C_TEXMATRICES (C_LIGHTS + 32) -#define C_TRANSFORMMATRICES (C_TEXMATRICES + 24) -#define C_NORMALMATRICES (C_TRANSFORMMATRICES + 64) -#define C_POSTTRANSFORMMATRICES (C_NORMALMATRICES + 32) -#define C_DEPTHPARAMS (C_POSTTRANSFORMMATRICES + 64) -#define C_VENVCONST_END (C_DEPTHPARAMS + 1) - #pragma pack(1) struct vertex_shader_uid_data diff --git a/Source/Core/VideoCommon/VertexShaderManager.cpp b/Source/Core/VideoCommon/VertexShaderManager.cpp index b09ff4d..dd23340 100644 --- a/Source/Core/VideoCommon/VertexShaderManager.cpp +++ b/Source/Core/VideoCommon/VertexShaderManager.cpp @@ -18,7 +18,7 @@ #include "VideoCommon/VideoConfig.h" #include "VideoCommon/XFMemory.h" -float GC_ALIGNED16(g_fProjectionMatrix[16]); +static float GC_ALIGNED16(g_fProjectionMatrix[16]); // track changes static bool bTexMatricesChanged[2], bPosNormalMatrixChanged, bProjectionChanged, bViewportChanged; @@ -53,7 +53,7 @@ static ProjectionHack g_ProjHack1; static ProjectionHack g_ProjHack2; } // Namespace -float PHackValue(std::string sValue) +static float PHackValue(std::string sValue) { float f = 0; bool fp = false; diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp index bb8d698..77e4eb8 100644 --- a/Source/Core/VideoCommon/VideoConfig.cpp +++ b/Source/Core/VideoCommon/VideoConfig.cpp @@ -7,6 +7,7 @@ #include "Common/Common.h" #include "Common/FileUtil.h" #include "Common/IniFile.h" +#include "Common/StringUtil.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/Movie.h" @@ -56,7 +57,7 @@ void VideoConfig::Load(const std::string& ini_file) settings->Get("UseRealXFB", &bUseRealXFB, 0); settings->Get("SafeTextureCacheColorSamples", &iSafeTextureCache_ColorSamples,128); settings->Get("ShowFPS", &bShowFPS, false); - settings->Get("LogFPSToFile", &bLogFPSToFile, false); + settings->Get("LogRenderTimeToFile", &bLogRenderTimeToFile, false); settings->Get("ShowInputDisplay", &bShowInputDisplay, false); settings->Get("OverlayStats", &bOverlayStats, false); settings->Get("OverlayProjStats", &bOverlayProjStats, false); @@ -125,9 +126,8 @@ void VideoConfig::GameIniLoad() #define CHECK_SETTING(section, key, var) do { \ decltype(var) temp = var; \ if (iniFile.GetIfExists(section, key, &var) && var != temp) { \ - char buf[256]; \ - snprintf(buf, sizeof(buf), "Note: Option \"%s\" is overridden by game ini.", key); \ - OSD::AddMessage(buf, 7500); \ + std::string msg = StringFromFormat("Note: Option \"%s\" is overridden by game ini.", key); \ + OSD::AddMessage(msg, 7500); \ gfx_override_exists = true; \ } \ } while (0) @@ -229,7 +229,7 @@ void VideoConfig::Save(const std::string& ini_file) settings->Set("UseRealXFB", bUseRealXFB); settings->Set("SafeTextureCacheColorSamples", iSafeTextureCache_ColorSamples); settings->Set("ShowFPS", bShowFPS); - settings->Set("LogFPSToFile", bLogFPSToFile); + settings->Set("LogRenderTimeToFile", bLogRenderTimeToFile); settings->Set("ShowInputDisplay", bShowInputDisplay); settings->Set("OverlayStats", bOverlayStats); settings->Set("OverlayProjStats", bOverlayProjStats); diff --git a/Source/Core/VideoCommon/VideoConfig.h b/Source/Core/VideoCommon/VideoConfig.h index 1747fef..595ded2 100644 --- a/Source/Core/VideoCommon/VideoConfig.h +++ b/Source/Core/VideoCommon/VideoConfig.h @@ -83,7 +83,7 @@ struct VideoConfig final bool bTexFmtOverlayEnable; bool bTexFmtOverlayCenter; bool bShowEFBCopyRegions; - bool bLogFPSToFile; + bool bLogRenderTimeToFile; // Render bool bWireFrame; diff --git a/Source/Core/VideoCommon/XFStructs.cpp b/Source/Core/VideoCommon/XFStructs.cpp index fb20c3d..235c76b 100644 --- a/Source/Core/VideoCommon/XFStructs.cpp +++ b/Source/Core/VideoCommon/XFStructs.cpp @@ -11,13 +11,13 @@ #include "VideoCommon/VideoCommon.h" #include "VideoCommon/XFMemory.h" -void XFMemWritten(u32 transferSize, u32 baseAddress) +static void XFMemWritten(u32 transferSize, u32 baseAddress) { VertexManager::Flush(); VertexShaderManager::InvalidateXFRange(baseAddress, baseAddress + transferSize); } -void XFRegWritten(int transferSize, u32 baseAddress, u32 *pData) +static void XFRegWritten(int transferSize, u32 baseAddress, u32 *pData) { u32 address = baseAddress; u32 dataIndex = 0; diff --git a/Source/UnitTests/Common/MathUtilTest.cpp b/Source/UnitTests/Common/MathUtilTest.cpp index d2056df..3df2284 100644 --- a/Source/UnitTests/Common/MathUtilTest.cpp +++ b/Source/UnitTests/Common/MathUtilTest.cpp @@ -8,24 +8,16 @@ #include "Common/MathUtil.h" -template -T ClampAndReturn(const T& val, const T& min, const T& max) -{ - T ret = val; - MathUtil::Clamp(&ret, min, max); - return ret; -} - TEST(MathUtil, Clamp) { - EXPECT_EQ(1, ClampAndReturn(1, 0, 2)); - EXPECT_EQ(1.0, ClampAndReturn(1.0, 0.0, 2.0)); + EXPECT_EQ(1, MathUtil::Clamp(1, 0, 2)); + EXPECT_EQ(1.0, MathUtil::Clamp(1.0, 0.0, 2.0)); - EXPECT_EQ(2, ClampAndReturn(4, 0, 2)); - EXPECT_EQ(2.0, ClampAndReturn(4.0, 0.0, 2.0)); + EXPECT_EQ(2, MathUtil::Clamp(4, 0, 2)); + EXPECT_EQ(2.0, MathUtil::Clamp(4.0, 0.0, 2.0)); - EXPECT_EQ(0, ClampAndReturn(-1, 0, 2)); - EXPECT_EQ(0.0, ClampAndReturn(-1.0, 0.0, 2.0)); + EXPECT_EQ(0, MathUtil::Clamp(-1, 0, 2)); + EXPECT_EQ(0.0, MathUtil::Clamp(-1.0, 0.0, 2.0)); } TEST(MathUtil, IsINF)