diff options
Diffstat (limited to 'Private')
105 files changed, 1537 insertions, 746 deletions
diff --git a/Private/HALKit/PowerPC/.gitkeep b/Private/Applications/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/HALKit/PowerPC/.gitkeep +++ b/Private/Applications/.gitkeep diff --git a/Private/ArchKit/ArchKit.hpp b/Private/ArchKit/ArchKit.hpp index ddccbb47..49c9dc94 100644 --- a/Private/ArchKit/ArchKit.hpp +++ b/Private/ArchKit/ArchKit.hpp @@ -15,7 +15,7 @@ #include <HALKit/AMD64/Hypervisor.hpp> #include <HALKit/AMD64/Processor.hpp> #elif defined(__NEWOS_PPC__) -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #else #error Unknown architecture #endif diff --git a/Private/Builtins/Toolbox/Rsrc/Cursor.rsrc b/Private/Builtins/Toolbox/Rsrc/Cursor.rsrc new file mode 100644 index 00000000..cd011ab9 --- /dev/null +++ b/Private/Builtins/Toolbox/Rsrc/Cursor.rsrc @@ -0,0 +1,46 @@ +#define CURSOR_ICON_HEIGHT 40 +#define CURSOR_ICON_WIDTH 40 + +// array size is 4800 +static const unsigned int cursor_icon[] = { + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x7b7b7b, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x9b9b9b, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5a5a5a, 0xf1f1f1, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xd5d5d5, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x373737, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x0e0e0e, 0xb8b8b8, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8b8b8b, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x7b7b7b, 0xf1f1f1, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xd5d5d5, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x494949, 0x9a9a9a, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xc6c6c6, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8a8a8a, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x8a8a8a, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x5a5a5a, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x232323, 0xf1f1f1, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x232323, 0xe3e3e3, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x0e0e0e, 0xe3e3e3, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0xb8b8b8, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x9a9a9a, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x8a8a8a, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000 +}; diff --git a/Private/Builtins/Toolbox/Rsrc/Splash.rsrc b/Private/Builtins/Toolbox/Rsrc/Splash.rsrc deleted file mode 100644 index 9b9a3e45..00000000 --- a/Private/Builtins/Toolbox/Rsrc/Splash.rsrc +++ /dev/null @@ -1,74 +0,0 @@ -#pragma once - -#define MAHROUSSLOGIC_HEIGHT 66 -#define MAHROUSSLOGIC_WIDTH 66 - -// array size is 13068 -inline const unsigned int MahroussLogic[] = { - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, - 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0x000000, - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff -};
\ No newline at end of file diff --git a/Private/Builtins/Toolbox/Toolbox.hxx b/Private/Builtins/Toolbox/Toolbox.hxx index 2ac23267..5a510a5a 100644 --- a/Private/Builtins/Toolbox/Toolbox.hxx +++ b/Private/Builtins/Toolbox/Toolbox.hxx @@ -21,27 +21,36 @@ EXTERN_C NewOS::Boolean _hal_right_button_pressed(); #define ToolboxClearRsrc() uA = 0 +/// @brief Performs OR drawing on the framebuffer. +#define ToolboxDrawOrRsrc(ImgPtr, _Height, _Width, BaseX, BaseY) \ + uA = 0; \ + \ + for (NewOS::SizeT i = BaseX; i < _Height + BaseX; ++i) { \ + for (NewOS::SizeT u = BaseY; u < _Width + BaseY; ++u) { \ + *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ + 4 * \ + kHandoverHeader->f_GOP \ + .f_PixelPerLine * \ + i + \ + 4 * u))) |= ImgPtr[uA]; \ + \ + ++uA; \ + } \ + } + + /// @brief Draws a resource. #define ToolboxDrawRsrc(ImgPtr, _Height, _Width, BaseX, BaseY) \ uA = 0; \ \ for (NewOS::SizeT i = BaseX; i < _Height + BaseX; ++i) { \ for (NewOS::SizeT u = BaseY; u < _Width + BaseY; ++u) { \ - if (ImgPtr[uA] == 0) { \ *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ - 4 * \ - kHandoverHeader->f_GOP \ - .f_PixelPerLine * \ - i + \ - 4 * u))) |= ImgPtr[uA]; \ - } else { \ - *(((volatile NewOS::UInt32*)(kHandoverHeader->f_GOP.f_The + \ - 4 * \ - kHandoverHeader->f_GOP \ - .f_PixelPerLine * \ - i + \ - 4 * u))) = ImgPtr[uA]; \ - } \ + 4 * \ + kHandoverHeader->f_GOP \ + .f_PixelPerLine * \ + i + \ + 4 * u))) = ImgPtr[uA]; \ \ ++uA; \ } \ @@ -76,4 +85,3 @@ EXTERN_C NewOS::Boolean _hal_right_button_pressed(); 4 * u))) = _Clr; \ } \ } - diff --git a/Private/CFKit/Property.hpp b/Private/CFKit/Property.hpp index ea427481..10c8ebf0 100644 --- a/Private/CFKit/Property.hpp +++ b/Private/CFKit/Property.hpp @@ -15,6 +15,7 @@ namespace NewOS { using PropertyId = Int; +/// @brief Kernel property class. class Property { public: explicit Property(const StringView &sw) : fName(sw) {} diff --git a/Private/Documentation/Spec.md b/Private/Documentation/Spec.md index 458d17a9..e218947e 100644 --- a/Private/Documentation/Spec.md +++ b/Private/Documentation/Spec.md @@ -1,13 +1,17 @@ =================================== + # 0: General Information + =================================== - ABI and Format: PEF/PE32+. -- Kernel architecture: Microkernel. -- Language: C++/(Assembly (AMD64, X64000, X86S, ARM64, PowerPC, RISCV)) +- Kernel architecture: Portable hybrid kernel. +- Language: C++/(Assembly (AMD64, X64000, X86S, ARM64, POWER, RISCV)) =================================== + # 1: The NewKernel + =================================== - Drive/Device Abstraction. @@ -25,7 +29,9 @@ - Permission Selectors. =================================== + # 2: The Filesystem + =================================== - Catalog object with associated forks. @@ -34,7 +40,9 @@ - UNIX path style. ================================== + # 3: Common naming conventions: + ================================== - Kernel -> ke_init_x @@ -42,11 +50,13 @@ - Hal -> hal_foo_bar =================================== + # 4: The NewBoot + =================================== - Capable of booting from a network drive. - Loads a PE file which is the kernel. -- Sanity checks, based on the number of sections. +- Sanity checks, based on the number of sections. - Handover compliant. - Does check for a valid partition (useful in the case of recovering) diff --git a/Private/DriverKit/KernelDev.c b/Private/DriverKit/KernelDev.c new file mode 100644 index 00000000..e8c041af --- /dev/null +++ b/Private/DriverKit/KernelDev.c @@ -0,0 +1,31 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Text I/O. + +------------------------------------------- */ + +#include <DriverKit/KernelDev.h> + +/// @brief Open a new binary device from path. +DK_EXTERN kernelDeviceRef kernelOpenBinaryDevice(const char* devicePath) { + if (!devicePath) return NIL; + + return kernelCall("OpenBinaryDevice", 1, devicePath); +} + +/// @brief Open a new character device from path. +DK_EXTERN kernelDeviceRef kernelOpenCharDevice(const char* devicePath) { + if (!devicePath) return NIL; + + return kernelCall("OpenCharDevice", 1, devicePath); +} + +/// @brief Close any device. +/// @param device valid device. +DK_EXTERN void kernelCloseDevice(kernelDeviceRef device) { + if (!device) return; + + kernelCall("CloseDevice", 1, device); +} diff --git a/Private/DriverKit/KernelDev.h b/Private/DriverKit/KernelDev.h new file mode 100644 index 00000000..daa60a7c --- /dev/null +++ b/Private/DriverKit/KernelDev.h @@ -0,0 +1,28 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Devices. + +------------------------------------------- */ + +#pragma once + +#include <DriverKit/KernelStd.h> + +typedef struct _kernelDevice { + int32_t(*read)(); // read from device. + int32_t(*write)(); // write to device. + struct _kernelDevice* (*open)(const char* path); // open device. + void (*close)(struct _kernelDevice* dev); // close device. +} kernelDevice,* kernelDeviceRef; + +/// @brief Open a new binary device from path. +DK_EXTERN kernelDeviceRef kernelOpenBinaryDevice(const char* devicePath); + +/// @brief Open a new character device from path. +DK_EXTERN kernelDeviceRef kernelOpenCharDevice(const char* devicePath); + +/// @brief Close any device. +/// @param device valid device. +DK_EXTERN void kernelCloseDevice(kernelDeviceRef device); diff --git a/Private/DriverKit/KernelDispatchCall.S b/Private/DriverKit/KernelDispatchCall.S new file mode 100644 index 00000000..4eec8ae0 --- /dev/null +++ b/Private/DriverKit/KernelDispatchCall.S @@ -0,0 +1,21 @@ +.globl __kernelDispatchCall + +.section .text + +/* Really simple function, takes our va-list, + and brings it to the trap handler in the kernel. */ + +#ifdef __x86_64__ + +__kernelDispatchCall: + int $0x33 + ret + +#elif defined(__powerpc64__) + +__kernelDispatchCall: + mflr 3 + sc + blr + +#endif diff --git a/Private/DriverKit/KernelPrint.c b/Private/DriverKit/KernelPrint.c new file mode 100644 index 00000000..5ca09ccf --- /dev/null +++ b/Private/DriverKit/KernelPrint.c @@ -0,0 +1,28 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Text I/O. + +------------------------------------------- */ + +#include <DriverKit/KernelPrint.h> + +DK_EXTERN void kernelPrintChar(const char ch) { + kernelCall("WriteCharacter", 1, ch); +} + +/// @brief print string to UART. +/// @param message UART to transmit. +DK_EXTERN void kernelPrintStr(const char* message) { + if (!message) return; + if (*message == 0) return; + + size_t index = 0; + size_t len = kernelStringLength(message); + + while (index < len) { + kernelPrintChar(message[index]); + ++index; + } +} diff --git a/Private/DriverKit/KernelPrint.h b/Private/DriverKit/KernelPrint.h new file mode 100644 index 00000000..36e55442 --- /dev/null +++ b/Private/DriverKit/KernelPrint.h @@ -0,0 +1,18 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Text I/O. + +------------------------------------------- */ + +#pragma once + +#include <DriverKit/KernelString.h> + +/// @brief print character into UART. +DK_EXTERN void kernelPrintChar(const char ch); + +/// @brief print string to UART. +/// @param message UART to transmit. +DK_EXTERN void kernelPrintStr(const char* message); diff --git a/Private/DriverKit/KernelStd.c b/Private/DriverKit/KernelStd.c new file mode 100644 index 00000000..494ac0bc --- /dev/null +++ b/Private/DriverKit/KernelStd.c @@ -0,0 +1,24 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Definitions. + +------------------------------------------- */ + +#include <DriverKit/KernelStd.h> +#include <stdarg.h> + +DK_EXTERN __attribute__((naked)) void __kernelDispatchCall(int32_t cnt, ...); + +DK_EXTERN void* kernelCall(const char* kernelRpcName, int32_t cnt, ...) { + if (!kernelRpcName || cnt == 0) return NIL; + + va_list arg; + va_start(arg, cnt); + + __kernelDispatchCall(cnt, arg); + + va_end(arg); + +} diff --git a/Private/DriverKit/KernelStd.h b/Private/DriverKit/KernelStd.h new file mode 100644 index 00000000..3344630e --- /dev/null +++ b/Private/DriverKit/KernelStd.h @@ -0,0 +1,22 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Definitions. + +------------------------------------------- */ + +#pragma once + +#if defined(__cplusplus) +#define DK_EXTERN extern "C" +#define NIL nullptr +#else +#define DK_EXTERN extern +#define NIL NULL +#endif // defined(__cplusplus) + +#include <stdint.h> +#include <stddef.h> + +DK_EXTERN void* kernelCall(const char* kernelRpcName, int32_t cnt, ...); diff --git a/Private/DriverKit/KernelStdCxx.cc b/Private/DriverKit/KernelStdCxx.cc new file mode 100644 index 00000000..79d41a72 --- /dev/null +++ b/Private/DriverKit/KernelStdCxx.cc @@ -0,0 +1,24 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Driver C++ Definitions. + +------------------------------------------- */ + +#include <DriverKit/KernelStd.h> + +void* operator new(size_t sz) { + if (!sz) ++sz; + + auto ptr = kernelCall("NewKernelHeap", 1, sz); + kernelCall("KernelHeapProtect", 1, ptr); + + return ptr; +} + +void operator delete(void* ptr) noexcept { + if (!ptr) return; + + kernelCall("DeleteKernelHeap", 1,ptr); +} diff --git a/Private/DriverKit/KernelString.c b/Private/DriverKit/KernelString.c new file mode 100644 index 00000000..0bb45b16 --- /dev/null +++ b/Private/DriverKit/KernelString.c @@ -0,0 +1,30 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Strings. + +------------------------------------------- */ + +#include <DriverKit/KernelString.h> + +DK_EXTERN size_t kernelStringLength(const char* str) { + size_t index = 0; + + while (str[index] != 0) { + ++index; + } + + return index; +} + +DK_EXTERN int kernelStringCopy(char* dst, const char* src, size_t len) { + size_t index = 0; + + while (index != len) { + dst[index] = src[index]; + ++index; + } + + return index; +} diff --git a/Private/DriverKit/KernelString.h b/Private/DriverKit/KernelString.h new file mode 100644 index 00000000..8e189d26 --- /dev/null +++ b/Private/DriverKit/KernelString.h @@ -0,0 +1,16 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + Purpose: Kernel Strings. + +------------------------------------------- */ + +#pragma once + +#include <DriverKit/KernelStd.h> + +/// @brief DriverKit equivalent of POSIX's string.h. + +DK_EXTERN size_t kernelStringLength(const char* str); +DK_EXTERN int kernelStringCopy(char* dst, const char* src, size_t len); diff --git a/Private/HALKit/PowerPC/APM/.gitkeep b/Private/Drivers/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/HALKit/PowerPC/APM/.gitkeep +++ b/Private/Drivers/.gitkeep diff --git a/Private/Drivers/Bonjour/Bonjour.c b/Private/Drivers/Bonjour/Bonjour.c new file mode 100644 index 00000000..dba649c9 --- /dev/null +++ b/Private/Drivers/Bonjour/Bonjour.c @@ -0,0 +1,18 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include <DriverKit/KernelString.h> +#include <DriverKit/KernelPrint.h> + +int __ImageStart(void) { + kernelPrintStr("Bonjour: Starting up zeroconf...\r\n"); + return 0; +} + +int __ImageEnd(void) { + kernelPrintStr("Bonjour: Shutting down zeroconf...\r\n"); + return 0; +} diff --git a/Private/Drivers/Bonjour/DriverRsrc.rsrc b/Private/Drivers/Bonjour/DriverRsrc.rsrc new file mode 100644 index 00000000..ed24e10e --- /dev/null +++ b/Private/Drivers/Bonjour/DriverRsrc.rsrc @@ -0,0 +1,25 @@ +1 ICON "../../Root/Boot/Icons/bonjour-logo.ico" + +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904E4" + BEGIN + VALUE "CompanyName", "Mahrouss-Logic" + VALUE "FileDescription", "New OS Bonjour driver." + VALUE "FileVersion", "1.00" + VALUE "InternalName", "Bonjour." + VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." + VALUE "OriginalFilename", "Bonjour.exe" + VALUE "ProductName", "Bonjour." + VALUE "ProductVersion", "1.00" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1252 + END +END diff --git a/Private/Drivers/Bonjour/x86_64.mk b/Private/Drivers/Bonjour/x86_64.mk new file mode 100644 index 00000000..3461b2a3 --- /dev/null +++ b/Private/Drivers/Bonjour/x86_64.mk @@ -0,0 +1,52 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the sample driver makefile. +################################################## + +CC_GNU=x86_64-w64-mingw32-gcc +LD_GNU=x86_64-w64-mingw32-ld + +WINDRES=x86_64-w64-mingw32-windres + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +LD_FLAGS=-e __ImageStart --subsystem=17 + +OBJ=*.o + + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -std=c17 -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make all instead." + +.PHONY: all +all: compile-amd64 + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o Bonjour.exe + cp Bonjour.exe ../../Root/Boot/Bonjour.exe + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o + $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.S) + +.PHONY: clean +clean: + $(REM) $(REM_FLAG) $(OBJ) Bonjour.exe + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "clean: Clean driver." + @echo "compile-amd64: Build driver." diff --git a/Private/Drivers/MahroussUpdate/DriverRsrc.rsrc b/Private/Drivers/MahroussUpdate/DriverRsrc.rsrc new file mode 100644 index 00000000..359a0875 --- /dev/null +++ b/Private/Drivers/MahroussUpdate/DriverRsrc.rsrc @@ -0,0 +1,25 @@ +1 ICON "../../Root/Boot/Icons/update-logo.ico" + +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904E4" + BEGIN + VALUE "CompanyName", "Mahrouss-Logic" + VALUE "FileDescription", "New OS Mahrouss Update driver." + VALUE "FileVersion", "1.00" + VALUE "InternalName", "Mahrouss Update." + VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." + VALUE "OriginalFilename", "MahroussUpdate.exe" + VALUE "ProductName", "MahroussUpdate." + VALUE "ProductVersion", "1.00" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1252 + END +END diff --git a/Private/Drivers/MahroussUpdate/MahroussUpdate.cc b/Private/Drivers/MahroussUpdate/MahroussUpdate.cc new file mode 100644 index 00000000..c8741ed0 --- /dev/null +++ b/Private/Drivers/MahroussUpdate/MahroussUpdate.cc @@ -0,0 +1,24 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include <DriverKit/KernelString.h> +#include <DriverKit/KernelPrint.h> + +#include <Drivers/MahroussUpdate/MahroussUpdate.hxx> + +DK_EXTERN int __ImageStart(void) { + kernelPrintStr("Mahrouss Update: Looking for updates...\r\n"); + UpdateRequest req("mup://release-mahrouss.logic/newos/"); + + return 0; +} + +DK_EXTERN int __ImageEnd(void) { + return 0; +} + +///! @brief Use this to check your stack, if using MinGW/MSVC. +DK_EXTERN void ___chkstk_ms(void) {} diff --git a/Private/Drivers/MahroussUpdate/MahroussUpdate.hxx b/Private/Drivers/MahroussUpdate/MahroussUpdate.hxx new file mode 100644 index 00000000..a4f219be --- /dev/null +++ b/Private/Drivers/MahroussUpdate/MahroussUpdate.hxx @@ -0,0 +1,33 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#pragma once + +#include <DriverKit/KernelString.h> + +#include "DriverKit/KernelPrint.h" + +/// @file Software update job driver. + +class UpdateRequest; +class UpdateRequestObserver; + +class UpdateRequest { + public: + explicit UpdateRequest(const char* patchUrl = "mup://invalid-url-scheme/") { + kernelStringCopy(this->fPatchUrl, patchUrl, kernelStringLength(patchUrl)); + + kernelPrintStr("Mahrouss Update, Looking at: "); + kernelPrintStr(patchUrl); + kernelPrintChar('\r'); + kernelPrintChar('\n'); + } + + ~UpdateRequest() {} + + private: + char fPatchUrl[4096] = {0}; +}; diff --git a/Private/Drivers/MahroussUpdate/x86_64.mk b/Private/Drivers/MahroussUpdate/x86_64.mk new file mode 100644 index 00000000..cffa0ab7 --- /dev/null +++ b/Private/Drivers/MahroussUpdate/x86_64.mk @@ -0,0 +1,53 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the sample driver makefile. +################################################## + +CC_GNU=x86_64-w64-mingw32-gcc +LD_GNU=x86_64-w64-mingw32-ld + +WINDRES=x86_64-w64-mingw32-windres + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +LD_FLAGS=-e __ImageStart --subsystem=17 + +OBJ=*.o + + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make all instead." + +.PHONY: all +all: compile-amd64 + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o MahroussUpdate.exe + cp MahroussUpdate.exe ../../Root/Boot/MahroussUpdate.exe + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o + $(CC_GNU) $(FLAG_GNU) -std=c17 $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.S) + $(CC_GNU) $(FLAG_GNU) -std=c++17 -fno-rtti -fno-exceptions $(DEBUG) $(wildcard *.cc) $(wildcard ../../DriverKit/*.cc) + +.PHONY: clean +clean: + $(REM) $(REM_FLAG) $(OBJ) MahroussUpdate.exe + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "clean: Clean driver." + @echo "compile-amd64: Build driver." diff --git a/Private/Drivers/SampleDriver/DriverRsrc.rsrc b/Private/Drivers/SampleDriver/DriverRsrc.rsrc new file mode 100644 index 00000000..5129b077 --- /dev/null +++ b/Private/Drivers/SampleDriver/DriverRsrc.rsrc @@ -0,0 +1,25 @@ +1 ICON "../../Root/Boot/Icons/driver-logo.ico" + +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "080904E4" + BEGIN + VALUE "CompanyName", "Mahrouss-Logic" + VALUE "FileDescription", "New OS driver." + VALUE "FileVersion", "1.00" + VALUE "InternalName", "SampleDriver" + VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." + VALUE "OriginalFilename", "SampleDriver.exe" + VALUE "ProductName", "SampleDriver" + VALUE "ProductVersion", "1.00" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x809, 1252 + END +END diff --git a/Private/Drivers/SampleDriver/SampleDriver.c b/Private/Drivers/SampleDriver/SampleDriver.c new file mode 100644 index 00000000..4481d480 --- /dev/null +++ b/Private/Drivers/SampleDriver/SampleDriver.c @@ -0,0 +1,21 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +#include <DriverKit/KernelString.h> +#include <DriverKit/KernelPrint.h> + +int __ImageStart(void) { + kernelPrintStr("SampleDriver: Starting up...\r\n"); + return 0; +} + +int __ImageEnd(void) { + kernelPrintStr("SampleDriver: Shutting down...\r\n"); + return 0; +} + +///! @brief Use this to check your stack, if using MinGW/MSVC. +void ___chkstk_ms(void) {} diff --git a/Private/Drivers/SampleDriver/x86_64.mk b/Private/Drivers/SampleDriver/x86_64.mk new file mode 100644 index 00000000..f8d56b08 --- /dev/null +++ b/Private/Drivers/SampleDriver/x86_64.mk @@ -0,0 +1,52 @@ +################################################## +# (C) Mahrouss Logic, all rights reserved. +# This is the sample driver makefile. +################################################## + +CC_GNU=x86_64-w64-mingw32-gcc +LD_GNU=x86_64-w64-mingw32-ld + +WINDRES=x86_64-w64-mingw32-windres + +ADD_FILE=touch +COPY=cp +HTTP_GET=wget + +LD_FLAGS=-e __ImageStart --subsystem=17 + +OBJ=*.o + + +REM=rm +REM_FLAG=-f + +FLAG_ASM=-f win64 +FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KERNEL__ -DEFI_FUNCTION_WRAPPER -I../ -I../../ -I./ -c -ffreestanding -std=c17 -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -D__BOOTLOADER__ -I./ + +.PHONY: invalid-recipe +invalid-recipe: + @echo "invalid-recipe: Use make all instead." + +.PHONY: all +all: compile-amd64 + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o SampleDriver.exe + cp SampleDriver.exe ../../Root/Boot/SampleDriver.exe + +ifneq ($(DEBUG_SUPPORT), ) +DEBUG = -D__DEBUG__ +endif + +.PHONY: compile-amd64 +compile-amd64: + $(WINDRES) DriverRsrc.rsrc -O coff -o DriverRsrc.o + $(CC_GNU) $(FLAG_GNU) $(DEBUG) $(wildcard *.c) $(wildcard ../../DriverKit/*.c) $(wildcard ../../DriverKit/*.S) + +.PHONY: clean +clean: + $(REM) $(REM_FLAG) $(OBJ) SampleDriver.exe + +.PHONY: help +help: + @echo "=== HELP ===" + @echo "clean: Clean driver." + @echo "compile-amd64: Build driver." diff --git a/Private/FSKit/NewFS.hxx b/Private/FSKit/NewFS.hxx index 3f93700f..339b9832 100644 --- a/Private/FSKit/NewFS.hxx +++ b/Private/FSKit/NewFS.hxx @@ -30,7 +30,11 @@ default. #define kNewFSInvalidCatalog -1 #define kNewFSNodeNameLen 256 -#define kNewFSMinimumSectorSz 4096 +#ifdef __x86_64__ +#define kNewFSMinimumSectorSz (512) +#else +#define kNewFSMinimumSectorSz (1024) +#endif // ifdef __x86_64__ #define kNewFSIdentLen 8 #define kNewFSIdent " NewFS" @@ -105,6 +109,7 @@ enum { /// @brief Ccatalog type. struct PACKED NewCatalog final { NewCharType Name[kNewFSNodeNameLen]; + NewCharType Mime[kNewFSNodeNameLen]; NewOS::Int32 Flags; NewOS::Int32 Kind; @@ -173,7 +178,7 @@ enum { /// forks...) Designed like the DOM, detects the filesystem automatically. /// -class NewFSParser final { +class NewFSParser { public: explicit NewFSParser() = default; ~NewFSParser() = default; diff --git a/Private/HALKit/PowerPC/PCI/.gitkeep b/Private/FirmwareKit/CoreBoot/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/HALKit/PowerPC/PCI/.gitkeep +++ b/Private/FirmwareKit/CoreBoot/.gitkeep diff --git a/Private/FirmwareKit/EFI/API.hxx b/Private/FirmwareKit/EFI/API.hxx index cfb3f425..138d6b42 100644 --- a/Private/FirmwareKit/EFI/API.hxx +++ b/Private/FirmwareKit/EFI/API.hxx @@ -19,7 +19,7 @@ EXTERN_C void rt_hlt(); namespace EFI { /// @brief Halt and clear interrupts. -/// @return +/// @return inline Void Stop() noexcept { while (1) { rt_hlt(); @@ -51,7 +51,7 @@ inline UInt32 Platform() noexcept { return kPEMachineAMD64; } */ inline void RaiseHardError(const EfiCharType *ErrorCode, const EfiCharType *Reason) noexcept { - ST->ConOut->OutputString(ST->ConOut, L"*** STOP ***\r\n"); + ST->ConOut->OutputString(ST->ConOut, L"\r\n*** STOP ***\r\n"); ST->ConOut->OutputString(ST->ConOut, L"*** Error: "); ST->ConOut->OutputString(ST->ConOut, ErrorCode); diff --git a/Private/FirmwareKit/EFI/EFI.hxx b/Private/FirmwareKit/EFI/EFI.hxx index 1d56f757..7f8223cf 100644 --- a/Private/FirmwareKit/EFI/EFI.hxx +++ b/Private/FirmwareKit/EFI/EFI.hxx @@ -571,8 +571,6 @@ typedef struct EfiSystemTable { } *ConfigurationTable; } EfiSystemTable; -#define EfiMain efi_main - #define kEfiOk 0 #define kEfiFail -1 diff --git a/Private/FirmwareKit/EPM.hxx b/Private/FirmwareKit/EPM.hxx index 5cc743be..b7f77742 100644 --- a/Private/FirmwareKit/EPM.hxx +++ b/Private/FirmwareKit/EPM.hxx @@ -71,7 +71,7 @@ struct PACKED PartitionBlock { #define kEPMMagic32k "EPM32" -/* @brief PowerPC magic for EPM */ +/* @brief POWER magic for EPM */ #define kEPMMagicPPC "EPMPC" diff --git a/Private/HALKit/64x0/HalVirtualMemory.cxx b/Private/HALKit/64x0/HalVirtualMemory.cxx index 8fc08df0..2ae0f7ac 100644 --- a/Private/HALKit/64x0/HalVirtualMemory.cxx +++ b/Private/HALKit/64x0/HalVirtualMemory.cxx @@ -4,11 +4,11 @@ ------------------------------------------- */ -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #include <KernelKit/DebugOutput.hpp> using namespace NewOS; -/// @brief Flush system TLB, looks like the PowerPC version, as it acts the same, no specific instruction for that. +/// @brief Flush system TLB, looks like the POWER version, as it acts the same, no specific instruction for that. /// @note The 88K MMU should be present in the die. -EXTERN_C void hal_flush_tlb() { asm volatile("isync;invltlb;msync;isync"); } +EXTERN_C void hal_flush_tlb() { asm volatile("invltlb"); } diff --git a/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp b/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp index aa9c0e47..99a66532 100644 --- a/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp +++ b/Private/HALKit/AMD64/HalCoreInterruptHandlerAMD64.cpp @@ -9,86 +9,86 @@ #include <NewKit/String.hpp> /// @brief Handle GPF fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_gpf(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); - NewOS::kcout << "NewOS: Stack Pointer: " + NewOS::kcout << "New OS: Stack Pointer: " << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: General Protection Fault, caused by " + << "New OS: General Protection Fault, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle the scheduler interrupt, raised from the HPET timer. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_scheduler(NewOS::UIntPtr rsp) { NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: Will be scheduled back later " + << "New OS: Will be scheduled back later " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName() << NewOS::end_line(); /// schedule another process. if (!NewOS::ProcessHelper::StartScheduling()) { - NewOS::kcout << "NewOS: Continue schedule this process...\r\n"; + NewOS::kcout << "New OS: Continue schedule this process...\r\n"; } } /// @brief Handle page fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_pf(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: Segmentation Fault, caused by " + << "New OS: Segmentation Fault, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle math fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_math(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); NewOS::kcout << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: Math error, caused by " + << "New OS: Math error, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle any generic fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_generic(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); NewOS::kcout << NewOS::StringBuilder::FromInt("sp{%}", rsp); NewOS::kcout - << "NewOS: Execution error, caused by " + << "New OS: Execution error, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } /// @brief Handle #UD fault. -/// @param rsp +/// @param rsp EXTERN_C void idt_handle_ud(NewOS::UIntPtr rsp) { MUST_PASS(NewOS::ProcessScheduler::Shared().Leak().GetCurrent()); - NewOS::kcout << "NewOS: Stack Pointer: " + NewOS::kcout << "New OS: Stack Pointer: " << NewOS::StringBuilder::FromInt("rsp{%}", rsp); NewOS::kcout - << "NewOS: Invalid interrupt, caused by " + << "New OS: Invalid interrupt, caused by " << NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().GetName(); NewOS::ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); -}
\ No newline at end of file +} diff --git a/Private/HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp b/Private/HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp index 98d64215..0761114d 100644 --- a/Private/HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp +++ b/Private/HALKit/AMD64/HalCoreMultiProcessingAMD64.cpp @@ -92,14 +92,14 @@ STATIC MadtType* kApicInfoBlock = nullptr; /////////////////////////////////////////////////////////////////////////////////////// void hal_system_get_cores(voidPtr rsdPtr) { - kcout << "NewOS: Constructing ACPIFactoryInterface...\r\n"; + kcout << "New OS: Constructing ACPIFactoryInterface...\r\n"; auto acpi = ACPIFactoryInterface(rsdPtr); kApicMadt = acpi.Find(kApicSignature).Leak().Leak(); MUST_PASS(kApicMadt); // MADT must exist. - kcout << "NewOS: Successfuly fetched the MADT!\r\n"; + kcout << "New OS: Successfuly fetched the MADT!\r\n"; kApicInfoBlock = (MadtType*)kApicMadt; } diff --git a/Private/HALKit/AMD64/HalHardwareMP.cpp b/Private/HALKit/AMD64/HalHardwareMP.cpp index 0e9f3022..135222b9 100644 --- a/Private/HALKit/AMD64/HalHardwareMP.cpp +++ b/Private/HALKit/AMD64/HalHardwareMP.cpp @@ -19,20 +19,12 @@ void rt_wakeup_thread(HAL::StackFrame* stack) { HAL::rt_sti(); } -/// @brief Hangs until RCX register is cleared. -/// @param stack -static void __rt_hang_proc(HAL::StackFrame* stack) { - while (stack->Rcx == 1) { - ; - } -} - /// @brief makes thread sleep. /// hooks and hangs thread to prevent code from executing. void rt_hang_thread(HAL::StackFrame* stack) { HAL::rt_cli(); - __rt_hang_proc(stack); + stack->Rcx = 1; HAL::rt_sti(); } diff --git a/Private/HALKit/AMD64/HalKernelMain.cxx b/Private/HALKit/AMD64/HalKernelMain.cxx index f6b8e957..57c37778 100644 --- a/Private/HALKit/AMD64/HalKernelMain.cxx +++ b/Private/HALKit/AMD64/HalKernelMain.cxx @@ -5,7 +5,6 @@ ------------------------------------------- */ #include <ArchKit/ArchKit.hpp> -#include <Builtins/Toolbox/Rsrc/Splash.rsrc> #include <Builtins/Toolbox/Toolbox.hxx> #include <FirmwareKit/Handover.hxx> #include <KernelKit/FileManager.hpp> @@ -17,7 +16,7 @@ #include <NewKit/Json.hpp> EXTERN_C NewOS::VoidPtr kInterruptVectorTable[]; -EXTERN_C void RuntimeMain(); +EXTERN_C void AppMain(); namespace NewOS::HAL { /// @brief Gets the system cores using the MADT. @@ -74,16 +73,7 @@ EXTERN_C void hal_init_platform( /// END POST - ToolboxInitRsrc(); - - ToolboxDrawRsrc( - MahroussLogic, MAHROUSSLOGIC_HEIGHT, MAHROUSSLOGIC_WIDTH, - ((kHandoverHeader->f_GOP.f_Width - MAHROUSSLOGIC_WIDTH) / 2), - ((kHandoverHeader->f_GOP.f_Height - MAHROUSSLOGIC_HEIGHT) / 2)); - - ToolboxClearRsrc(); - - RuntimeMain(); + AppMain(); NewOS::ke_stop(RUNTIME_CHECK_BOOTSTRAP); } diff --git a/Private/HALKit/AMD64/Processor.hpp b/Private/HALKit/AMD64/Processor.hpp index 7e2624d7..70452d1d 100644 --- a/Private/HALKit/AMD64/Processor.hpp +++ b/Private/HALKit/AMD64/Processor.hpp @@ -26,11 +26,11 @@ #define IsActiveLow(FLG) (FLG & 2) #define IsLevelTriggered(FLG) (FLG & 8) -#define kInterruptGate 0x8E -#define kTrapGate 0xEF -#define kTaskGate 0b10001100 -#define kGdtCodeSelector 0x08 -#define kVirtualAddressStartOffset 0x100 +#define kInterruptGate (0x8E) +#define kTrapGate (0xEF) +#define kTaskGate (0b10001100) +#define kGdtCodeSelector (0x08) +#define kVirtualAddressStartOffset (0x100) namespace NewOS { namespace Detail::AMD64 { diff --git a/Private/HALKit/AMD64/Storage/ATA-PIO.cxx b/Private/HALKit/AMD64/Storage/ATA-PIO.cxx index ebced11c..3cbba6f7 100644 --- a/Private/HALKit/AMD64/Storage/ATA-PIO.cxx +++ b/Private/HALKit/AMD64/Storage/ATA-PIO.cxx @@ -72,7 +72,7 @@ ATAInit_Retry: auto statRdy = In8(IO + ATA_REG_STATUS); if (statRdy & ATA_SR_ERR) { - kcout << "NewOS: ATA: Select error, not an IDE based hard-drive.\r\n"; + kcout << "New OS: ATA: Select error, not an IDE based hard-drive.\r\n"; return false; } @@ -107,21 +107,21 @@ ATAInit_Retry: /* differentiate ATA, ATAPI, SATA and SATAPI */ if (cl == 0x14 && ch == 0xEB) { - kcout << "NewOS: PATAPI drive detected.\r\n"; + kcout << "New OS: PATAPI drive detected.\r\n"; kATADeviceType = kATADevicePATA_PI; } if (cl == 0x69 && ch == 0x96) { - kcout << "NewOS: SATAPI drive detected.\r\n"; + kcout << "New OS: SATAPI drive detected.\r\n"; kATADeviceType = kATADeviceSATA_PI; } if (cl == 0x0 && ch == 0x0) { - kcout << "NewOS: PATA drive detected.\r\n"; + kcout << "New OS: PATA drive detected.\r\n"; kATADeviceType = kATADevicePATA; } if (cl == 0x3c && ch == 0xc3) { - kcout << "NewOS: SATA drive detected.\r\n"; + kcout << "New OS: SATA drive detected.\r\n"; kATADeviceType = kATADeviceSATA; } @@ -148,7 +148,7 @@ Void drv_std_read(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff) { WideChar chr = In16(IO + ATA_REG_DATA); - + Buf[IndexOff] = chr; } } @@ -171,11 +171,11 @@ Void drv_std_write(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff) { Out16(IO + ATA_REG_DATA, Buf[IndexOff]); - + } } /// @check is ATA detected? Boolean drv_std_detected(Void) { return kATADetected; } -#endif /* ifdef __ATA_PIO__ */
\ No newline at end of file +#endif /* ifdef __ATA_PIO__ */ diff --git a/Private/NewBoot/Source/CDROM/.gitkeep b/Private/HALKit/POWER/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/NewBoot/Source/CDROM/.gitkeep +++ b/Private/HALKit/POWER/.gitkeep diff --git a/Private/NewBoot/Source/CDROM/EFI/BOOT/.gitkeep b/Private/HALKit/POWER/APM/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/NewBoot/Source/CDROM/EFI/BOOT/.gitkeep +++ b/Private/HALKit/POWER/APM/.gitkeep diff --git a/Private/HALKit/POWER/HalContextSwitchPowerPC.s b/Private/HALKit/POWER/HalContextSwitchPowerPC.s new file mode 100644 index 00000000..75c9f37a --- /dev/null +++ b/Private/HALKit/POWER/HalContextSwitchPowerPC.s @@ -0,0 +1,28 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +.align 4 +.type name, @function +.text +.globl rt_do_context_switch + +/* r3 (3) = assigner stack, r4 (4) = assignee stack */ +rt_do_context_switch: + lwz 0(%4), 0(%3) + lwz 4(%4), 4(%3) + lwz 8(%4), 8(%3) + lwz 12(%4), 12(%3) + lwz 14(%4), 14(%3) + lwz 18(%4), 18(%3) + lwz 22(%4), 22(%3) + lwz 24(%4), 24(%3) + lwz 28(%4), 28(%3) + lwz 32(%4), 32(%3) + lwz 34(%4), 34(%3) + lwz 38(%4), 38(%3) + + /* we are done here, the assignee should start executing code now. */ + blr diff --git a/Private/HALKit/PowerPC/HalHardware.cxx b/Private/HALKit/POWER/HalHardware.cxx index 5d09805d..693bf70e 100644 --- a/Private/HALKit/PowerPC/HalHardware.cxx +++ b/Private/HALKit/POWER/HalHardware.cxx @@ -4,7 +4,7 @@ ------------------------------------------- */ -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #include <KernelKit/DebugOutput.hpp> namespace NewOS { diff --git a/Private/HALKit/PowerPC/HalSMPManager.cxx b/Private/HALKit/POWER/HalHart.cxx index 26ebc399..75eeb3f7 100644 --- a/Private/HALKit/PowerPC/HalSMPManager.cxx +++ b/Private/HALKit/POWER/HalHart.cxx @@ -4,8 +4,9 @@ ------------------------------------------- */ -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #include <KernelKit/DebugOutput.hpp> +#include <HALKit/POWER/Hart.hxx> using namespace NewOS; @@ -15,4 +16,4 @@ void rt_wakeup_thread(HAL::StackFramePtr stack) {} /// @brief makes thread sleep. /// hooks and hangs thread to prevent code from executing. -void rt_hang_thread(HAL::StackFramePtr stack) {}
\ No newline at end of file +void rt_hang_thread(HAL::StackFramePtr stack) {} diff --git a/Private/HALKit/PowerPC/HalSerialPort.cxx b/Private/HALKit/POWER/HalSerialPort.cxx index 36878b61..cf943371 100644 --- a/Private/HALKit/PowerPC/HalSerialPort.cxx +++ b/Private/HALKit/POWER/HalSerialPort.cxx @@ -4,13 +4,13 @@ ------------------------------------------- */ -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #include <KernelKit/DebugOutput.hpp> using namespace NewOS; /// @brief Writes to COM1. -/// @param bytes +/// @param bytes void ke_io_write(const Char* bytes) { if (!bytes) return; @@ -21,4 +21,4 @@ void ke_io_write(const Char* bytes) { // TODO ++index; } -}
\ No newline at end of file +} diff --git a/Private/Servers/CoreDisplay/Headers/CDBitBlt.h b/Private/HALKit/POWER/HalStartSequence.s index 21823755..f50a4d4f 100644 --- a/Private/Servers/CoreDisplay/Headers/CDBitBlt.h +++ b/Private/HALKit/POWER/HalStartSequence.s @@ -2,9 +2,13 @@ Copyright Mahrouss Logic - File: CDBitBlt.h - Purpose: Userbuffer to Framebuffer magic. - ------------------------------------------- */ -#pragma once
\ No newline at end of file +.globl Main +.extern HalKernelMain +.align 4 +.text + +Main: + bl HalKernelMain + blr diff --git a/Private/HALKit/PowerPC/HalThread.cxx b/Private/HALKit/POWER/HalThread.cxx index a91e7f28..c79b4fb7 100644 --- a/Private/HALKit/PowerPC/HalThread.cxx +++ b/Private/HALKit/POWER/HalThread.cxx @@ -4,7 +4,7 @@ ------------------------------------------- */ -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #include <KernelKit/DebugOutput.hpp> extern "C" NewOS::HAL::StackFramePtr rt_get_current_context() { return nullptr; } diff --git a/Private/HALKit/PowerPC/HalVirtualMemory.cxx b/Private/HALKit/POWER/HalVirtualMemory.cxx index 301bda0c..c138d76f 100644 --- a/Private/HALKit/PowerPC/HalVirtualMemory.cxx +++ b/Private/HALKit/POWER/HalVirtualMemory.cxx @@ -4,14 +4,13 @@ ------------------------------------------- */ -#include <HALKit/PowerPC/ppc-cpu.h> -#include <HALKit/PowerPC/ppc-mmu.h> +#include <HALKit/POWER/ppc-cpu.h> +#include <HALKit/POWER/ppc-mmu.h> -#include <HALKit/PowerPC/Processor.hpp> +#include <HALKit/POWER/Processor.hpp> #include <KernelKit/DebugOutput.hpp> -/// NOTE: refer to: https://www.nxp.com/docs/en/white-paper/POWRPCARCPRMRM.pdf, -/// or in /Developer/PDF/POWRPCARCPRMRM.pdf +/// @note refer to our SoC documentation. using namespace NewOS; diff --git a/Private/HALKit/POWER/Hart.hxx b/Private/HALKit/POWER/Hart.hxx new file mode 100644 index 00000000..2a908fcf --- /dev/null +++ b/Private/HALKit/POWER/Hart.hxx @@ -0,0 +1,27 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + + File: Hart.hxx + Purpose: POWER hardware threads. + + Revision History: + + 14/04/24: Added file (amlel) + +------------------------------------------- */ + +#pragma once + +#include <NewKit/Defines.hpp> + +/// @brief hardware thread indentification type. +typedef NewOS::Int32 PPCHartType; + +/// @brief Hardware thread information structure. +typedef struct HalHardwareThread { + NewOS::UIntPtr fStartAddress; + NewOS::UInt8 fPrivleged : 1; + NewOS::UInt32 fPageFlags; + PPCHartType fIdentNumber; +} HalHardwareThread; diff --git a/Private/NewBoot/Source/HEL/PowerPC/.gitkeep b/Private/HALKit/POWER/MBCI/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/NewBoot/Source/HEL/PowerPC/.gitkeep +++ b/Private/HALKit/POWER/MBCI/.gitkeep diff --git a/Private/Servers/CoreDisplay/Headers/CDServerStartup.h b/Private/HALKit/POWER/MBCI/HalMBCIHost.cxx index 47f369ae..8ad039fe 100644 --- a/Private/Servers/CoreDisplay/Headers/CDServerStartup.h +++ b/Private/HALKit/POWER/MBCI/HalMBCIHost.cxx @@ -2,9 +2,7 @@ Copyright Mahrouss Logic - File: CDServerStartup.h - Purpose: Server entrypoint. - ------------------------------------------- */ -#pragma once
\ No newline at end of file +#include <HALKit/POWER/Processor.hpp> +#include <KernelKit/DebugOutput.hpp> diff --git a/Private/HALKit/PowerPC/Processor.hpp b/Private/HALKit/POWER/Processor.hpp index 19f8e799..d6fbfb89 100644 --- a/Private/HALKit/PowerPC/Processor.hpp +++ b/Private/HALKit/POWER/Processor.hpp @@ -2,7 +2,7 @@ Copyright Mahrouss Logic - Purpose: PowerPC processor header. + Purpose: POWER processor header. ------------------------------------------- */ @@ -11,12 +11,12 @@ #include <NewKit/Defines.hpp> #include <NewKit/Utils.hpp> -#define __PPC_ALIGN __attribute__((aligned(4))) +#define kHalPPCAlignment __attribute__((aligned(4))) namespace NewOS::HAL { typedef UIntPtr Reg; -struct __PPC_ALIGN StackFrame { +struct kHalPPCAlignment StackFrame { Reg R0; Reg R1; Reg R2; @@ -34,13 +34,17 @@ typedef StackFrame* StackFramePtr; inline void rt_halt() { while (1) { - + asm volatile("mr 0, 0"); // no oop. } } -inline void rt_cli() {} +inline void rt_cli() { + asm volatile ("mr 0, 0"); // no oop +} } // namespace NewOS::HAL -extern "C" void int_handle_math(NewOS::UIntPtr sp); -extern "C" void int_handle_pf(NewOS::UIntPtr sp); -extern "C" void* __ppc_alloca(size_t sz); +EXTERN_C void int_handle_math(NewOS::UIntPtr sp); +EXTERN_C void int_handle_pf(NewOS::UIntPtr sp); + +/// @brief Flush system TLB. +EXTERN_C void hal_flush_tlb(); diff --git a/Private/HALKit/PowerPC/ppc-cpu.h b/Private/HALKit/POWER/ppc-cpu.h index 4bc6e9f0..74003329 100644 --- a/Private/HALKit/PowerPC/ppc-cpu.h +++ b/Private/HALKit/POWER/ppc-cpu.h @@ -17,7 +17,7 @@ struct pt_regs { unsigned long nip; }; -#else +#else #include <asm/ptrace.h> #include <asm/types.h> #endif @@ -880,8 +880,8 @@ struct pt_regs { #define PVR_REV(pvr) (((pvr) >> 0) & 0xFFFF) /* Revison field */ /* - * AMCC has further subdivided the standard PowerPC 16-bit version and - * revision subfields of the PVR for the PowerPC 403s into the following: + * AMCC has further subdivided the standard ppc 16-bit version and + * revision subfields of the PVR for the ppc 403s into the following: */ #define PVR_FAM(pvr) (((pvr) >> 20) & 0xFFF) /* Family field */ @@ -990,7 +990,7 @@ struct pt_regs { /* * For the 8xx processors, all of them report the same PVR family for - * the PowerPC core. The various versions of these processors must be + * the ppc core. The various versions of these processors must be * differentiated by the version number in the Communication Processor * Module (CPM). */ diff --git a/Private/HALKit/PowerPC/ppc-mmu.h b/Private/HALKit/POWER/ppc-mmu.h index 372935aa..5a149243 100644 --- a/Private/HALKit/PowerPC/ppc-mmu.h +++ b/Private/HALKit/POWER/ppc-mmu.h @@ -1,6 +1,3 @@ -/* - * PowerPC memory management structures - */ #ifndef _PPC_MMU_H_ #define _PPC_MMU_H_ @@ -252,7 +249,7 @@ extern void print_bats(void); #define MI_IDXMASK 0x00001f00 /* TLB index to be loaded */ #define MI_RESETVAL 0x00000000 /* Value of register at reset */ -/* These are the Ks and Kp from the PowerPC books. For proper operation, +/* These are the Ks and Kp from the ppc books. For proper operation, * Ks = 0, Kp = 1. */ #define MI_AP 786 @@ -311,7 +308,7 @@ extern void print_bats(void); #define MC_ASIDMASK 0x0000000f /* Bits used for ASID value */ -/* These are the Ks and Kp from the PowerPC books. For proper operation, +/* These are the Ks and Kp from the ppc books. For proper operation, * Ks = 0, Kp = 1. */ #define MD_AP 794 @@ -368,7 +365,7 @@ extern void print_bats(void); #define M_TW 799 /* - * At present, all PowerPC 400-class processors share a similar TLB + * At present, all ppc 400-class processors share a similar TLB * architecture. The instruction and data sides share a unified, * 64-entry, fully-associative TLB which is maintained totally under * software control. In addition, the instruction side has a @@ -797,4 +794,4 @@ void change_tlb(uint32_t vaddr, uint32_t size, uint32_t tlb_word2_i_value); #endif /* __ASSEMBLY__ */ #endif /* CONFIG_440 */ -#endif /* _PPC_MMU_H_ */
\ No newline at end of file +#endif /* _PPC_MMU_H_ */ diff --git a/Private/HALKit/PowerPC/HalCoreContextSwitchPowerPC.s b/Private/HALKit/PowerPC/HalCoreContextSwitchPowerPC.s deleted file mode 100644 index 0bf6418d..00000000 --- a/Private/HALKit/PowerPC/HalCoreContextSwitchPowerPC.s +++ /dev/null @@ -1,30 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -.align 4 -.type name, @function -.text -.globl rt_do_context_switch - -/* r3 = assigner stack, r4 = assignee stack */ -rt_do_context_switch: - - lwz 0(%r4), 0(%r3) - lwz 4(%r4), 4(%r3) - lwz 8(%r4), 8(%r3) - lwz 12(%r4), 12(%r3) - lwz 14(%r4), 14(%r3) - lwz 18(%r4), 18(%r3) - lwz 22(%r4), 22(%r3) - lwz 24(%r4), 24(%r3) - lwz 28(%r4), 28(%r3) - lwz 32(%r4), 32(%r3) - lwz 34(%r4), 34(%r3) - lwz 38(%r4), 38(%r3) - - mr %r31, %r4 - - bl diff --git a/Private/HALKit/PowerPC/HalStartSequence.s b/Private/HALKit/PowerPC/HalStartSequence.s deleted file mode 100644 index 112ac73f..00000000 --- a/Private/HALKit/PowerPC/HalStartSequence.s +++ /dev/null @@ -1,6 +0,0 @@ -.globl Main -.align 4 -.text - -Main: - b Main diff --git a/Private/HALKit/PowerPC/Hart.hxx b/Private/HALKit/PowerPC/Hart.hxx deleted file mode 100644 index 618cbd97..00000000 --- a/Private/HALKit/PowerPC/Hart.hxx +++ /dev/null @@ -1,20 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - - File: Hart.hxx - Purpose: PowerPC hardware threads. - - Revision History: - - 14/04/24: Added file (amlel) - -------------------------------------------- */ - -#pragma once - -#include <NewKit/Defines.hpp> - -typedef NewOS::Int32 PPCHartType; - - diff --git a/Private/HALKit/PowerPC/PCI/HalDevice.cxx b/Private/HALKit/PowerPC/PCI/HalDevice.cxx deleted file mode 100644 index 8b137891..00000000 --- a/Private/HALKit/PowerPC/PCI/HalDevice.cxx +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Private/KernelKit/DriveManager.hxx b/Private/KernelKit/DriveManager.hxx index e66dedc8..c3d7c484 100644 --- a/Private/KernelKit/DriveManager.hxx +++ b/Private/KernelKit/DriveManager.hxx @@ -92,7 +92,7 @@ class MountpointInterface final { return &mD; default: { DbgLastError() = kErrorNoSuchDisk; - kcout << "NewOS: No such disk.\n"; + kcout << "New OS: No such disk.\n"; break; } @@ -106,13 +106,13 @@ class MountpointInterface final { }; /// @brief Unimplemented drive. -/// @param pckt -/// @return +/// @param pckt +/// @return Void ke_drv_unimplemented(DriveTrait::DrivePacket* pckt); /// @brief Gets the drive kind (ATA, SCSI, AHCI...) -/// @param -/// @return +/// @param +/// @return const Char* ke_drive_kind(Void); /// @brief Makes a new drive. diff --git a/Private/KernelKit/HError.hpp b/Private/KernelKit/HError.hpp index a3ea5d61..b82f7c6b 100644 --- a/Private/KernelKit/HError.hpp +++ b/Private/KernelKit/HError.hpp @@ -35,6 +35,7 @@ inline constexpr HError kErrorOutOfTeamSlot = 51; inline constexpr HError kErrorHeapNotPresent = 52; inline constexpr HError kErrorNoEntrypoint = 53; inline constexpr HError kErrorDiskIsCorrupted = 54; +inline constexpr HError kErrorDisk = 55; inline constexpr HError kErrorUnimplemented = 0; Boolean ke_bug_check(void) noexcept; diff --git a/Private/KernelKit/KernelHeap.hpp b/Private/KernelKit/KernelHeap.hpp index 5358236e..471dcb54 100644 --- a/Private/KernelKit/KernelHeap.hpp +++ b/Private/KernelKit/KernelHeap.hpp @@ -13,7 +13,7 @@ #include <NewKit/Defines.hpp> namespace NewOS { - + /// @brief Declare pointer as free. /// @param heapPtr the pointer. /// @return @@ -31,7 +31,7 @@ Boolean ke_is_valid_heap(VoidPtr ptr); /// @return the pointer voidPtr ke_new_ke_heap(SizeT sz, const bool rw, const bool user); -/// @brief Protect the heap pointer with a CRC32. +/// @brief Protect the heap with a CRC value. /// @param heapPtr HIB pointer. /// @return if it valid: point has crc now., otherwise fail. Boolean ke_protect_ke_heap(VoidPtr heapPtr); diff --git a/Private/KernelKit/PEFCodeManager.hxx b/Private/KernelKit/PEFCodeManager.hxx index d9e857de..1f5269ae 100644 --- a/Private/KernelKit/PEFCodeManager.hxx +++ b/Private/KernelKit/PEFCodeManager.hxx @@ -24,7 +24,7 @@ class PEFLoader : public LoaderInterface { public: explicit PEFLoader(const VoidPtr blob); - explicit PEFLoader(const char *path); + explicit PEFLoader(const Char* path); ~PEFLoader() override; public: diff --git a/Private/KernelKit/SMPManager.hpp b/Private/KernelKit/SMPManager.hpp index 631b29ea..17ea9d38 100644 --- a/Private/KernelKit/SMPManager.hpp +++ b/Private/KernelKit/SMPManager.hpp @@ -31,7 +31,7 @@ enum ThreadKind { /// /// \name HardwareThread -/// @brief CPU Hardware Thread (PowerPC, Intel, or NewCPU) +/// @brief CPU Hardware Thread (POWER, x64, or 64x0) /// class HardwareThread final { diff --git a/Private/KernelKit/XCOFF.hxx b/Private/KernelKit/XCOFF.hxx index 35ca9896..631efdf3 100644 --- a/Private/KernelKit/XCOFF.hxx +++ b/Private/KernelKit/XCOFF.hxx @@ -16,14 +16,14 @@ #include <NewKit/Defines.hpp> -#define kXCOFF64Magic 0x01F7 +#define kXCOFF64Magic 0x01F7 #define kXCOFFRelFlg 0x0001 #define kXCOFFExecutable 0x0002 #define kXCOFFLnno 0x0004 #define kXCOFFLSyms 0x0008 -/// @brief XCoff file header, meant for PowerPC programs. +/// @brief XCoff file header, meant for POWER apps. typedef struct XCoffFileHeader { NewOS::UInt16 fMagic; @@ -35,4 +35,4 @@ typedef struct XCoffFileHeader NewOS::UInt16 fOptHdr; // ?: Number of bytes in optional header } XCoffFileHeader; -#endif // ifndef __XCOFF__
\ No newline at end of file +#endif // ifndef __XCOFF__ diff --git a/Private/KernelRsrc.rsrc b/Private/KernelRsrc.rsrc index 7cdcf0e0..1fab6304 100644 --- a/Private/KernelRsrc.rsrc +++ b/Private/KernelRsrc.rsrc @@ -1,4 +1,4 @@ -1 ICON "Root/Boot/kernel-logo.ico" +1 ICON "Root/Boot/Icons/kernel-logo.ico" #include "CompilerKit/Version.hxx" @@ -11,7 +11,7 @@ BEGIN BLOCK "080904E4" BEGIN VALUE "CompanyName", "Mahrouss-Logic" - VALUE "FileDescription", "NewOS multiplatform kernel." + VALUE "FileDescription", "New OS multiplatform kernel." VALUE "FileVersion", KERNEL_VERSION VALUE "InternalName", "NewKernel" VALUE "LegalCopyright", "Mahrouss-Logic" diff --git a/Private/NewBoot/BootKit/BootKit.hxx b/Private/NewBoot/BootKit/BootKit.hxx index 1fbd0aef..117e32df 100644 --- a/Private/NewBoot/BootKit/BootKit.hxx +++ b/Private/NewBoot/BootKit/BootKit.hxx @@ -11,6 +11,12 @@ #pragma once +/***********************************************************************************/ +/// Framebuffer helpers. +/***********************************************************************************/ + +#define RGB(R, G, B) (UInt32)(0x##R##G##B) + class BTextWriter; class BFileReader; class BFileRunner; @@ -18,9 +24,20 @@ class BVersionString; #include <BootKit/HW/ATA.hxx> #include <CompilerKit/Version.hxx> + +/***********************************************************************************/ +/// Include other APIs. +/***********************************************************************************/ + +#include <BootKit/Platform.hxx> +#include <BootKit/Protocol.hxx> + #ifdef __EFI_x86_64__ +///! The Boot page provided to NewKernel. +#define kBootVirtualAddress (0xfffffff80000000) #include <FirmwareKit/EFI.hxx> #endif // ifdef __EFI_x86_64__ + #include <FirmwareKit/EPM.hxx> #include <NewKit/Defines.hpp> @@ -68,8 +85,10 @@ NewOS::SizeT BSetMem(CharacterTypeUTF8 *src, const CharacterTypeUTF8 byte, /// String length functions. +/// @brief get string length. NewOS::SizeT BStrLen(const CharacterTypeUTF16 *ptr); +/// @brief set memory with custom value. NewOS::SizeT BSetMem(CharacterTypeUTF16 *src, const CharacterTypeUTF16 byte, const NewOS::SizeT len); @@ -83,7 +102,8 @@ class BFileReader final { EfiHandlePtr ImageHandle); ~BFileReader(); - Void ReadAll(); + public: + Void ReadAll(SizeT until, SizeT chunk = 4096); enum { kOperationOkay, @@ -94,15 +114,17 @@ class BFileReader final { kCount, }; - Int32 &Error() { return mErrorCode; } - VoidPtr Blob() { return mBlob; } - EfiFileProtocolPtr File() { return mFile; } - UInt64 &Size() { return mSizeFile; } + /// @brief error code getter. + /// @return the error code. + Int32 &Error(); - UInt64 &Size(const UInt64 &Sz) { - mSizeFile = Sz; - return mSizeFile; - } + /// @brief blob getter. + /// @return the blob. + VoidPtr Blob(); + + /// @breif Size getter. + /// @return the size of the file. + UInt64 &Size(); public: BFileReader &operator=(const BFileReader &) = default; @@ -119,14 +141,13 @@ class BFileReader final { typedef UInt8 *BlobType; -#define kMaxReadSize (320) - -/***********************************************************************************/ -/// Include other APIs. -/***********************************************************************************/ +class BVersionString final { + public: + static const CharacterTypeUTF16 *Shared() { return BOOTLOADER_VERSION; } +}; -#include <BootKit/Platform.hxx> -#include <BootKit/Protocol.hxx> +/// @brief Bootloader main type. +typedef void (*BootMainKind)(HEL::HandoverInformationHeader *handoverInfo); /***********************************************************************************/ /// Provide some useful processor features. @@ -134,42 +155,16 @@ typedef UInt8 *BlobType; #ifdef __EFI_x86_64__ -inline void Out8(UInt16 port, UInt8 value) { - asm volatile("outb %%al, %1" : : "a"(value), "Nd"(port) : "memory"); -} - -inline void Out16(UInt16 port, UInt16 value) { - asm volatile("outw %%ax, %1" : : "a"(value), "Nd"(port) : "memory"); -} - -inline void Out32(UInt16 port, UInt32 value) { - asm volatile("outl %%eax, %1" : : "a"(value), "Nd"(port) : "memory"); -} - -inline UInt8 In8(UInt16 port) { - UInt8 value; - asm volatile("inb %1, %%al" : "=a"(value) : "Nd"(port) : "memory"); - - return value; -} - -inline UInt16 In16(UInt16 port) { - UInt16 value; - asm volatile("inw %%dx, %%ax" : "=a"(value) : "d"(port)); - - return value; -} - -inline UInt32 In32(UInt16 port) { - UInt32 value; - asm volatile("inl %1, %%eax" : "=a"(value) : "Nd"(port) : "memory"); - - return value; -} - /*** * Common processor instructions. -*/ + */ + +EXTERN_C void Out8(UInt16 port, UInt8 value); +EXTERN_C void Out16(UInt16 port, UInt16 value); +EXTERN_C void Out32(UInt16 port, UInt32 value); +EXTERN_C UInt8 In8(UInt16 port); +EXTERN_C UInt16 In16(UInt16 port); +EXTERN_C UInt32 In32(UInt16 port); EXTERN_C void rt_hlt(); EXTERN_C void rt_cli(); @@ -179,50 +174,8 @@ EXTERN_C void rt_std(); #endif // __EFI_x86_64__ -/***********************************************************************************/ -/// Framebuffer. -/***********************************************************************************/ - -#define RGB(R, G, B) (UInt32)(0x##R##G##B) - -const UInt32 kRgbRed = 0x000000FF; -const UInt32 kRgbGreen = 0x0000FF00; -const UInt32 kRgbBlue = 0x00FF0000; -const UInt32 kRgbBlack = 0x00000000; -const UInt32 kRgbWhite = 0x00FFFFFF; - -#ifdef __EFI_x86_64__ -/** GOP and related. */ -inline EfiGraphicsOutputProtocol *kGop; -inline UInt16 kStride; -inline EfiGUID kGopGuid; - -/** -@brief Inits the QuickTemplate GUI framework. -*/ -inline Void InitGOP() noexcept { - kGopGuid = EfiGUID(EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID); - kGop = nullptr; - - extern EfiBootServices *BS; - - BS->LocateProtocol(&kGopGuid, nullptr, (VoidPtr *)&kGop); - - kStride = 4; -} -#endif // __EFI_x86_64__ - -class BVersionString final { - public: - static const CharacterTypeUTF16 *Shared() { return BOOTLOADER_VERSION; } -}; - -/// @brief Writes an EPM partition on the main disk. -/// @param namePart the partition's name -/// @param namePartLength the partition name's length -/// @param bootDev the disk interface. -/// @return -EXTERN_C Boolean boot_write_epm_partition(const Char *namePart, - SizeT namePartLength, - BootDevice *bootDev); - +static inline const UInt32 kRgbRed = 0x000000FF; +static inline const UInt32 kRgbGreen = 0x0000FF00; +static inline const UInt32 kRgbBlue = 0x00FF0000; +static inline const UInt32 kRgbBlack = 0x00000000; +static inline const UInt32 kRgbWhite = 0x00FFFFFF; diff --git a/Private/NewBoot/BootKit/Rsrc/Driver.rsrc b/Private/NewBoot/BootKit/Rsrc/Driver.rsrc new file mode 100644 index 00000000..bdbd6ea1 --- /dev/null +++ b/Private/NewBoot/BootKit/Rsrc/Driver.rsrc @@ -0,0 +1,144 @@ +#define DRIVER_HEIGHT 138 +#define DRIVER_WIDTH 154 + +// array size is 85008 +static const unsigned int Driver[] = { + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x40e3e3e3, 0x70e4e4e4, 0xafe3e3e3, 0xdfe4e4e4, 0xefe4e4e4, 0xfee5e5e5, 0xffe3e3e3, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe5e5e5, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee5e5e5, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xfee5e5e5, 0xffe4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe5e5e5, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee5e5e5, 0xffe3e3e3, 0xfee5e5e5, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee5e5e5, 0xfee5e5e5, 0xffe4e4e4, 0xffe4e4e4, 0xeee4e4e4, 0xcfe4e4e4, 0xafe3e3e3, 0x80e3e3e3, 0x40e3e3e3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10dfdfdf, 0x7fe5e5e5, 0xefe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xfee3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xfee4e4e4, 0xffe4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xfee4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee4e4e4, 0xdfe4e4e4, 0x9fe4e4e4, 0x20e7e7e7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10dfdfdf, 0x8fe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe3e3e3, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xffe3e3e3, 0xfee3e3e3, 0xfee3e3e3, 0xffe3e3e3, 0xffe2e2e2, 0x9fe4e4e4, 0x20e7e7e7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x6fe3e3e3, 0xeee2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe3e3e3, 0xfee2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xfee3e3e3, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xfee3e3e3, 0xffe1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xfee2e2e2, 0xffe2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xffe2e2e2, 0xdee3e3e3, 0x60e2e2e2, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8fe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xfee2e2e2, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xfee1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xfee2e2e2, 0xfee1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xffe1e1e1, 0xfee2e2e2, 0xffe1e1e1, 0x8fe1e1e1, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10dfdfdf, 0xbfe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe1e1e1, 0xfee1e1e1, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe1e1e1, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xffe0e0e0, 0xffe0e0e0, 0xfee1e1e1, 0xcfe1e1e1, 0x10dfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xcfe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xbfe0e0e0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8fe1e1e1, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0xffe0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffe0e0e0, 0xffe0e0e0, 0xfee0e0e0, 0xffe0e0e0, 0xffdfdfdf, 0x8fe1e1e1, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x60dfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xfedfdfdf, 0xfee0e0e0, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffe0e0e0, 0xffdedede, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfee0e0e0, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0xffdfdfdf, 0x6fdfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x20dfdfdf, 0xdfdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xfedfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdfdfdf, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdfdfdf, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfededede, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xfedfdfdf, 0xffdedede, 0xffdedede, 0xfedfdfdf, 0xffdedede, 0xefdedede, 0x10dfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x9fdddddd, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdedede, 0xffdddddd, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdedede, 0xffdedede, 0xfededede, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xfededede, 0xffdddddd, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdedede, 0xffdddddd, 0xfededede, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xfededede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xffdedede, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xfedfdfdf, 0xffdedede, 0xfededede, 0xffdddddd, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xfededede, 0xfededede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdedede, 0xfededede, 0xffdedede, 0xffdddddd, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdedede, 0xffdedede, 0xfededede, 0xffdddddd, 0xfededede, 0xfededede, 0xfededede, 0xffdedede, 0xfededede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xfededede, 0xffdedede, 0xffdedede, 0xfededede, 0xffdedede, 0xfededede, 0xffdedede, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xffdedede, 0xffdddddd, 0xfededede, 0xffdddddd, 0xffdddddd, 0xfededede, 0xffdedede, 0xffdedede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdedede, 0xfededede, 0xfededede, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0x8fdfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x20dfdfdf, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xfedddddd, 0xfedddddd, 0xfedddddd, 0xffdcdcdc, 0xffdddddd, 0xfedddddd, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xfededede, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xfededede, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xfedddddd, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xffdddddd, 0xffdcdcdc, 0xffdddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0x10dfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x9fdcdcdc, 0xfedddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xfedcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xfedcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xffdddddd, 0xffdcdcdc, 0xfedddddd, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xfedddddd, 0xfedcdcdc, 0xfedddddd, 0x80dbdddb, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xdfdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xfedbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdcdcdc, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xffdcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xffdcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xfedcdcdc, 0xfedcdcdc, 0xfedcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedcdcdc, 0xfedcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdcdcdc, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xeedddddd, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x40dbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xffdbdbdb, 0xfedbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xffdbdbdb, 0xffdbdbdb, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffdadada, 0xffdbdbdb, 0xfedbdbdb, 0xffdadada, 0xffdbdbdb, 0x40d7d7d7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x80dbdbdb, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xfedadada, 0xfedadada, 0xffdadada, 0xfedadada, 0xfedbdbdb, 0xffdadada, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xfedadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xfedbdbdb, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xfedadada, 0xffdadada, 0xfedbdbdb, 0xfedadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xfedadada, 0xffd9d9d9, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0xfedadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedadada, 0xffdadada, 0xffd9d9d9, 0xffdadada, 0x70d8d8d8, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xafd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xfedadada, 0xfed9d9d9, 0xffdadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd8d8d8, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd8d8d8, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xfedadada, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffdadada, 0xffdadada, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffd9d9d9, 0xfedadada, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfedadada, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xffd9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xffd9d9d9, 0xfed9d9d9, 0xafdbdbdb, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xced9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd9d9d9, 0xdfd9d9d9, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xeed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xeed8d8d8, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd8d8d8, 0xffd8d8d8, 0xffd8d8d8, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed7d7d7, 0xfed7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xfed8d8d8, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xfed8d8d8, 0xffd7d7d7, 0xfed8d8d8, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xfed6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xfed6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xffd7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd7d7d7, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd7d7d7, 0xfed7d7d7, 0xffd6d6d6, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xfed7d7d7, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xffd6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xfed7d7d7, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xffd6d6d6, 0xffd6d6d6, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd6d6d6, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xfed6d6d6, 0xfed5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xfed5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xfed6d6d6, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xfed4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xfed5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xfed5d5d5, 0xffd5d5d5, 0xffd3d3d3, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xfed4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xffd4d4d4, 0xffd5d5d5, 0xfed5d5d5, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed5d5d5, 0xfed5d5d5, 0xfed5d5d5, 0xffd5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd5d5d5, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xfed5d5d5, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xfed3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd3d3d3, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xfed3d3d3, 0xffd3d3d3, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xfed3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xffd3d3d3, 0xffd3d3d3, 0xffd2d2d2, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed3d3d3, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd1d1d1, 0xfed3d3d3, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xfed2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xfed3d3d3, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd2d2d2, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xfed1d1d1, 0xfed1d1d1, 0xffd0d0d0, 0xffd1d1d1, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd1d1d1, 0xffd1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xfed1d1d1, 0xfed0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xfed1d1d1, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffd0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xfecfcfcf, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffd0d0d0, 0xfecfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xfecfcfcf, 0xfed0d0d0, 0xfecfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffd0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcfcfcf, 0xffcfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcfcfcf, 0xffcecece, 0xffcfcfcf, 0xfecfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xefcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xfececece, 0xfececece, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xfecfcfcf, 0xfececece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xfececece, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xfececece, 0xfececece, 0xffcecece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcecece, 0xfececece, 0xfecfcfcf, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xfecfcfcf, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xfececece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xfececece, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xfececece, 0xffcecece, 0xfecfcfcf, 0xffcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xfececece, 0xffcecece, 0xfececece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xfecfcfcf, 0xfececece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcecece, 0xffcecece, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x80cbcbcb, 0xffcecece, 0xfecdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xfececece, 0xffcdcdcd, 0xffcccccc, 0xfecdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xffcdcdcd, 0xfecdcdcd, 0xfecdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcdcdcd, 0xfececece, 0xfecdcdcd, 0xfecdcdcd, 0xffb5b5b5, 0xff4c4c4c, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff434343, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff565656, 0xffb5b5b5, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfececece, 0xffcdcdcd, 0xfececece, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xfececece, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcecece, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcdcdcd, 0xffcecece, 0xfececece, 0xffcdcdcd, 0xffcccccc, 0x70e4e4e4, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xbfcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xfecccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcdcdcd, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcdcdcd, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xff686868, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff424242, 0xff414141, 0xff424242, 0xff424242, 0xff424242, 0xff414141, 0xff686868, 0xffcdcdcd, 0xffcdcdcd, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcdcdcd, 0xfecdcdcd, 0xfecccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xfecdcdcd, 0xffcccccc, 0xffe2e2e2, 0x40e3e3e3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x10bfbfbf, 0xdecccccc, 0xffcccccc, 0xffcbcbcb, 0xfecccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xfecccccc, 0xfecccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xfecccccc, 0xfecdcdcd, 0xffcbcbcb, 0xffcbcbcb, 0xff545454, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff424242, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff424242, 0xff424242, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff545454, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xfecccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xfecccccc, 0xfecccccc, 0xfecccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xfecccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcccccc, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffe0e0e0, 0xeee1e1e1, 0x20e7e7e7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x20cfcfcf, 0xdfcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xfecccccc, 0xffcbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xffc2c2c2, 0xfecbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecccccc, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcbcbcb, 0xfecbcbcb, 0xffcacaca, 0xfecbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffcacaca, 0xffcbcbcb, 0xffcbcbcb, 0xffcbcbcb, 0xfecbcbcb, 0xffe0e0e0, 0xffe0e0e0, 0xdfe0e0e0, 0x20e7e7e7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x30cacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xfecacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffc9c9c9, 0xffc8c8c8, 0xffb0b0b0, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff414141, 0xff404040, 0xff404040, 0xff414141, 0xff414141, 0xff414141, 0xff404040, 0xff414141, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xffb8b8b8, 0xfec9c9c9, 0xfecacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffdfdfdf, 0xffdedede, 0xffdfdfdf, 0xcfdfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x70c8c8c8, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xffcacaca, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xfec9c9c9, 0xffc9c9c9, 0xfecacaca, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xff9e9e9e, 0xff404040, 0xff404040, 0xff404040, 0xff414141, 0xff414141, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff414141, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff9e9e9e, 0xffc6c6c6, 0xffc7c7c7, 0xfec9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfec9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffcacaca, 0xfecacaca, 0xfecacaca, 0xffc9c9c9, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffcacaca, 0xffcacaca, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfededede, 0xffdddddd, 0xfededede, 0xffdddddd, 0x8fdfdfdf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x80c9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xfec9c9c9, 0xffc9c9c9, 0xfec9c9c9, 0xfec9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfec9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc6c6c6, 0xfec5c6c6, 0xff8d8d8d, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff3f3f3f, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff3f3f3f, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff8d8d8d, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xfec9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xfec9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xfec9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc9c9c9, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdcdcdc, 0xffdbdbdb, 0x7fdbdddb, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x9fc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc6c6c6, 0xfec5c6c6, 0xfec4c4c4, 0xff7b7b7b, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff404040, 0xff404040, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff404040, 0xff404040, 0xff737373, 0xffc3c3c3, 0xfec5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xfec9c9c9, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec9c9c9, 0xffc8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec9c9c9, 0xffc7c7c7, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xffdadada, 0xfedbdbdb, 0x5fdcdcdc, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10bfbfbf, 0xcfc8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec7c7c7, 0xfec7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xfec7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc6c6c6, 0xfec8c8c8, 0xfec7c7c7, 0xfec6c6c6, 0xffc5c5c5, 0xfec3c3c3, 0xfec1c1c1, 0xff626262, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff404040, 0xff3f3f3f, 0xff3f3f3f, 0xff6a6a6a, 0xffc0c0c0, 0xffc2c2c2, 0xffc4c4c4, 0xffc6c6c6, 0xffc6c6c6, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xfec7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc6c6c6, 0xffc7c7c7, 0xfec8c8c8, 0xfec7c7c7, 0xfec7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc6c6c6, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xfec7c7c7, 0xfec8c8c8, 0xffc8c8c8, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xfec8c8c8, 0xfec7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffc7c7c7, 0xffd8d8d8, 0xffd9d9d9, 0xffd8d8d8, 0xfed9d9d9, 0xffd8d8d8, 0xffd9d9d9, 0xefd9d9d9, 0x30dadada, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20c7c7c7, 0xdfc6c7c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc7c7c7, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc2c2c2, 0xfec2c2c2, 0xffbdbdbd, 0xff585858, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff515151, 0xfebebebe, 0xffc0c0c0, 0xffc2c2c2, 0xffc4c4c4, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xffc7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc7c7c7, 0xfec7c7c7, 0xfec7c7c7, 0xffc7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xfed8d8d8, 0xfed8d8d8, 0xffd8d8d8, 0xdfd8d8d8, 0x20d7d7d7, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x30c5c5c5, 0xefc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec7c7c7, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfebfbfbf, 0xff8d8d8d, 0xffa6a6a6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xfec5c6c6, 0xffc3c3c3, 0xffc1c1c1, 0xffbebebe, 0xfeb5b5b5, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xffadadad, 0xffbebebe, 0xffc1c1c1, 0xffc3c3c3, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffa7a7a7, 0xff8d8d8d, 0xffb7b7b7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xfec6c6c6, 0xffd6d6d6, 0xffd7d7d7, 0xffd6d6d6, 0xffd7d7d7, 0xffd7d7d7, 0xfed7d7d7, 0xffd7d7d7, 0xffd7d7d7, 0xcfd6d6d6, 0x10cfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x60c7c7c7, 0xffc6c6c6, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xfec6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc6c6c6, 0xff515151, 0xff3e3e3e, 0xff3e3e3e, 0xff515151, 0xff969696, 0xffb6b6b6, 0xffc5c5c5, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc4c4c4, 0xffc1c1c1, 0xffb0b0b0, 0xff717171, 0xff474747, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3f3f3f, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff717171, 0xfeb1b1b1, 0xfec3c3c3, 0xffc4c4c4, 0xffc5c5c5, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffbebebe, 0xff858585, 0xff595959, 0xff3e3e3e, 0xff3e3e3e, 0xff5a5a5a, 0xffc5c5c5, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, 0xffd5d5d5, 0xffd5d5d5, 0xffd5d5d5, 0xfed6d6d6, 0xffd5d5d5, 0xfed6d6d6, 0xfed6d6d6, 0xffd5d5d5, 0xffd5d5d5, 0x9fd5d5d5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc6c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xff949494, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff737373, 0xffa6a6a6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc4c4c4, 0xffbbbbbb, 0xff828282, 0xff474747, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff828282, 0xffc3c3c3, 0xffc4c4c4, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffa5a5a5, 0xff6b6b6b, 0xff474747, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xfe8e8e8e, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xffd4d4d4, 0xffd4d4d4, 0xffd3d3d3, 0xffd4d4d4, 0xfed4d4d4, 0xffd3d3d3, 0xffd3d3d3, 0xfed4d4d4, 0xffd4d4d4, 0xfed4d4d4, 0x7fd5d5d5, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8fc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xfec5c6c6, 0xffc4c4c4, 0xffb4b4b4, 0xff505050, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff515151, 0xfe969696, 0xfeb5b5b5, 0xffacacac, 0xff505050, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3e3e3e, 0xff3e3e3e, 0xff505050, 0xffb3b3b3, 0xffbcbcbc, 0xff848484, 0xff595959, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3e3e3e, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff464646, 0xffbcbcbc, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xfec5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xfec5c5c5, 0xffc5c5c5, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0xffd2d2d2, 0xfed2d2d2, 0xffd2d2d2, 0xffd3d3d3, 0x6fd3d3d3, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xcfc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xff727272, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff464646, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff464646, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff7a7a7a, 0xffc3c3c3, 0xffc3c3c3, 0xfec4c4c4, 0xffc3c3c3, 0xfec4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xffc4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc4c4c4, 0xfec4c4c4, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xffd1d1d1, 0xfed1d1d1, 0xffd1d1d1, 0xfed2d2d2, 0xffd1d1d1, 0xffd1d1d1, 0xfed1d1d1, 0xfed1d1d1, 0xfed1d1d1, 0x30cfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20bfbfbf, 0xdfc2c2c2, 0xffc2c2c2, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc2c2c2, 0xfec4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xfec4c4c4, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xfec4c4c4, 0xffc2c2c2, 0xffc2c2c2, 0xffb2b2b2, 0xff3d3d3d, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xffaaaaaa, 0xfec3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xfec3c3c3, 0xfec4c4c4, 0xfec3c3c3, 0xfec3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffd0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfed0d0d0, 0xffcfcfcf, 0xffcfcfcf, 0xdfd1d1d1, 0x20cfcfcf, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20bfbfbf, 0xefc2c2c2, 0xfec2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec3c3c3, 0xffc3c3c3, 0xfec2c2c2, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec3c3c3, 0xfec3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xffc2c2c2, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec2c2c2, 0xfec3c3c3, 0xfec2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xff686868, 0xff3d3d3d, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3d3d3d, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff606060, 0xffc0c0c0, 0xffc0c0c0, 0xffc2c2c2, 0xffc1c1c1, 0xfec3c3c3, 0xfec3c3c3, 0xfec3c3c3, 0xffc2c2c2, 0xfec2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec3c3c3, 0xfec2c2c2, 0xfec2c2c2, 0xfec3c3c3, 0xfec3c3c3, 0xffc3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xffc3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, 0xfec2c2c2, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xfecfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xffcfcfcf, 0xfecfcfcf, 0xfecfcfcf, 0xffcecece, 0xffcecece, 0xffcecece, 0xdfcfcfcf, 0x10cfcfcf, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x40bfbfbf, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xfec2c2c2, 0xfec2c2c2, 0xfec2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc0c0c0, 0xffbfbfbf, 0xff919191, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3b3b3b, 0xfea0a0a0, 0xffc0c0c0, 0xfec1c1c1, 0xffc1c1c1, 0xfec2c2c2, 0xfec2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc2c2c2, 0xfec2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xfec2c2c2, 0xffc1c1c1, 0xffc2c2c2, 0xffc2c2c2, 0xfec2c2c2, 0xffc1c1c1, 0xfec2c2c2, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc2c2c2, 0xfec1c1c1, 0xffc2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xffcdcdcd, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xffcdcdcd, 0xfececece, 0xffcecece, 0xffcdcdcd, 0xffcecece, 0xffcdcdcd, 0xbfcecece, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fc3c3c3, 0xffc0c0c0, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xffbfbfbf, 0xfebebebe, 0xff4d4d4d, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff4c4c4c, 0xfeb8b8b8, 0xffbfbfbf, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xfec1c1c1, 0xfec2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xfec1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc0c0c0, 0xfec1c1c1, 0xffc1c1c1, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecdcdcd, 0xffcccccc, 0xfecccccc, 0xffcccccc, 0xffcccccc, 0xffcccccc, 0xfecccccc, 0xffcbcbcb, 0xfecccccc, 0xffcccccc, 0x8fcdcdcd, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10bfbfbf, 0xffc0c0c0, 0xfec1c1c1, 0xfec1c1c1, 0xfec0c0c0, 0xffc0c0c0, 0xffbfbfbf, 0xfec0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffbfbfbf, 0xffbfbfbf, 0xffbdbdbd, 0xff7e7e7e, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3b3b3b, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff7e7e7e, 0xfebebebe, 0xffbebebe, 0xffbfbfbf, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xfec1c1c1, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffc0c0c0, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xffcbcbcb, 0xfecbcbcb, 0xffcacaca, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcbcbcb, 0xffcacaca, 0xffcacaca, 0xfecbcbcb, 0xffcacaca, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xfec0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xffbfbfbf, 0xffc0c0c0, 0xfec0c0c0, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffaeaeae, 0xff4c4c4c, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff3a3a3a, 0xff434343, 0xfeb5b5b5, 0xffbdbdbd, 0xffbebebe, 0xffbfbfbf, 0xffbfbfbf, 0xffc0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xffbfbfbf, 0xfec0c0c0, 0xfec0c0c0, 0xfec0c0c0, 0xfec0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xfec9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xffc8c8c8, 0xffc9c9c9, 0xffc9c9c9, 0xffc9c9c9, 0xfecacaca, 0xffc9c9c9, 0xfecacaca, 0xffc8c8c8, 0xffc9c9c9, 0xfec9c9c9, 0xffcacaca, 0xfecacaca, 0xffc9c9c9, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xfebfbfbf, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xfebfbfbf, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffbbbbbb, 0xff6d6d6d, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff393939, 0xff3a3a3a, 0xff393939, 0xff393939, 0xff6d6d6d, 0xffbbbbbb, 0xffbdbdbd, 0xffbdbdbd, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xffbebebe, 0xffbfbfbf, 0xffbebebe, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xfebfbfbf, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbfbfbf, 0xffc7c7c7, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xffc7c7c7, 0xffc8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xfec8c8c8, 0xffc8c8c8, 0xfec8c8c8, 0xffc7c7c7, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffbdbdbd, 0xffbdbdbd, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffbcbcbc, 0xfebcbcbc, 0xfeadadad, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff444444, 0xff525252, 0xff525252, 0xff4b4b4b, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff9d9d9d, 0xffbbbbbb, 0xffbdbdbd, 0xffbdbdbd, 0xffbebebe, 0xffbdbdbd, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xffbdbdbd, 0xfebebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebebebe, 0xffbdbdbd, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebebebe, 0xffbebebe, 0xffc6c6c6, 0xfec7c7c7, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xfec6c6c6, 0xfec7c7c7, 0xffc6c6c6, 0xffc6c6c6, 0xffc6c6c6, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfebdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebebebe, 0xffbebebe, 0xfebdbdbd, 0xfebebebe, 0xfebdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebebebe, 0xfebebebe, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebdbdbd, 0xfebebebe, 0xffbdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xffbbbbbb, 0xffbbbbbb, 0xff535353, 0xff383838, 0xff383838, 0xff393939, 0xff393939, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff3f3f3f, 0xff636363, 0xff7e7e7e, 0xff8e8e8e, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe7e7e7e, 0xff5c5c5c, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff393939, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff393939, 0xff383838, 0xff383838, 0xff393939, 0xff393939, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff5b5b5b, 0xffbababa, 0xfebcbcbc, 0xffbcbcbc, 0xfebebebe, 0xffbdbdbd, 0xfebebebe, 0xfebdbdbd, 0xfebebebe, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebebebe, 0xfebebebe, 0xfebebebe, 0xffbdbdbd, 0xfebdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, 0xfec5c6c6, 0xffc6c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xfec5c6c6, 0xfec5c6c6, 0xffc5c5c5, 0xffc5c5c5, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xfebcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbdbdbd, 0xffbcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffb9b9b9, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff636363, 0xff8e8e8e, 0xff939393, 0xfe949494, 0xfe959595, 0xfe949494, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xfe898989, 0xff5c5c5c, 0xff393939, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff393939, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xffb9b9b9, 0xffbababa, 0xfebcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xfebcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xfebcbcbc, 0xfebdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xffc4c4c4, 0xffc5c5c5, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xffc4c4c4, 0xfec4c4c4, 0xfec4c4c4, 0xffc4c4c4, 0xfec5c5c5, 0xffc4c4c4, 0xfec4c4c4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfebcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xffbcbcbc, 0xffbcbcbc, 0xfebcbcbc, 0xffbbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xffbcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffbcbcbc, 0xffbcbcbc, 0xfebdbdbd, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffb9b9b9, 0xffb7b7b7, 0xff6a6a6a, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff373737, 0xff383838, 0xff383838, 0xff373737, 0xff383838, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff373737, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff3d3d3d, 0xff727272, 0xff939393, 0xff939393, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xff939393, 0xff939393, 0xff727272, 0xff3e3e3e, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff383838, 0xff373737, 0xff727272, 0xffb7b7b7, 0xfebababa, 0xffbababa, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xfebcbcbc, 0xffbcbcbc, 0xfebcbcbc, 0xfebcbcbc, 0xffbbbbbb, 0xfebcbcbc, 0xfebcbcbc, 0xfebcbcbc, 0xffbbbbbb, 0xffbcbcbc, 0xffbbbbbb, 0xfebcbcbc, 0xfebcbcbc, 0xffbcbcbc, 0xffbbbbbb, 0xffbcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbcbcbc, 0xfebcbcbc, 0xffbcbcbc, 0xfec3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xffc3c3c3, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xfec3c3c3, 0xffc2c2c2, 0xffc3c3c3, 0xfec3c3c3, 0xffc2c2c2, 0xffc2c2c2, 0xffc2c2c2, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebababa, 0xffb8b8b8, 0xfeb5b5b5, 0xffb1b1b1, 0xff757575, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff3e3e3e, 0xfe838383, 0xff939393, 0xfe949494, 0xfe959595, 0xff949494, 0xff959595, 0xfe969696, 0xff959595, 0xff969696, 0xff959595, 0xff959595, 0xff969696, 0xff949494, 0xff959595, 0xff949494, 0xfe949494, 0xfe949494, 0xfe838383, 0xff3d3d3d, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff383838, 0xff373737, 0xff373737, 0xff383838, 0xff383838, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff383838, 0xff373737, 0xff757575, 0xffb1b1b1, 0xffb4b4b4, 0xffb7b7b7, 0xffb9b9b9, 0xffbababa, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xfebbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xfec2c2c2, 0xffc1c1c1, 0xfec2c2c2, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, 0xffc1c1c1, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbababa, 0xfeb9b9b9, 0xffb5b5b5, 0xffb2b2b2, 0xffafafaf, 0xffababab, 0xff8d8d8d, 0xff464646, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff727272, 0xfe949494, 0xfe959595, 0xff949494, 0xff959595, 0xff969696, 0xff969696, 0xff979797, 0xfe989898, 0xff989898, 0xff989898, 0xff979797, 0xfe989898, 0xfe989898, 0xff969696, 0xff959595, 0xff949494, 0xff939393, 0xff939393, 0xff727272, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff363636, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff3f3f3f, 0xff8c8c8c, 0xffababab, 0xfeafafaf, 0xffb3b3b3, 0xffb5b5b5, 0xffb7b7b7, 0xfebababa, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffc0c0c0, 0xffc0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xffbfbfbf, 0xfec0c0c0, 0xffbfbfbf, 0xffbfbfbf, 0xffc0c0c0, 0xffc0c0c0, 0xfec0c0c0, 0xfec0c0c0, 0xfec0c0c0, 0xffc0c0c0, 0xfec0c0c0, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xfebababa, 0xffbababa, 0xffbababa, 0xffbababa, 0xffbababa, 0xffbbbbbb, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xfebbbbbb, 0xfebbbbbb, 0xffbbbbbb, 0xffbababa, 0xfeb9b9b9, 0xffb7b7b7, 0xffb4b4b4, 0xfeb1b1b1, 0xfeaeaeae, 0xfeaaaaaa, 0xffa4a4a4, 0xfe959595, 0xff4b4b4b, 0xff363636, 0xff373737, 0xff373737, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff373737, 0xff363636, 0xff373737, 0xff373737, 0xff373737, 0xff363636, 0xff373737, 0xff373737, 0xff5b5b5b, 0xff929292, 0xff949494, 0xff959595, 0xfe979797, 0xff979797, 0xfe999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xfe999999, 0xfe999999, 0xfe989898, 0xff969696, 0xff959595, 0xfe949494, 0xff939393, 0xff616161, 0xff363636, 0xff373737, 0xff373737, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff4b4b4b, 0xfe959595, 0xffa4a4a4, 0xfeaaaaaa, 0xffadadad, 0xfeb1b1b1, 0xffb3b3b3, 0xffb6b6b6, 0xffb8b8b8, 0xffb9b9b9, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xffbbbbbb, 0xfebbbbbb, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xfebbbbbb, 0xfebbbbbb, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xffbebebe, 0xfebfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbdbdbd, 0xfebebebe, 0xffbfbfbf, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xffbebebe, 0xfebfbfbf, 0xfebebebe, 0xffbebebe, 0xffbebebe, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb9b9b9, 0xfebababa, 0xffb9b9b9, 0xffbababa, 0xfebababa, 0xffbababa, 0xfebababa, 0xfebababa, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xffbababa, 0xffb9b9b9, 0xfebababa, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xffbababa, 0xffb9b9b9, 0xffb8b8b8, 0xffb7b7b7, 0xffb4b4b4, 0xffb2b2b2, 0xfeafafaf, 0xffababab, 0xffa7a7a7, 0xffa3a3a3, 0xfe9f9f9f, 0xff9a9a9a, 0xff696969, 0xff373737, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff888888, 0xff949494, 0xff959595, 0xfe989898, 0xff989898, 0xff999999, 0xff9a9a9a, 0xff9b9b9b, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff989898, 0xfe989898, 0xff969696, 0xff949494, 0xff949494, 0xfe8e8e8e, 0xff3b3b3b, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff373737, 0xff636363, 0xff9a9a9a, 0xff9e9e9e, 0xffa2a2a2, 0xfea7a7a7, 0xfeadadad, 0xfeafafaf, 0xfeb3b3b3, 0xffb4b4b4, 0xfeb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xfebababa, 0xffb9b9b9, 0xffbababa, 0xffb9b9b9, 0xffb9b9b9, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xffb9b9b9, 0xffbababa, 0xfebababa, 0xffbababa, 0xffbababa, 0xfebababa, 0xffbababa, 0xfebababa, 0xffbababa, 0xffbababa, 0xffb9b9b9, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xfebababa, 0xffbababa, 0xffbdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xffbdbdbd, 0xffbcbcbc, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xfebdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbdbdbd, 0xffbcbcbc, 0xfebdbdbd, 0xfebdbdbd, 0xffbdbdbd, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xfeb9b9b9, 0xffb9b9b9, 0xffb8b8b8, 0xfebababa, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xfeb9b9b9, 0xfeb8b8b8, 0xffb6b6b6, 0xffb4b4b4, 0xffb0b0b0, 0xffaeafae, 0xffaaaaaa, 0xffa5a5a5, 0xffa0a0a0, 0xff9d9d9d, 0xff999999, 0xff969696, 0xff727272, 0xff3b3b3b, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff343434, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff5b5b5b, 0xff949494, 0xff959595, 0xff979797, 0xff989898, 0xfe9b9b9b, 0xff9c9c9c, 0xff9d9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xfea1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xff9f9f9f, 0xff9e9e9e, 0xfe9d9e9d, 0xff9c9c9c, 0xff9a9a9a, 0xff989898, 0xfe989898, 0xff959595, 0xff939393, 0xff616161, 0xff363636, 0xff343434, 0xff363636, 0xff363636, 0xff343434, 0xff363636, 0xff343434, 0xff363636, 0xff373737, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff3b3b3b, 0xff727272, 0xfe979797, 0xff999999, 0xfe9d9e9d, 0xfea2a2a2, 0xfea6a6a6, 0xfeababab, 0xffaeaeae, 0xffb0b0b0, 0xffb4b4b4, 0xffb6b6b6, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xfeb9b9b9, 0xffb9b9b9, 0xfeb9b9b9, 0xffb8b8b8, 0xffb9b9b9, 0xfeb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb8b8b8, 0xffb9b9b9, 0xfeb9b9b9, 0xffb9b9b9, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, 0xfebcbcbc, 0xfebcbcbc, 0xffbbbbbb, 0xffbbbbbb, 0xffbbbbbb, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb8b8b8, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb9b9b9, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb5b5b5, 0xffb2b2b2, 0xffb0b0b0, 0xffadadad, 0xffa9a9a9, 0xffa4a4a4, 0xffa0a0a0, 0xff9d9d9d, 0xfe999999, 0xff969696, 0xff939393, 0xfe878787, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff343434, 0xff343434, 0xff363636, 0xff363636, 0xff363636, 0xff343434, 0xff343434, 0xff363636, 0xff7d7d7d, 0xff959595, 0xff979797, 0xff999999, 0xfe9c9c9c, 0xff9d9e9e, 0xff9f9f9f, 0xffa1a1a1, 0xffa3a3a3, 0xfea4a4a4, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xfea4a4a4, 0xfea3a3a3, 0xffa1a1a1, 0xff9e9e9e, 0xff9d9e9e, 0xff9b9b9b, 0xff999999, 0xfe989898, 0xff959595, 0xff7d7d7d, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff363636, 0xff343434, 0xff363636, 0xff363636, 0xff343434, 0xff343434, 0xff343434, 0xff363636, 0xff343434, 0xff343434, 0xff868686, 0xff949494, 0xff969696, 0xfe9a9a9a, 0xff9d9d9d, 0xfea1a1a1, 0xffa4a4a4, 0xfeaaaaaa, 0xffadadad, 0xffb0b0b0, 0xffb2b2b2, 0xffb5b5b5, 0xffb7b7b7, 0xffb7b7b7, 0xffb8b8b8, 0xfeb9b9b9, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xffb8b8b8, 0xfeb9b9b9, 0xfeb9b9b9, 0xffb8b8b8, 0xfeb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xfeb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xfeb9b9b9, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffbbbbbb, 0xffbababa, 0xffbababa, 0xffbababa, 0xffbbbbbb, 0xffbbbbbb, 0xffbababa, 0xfebbbbbb, 0xffbababa, 0xffbababa, 0xffbababa, 0xfebbbbbb, 0xfebbbbbb, 0xffbababa, 0xffbbbbbb, 0xffbbbbbb, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeb7b7b7, 0xfeb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xfeb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xfeb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb6b6b6, 0xfeb5b5b5, 0xffb2b2b2, 0xffafafaf, 0xfeadadad, 0xfea9a9a9, 0xffa4a4a4, 0xffa0a0a0, 0xff9c9c9c, 0xff989898, 0xfe979797, 0xff949494, 0xff868686, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff363636, 0xff343434, 0xff343434, 0xff343434, 0xff949494, 0xff969696, 0xfe9a9a9a, 0xff9b9b9b, 0xff9d9e9e, 0xfea1a1a1, 0xffa2a2a2, 0xffa4a4a4, 0xfea8a8a8, 0xffa8a8a8, 0xffa9a9a9, 0xfeaaaaaa, 0xfeaaaaaa, 0xfeaaaaaa, 0xffa8a8a8, 0xffa7a7a7, 0xffa5a5a5, 0xffa2a2a2, 0xffa0a0a0, 0xff9d9e9e, 0xff9c9c9c, 0xff999999, 0xfe979797, 0xff8e8e8e, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff363636, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff363636, 0xff343434, 0xff868686, 0xff939393, 0xff969696, 0xfe9a9a9a, 0xfe9d9e9d, 0xffa0a0a0, 0xffa4a4a4, 0xffa8a8a8, 0xffadadad, 0xffafafaf, 0xffb2b2b2, 0xffb4b4b4, 0xffb6b6b6, 0xfeb7b7b7, 0xffb8b8b8, 0xffb7b7b7, 0xfeb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xfeb8b8b8, 0xfeb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xfeb8b8b8, 0xffb7b7b7, 0xffb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb8b8b8, 0xfeb8b8b8, 0xffb9b9b9, 0xfebababa, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xfebababa, 0xffb9b9b9, 0xfebababa, 0xfebababa, 0xffbababa, 0xffb9b9b9, 0xffbababa, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, 0xffb9b9b9, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xffb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xfeb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xffb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xfeb6b6b6, 0xfeb5b5b5, 0xffb2b2b2, 0xfeb0b0b0, 0xffadadad, 0xffa9a9a9, 0xffa5a5a5, 0xffa0a0a0, 0xff9d9d9d, 0xff9a9a9a, 0xff979797, 0xfe959595, 0xff7c7c7c, 0xff333333, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff343434, 0xff484848, 0xff959595, 0xfe999999, 0xfe9c9c9c, 0xff9d9e9e, 0xfea1a1a1, 0xffa3a3a3, 0xfea7a7a7, 0xffa8a8a8, 0xffababab, 0xffababab, 0xfeadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffababab, 0xffaaaaaa, 0xfea9a9a9, 0xfea7a7a7, 0xffa4a4a4, 0xfea2a2a2, 0xfe9e9e9e, 0xff9b9b9b, 0xfe999999, 0xfe969696, 0xff414141, 0xff343434, 0xff333333, 0xff343434, 0xff343434, 0xff333333, 0xff343434, 0xff343434, 0xff333333, 0xff343434, 0xff333333, 0xff343434, 0xff343434, 0xff343434, 0xff828282, 0xff949494, 0xff979797, 0xff9a9a9a, 0xff9d9e9e, 0xffa0a0a0, 0xffa5a5a5, 0xffa9a9a9, 0xffadadad, 0xffafafaf, 0xffb2b2b2, 0xffb4b4b4, 0xffb5b5b5, 0xffb6b6b6, 0xffb7b7b7, 0xffb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xfeb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb7b7b7, 0xffb7b7b7, 0xfeb7b7b7, 0xfeb7b7b7, 0xffb7b7b7, 0xfeb7b7b7, 0xffb8b8b8, 0xffb8b8b8, 0xffb8b8b8, 0xffb7b7b7, 0xffb7b7b7, 0xffb7b7b7, 0xffb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xfeb8b8b8, 0xffb8b8b8, 0xfeb8b8b8, 0xffb7b7b7, 0xffb8b8b8, 0xffb8b8b8, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeb7b7b7, 0xfeb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb5b5b5, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xfeb7b7b7, 0xffb4b4b4, 0xffb3b3b3, 0xfeb3b3b3, 0xfeb0b0b0, 0xffadadad, 0xfeababab, 0xffa6a6a6, 0xffa2a2a2, 0xff9e9e9e, 0xfe9c9c9c, 0xfe999999, 0xff959595, 0xff7c7c7c, 0xff343434, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff343434, 0xff333333, 0xff333333, 0xff4e4e4e, 0xff979797, 0xfe9b9b9b, 0xfe9d9e9d, 0xffa0a0a0, 0xfea4a4a4, 0xffa6a6a6, 0xffa9a9a9, 0xffababab, 0xfeaeaeae, 0xffaeafae, 0xffaeafae, 0xffb0b0b0, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeaeaeae, 0xffababab, 0xffa9a9a9, 0xffa6a6a6, 0xffa3a3a3, 0xffa0a0a0, 0xff9d9e9e, 0xff9a9a9a, 0xff979797, 0xff4d4d4d, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff343434, 0xff343434, 0xff333333, 0xff343434, 0xff343434, 0xff7d7d7d, 0xfe979797, 0xff989898, 0xff9b9b9b, 0xff9e9e9e, 0xffa3a3a3, 0xffa6a6a6, 0xffaaaaaa, 0xffadadad, 0xffafafaf, 0xffb1b1b1, 0xffb4b4b4, 0xfeb6b6b6, 0xffb5b5b5, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb5b5b5, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xfeb7b7b7, 0xfeb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xfeb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xffb6b6b6, 0xfeb6b6b6, 0xffb6b6b6, 0xffb7b7b7, 0xffb6b6b6, 0xffb6b6b6, 0xfeb7b7b7, 0xfeb7b7b7, 0xfeb6b6b6, 0xffb7b7b7, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb5b5b5, 0xffb4b4b4, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb4b4b4, 0xffb2b2b2, 0xffb0b0b0, 0xffaeaeae, 0xfeacacac, 0xfea8a8a8, 0xffa4a4a4, 0xffa1a1a1, 0xfe9d9e9d, 0xff9a9a9a, 0xff979797, 0xff7e7e7e, 0xff333333, 0xff343434, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff343434, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff4e4e4e, 0xff989898, 0xff9c9c9c, 0xff9f9f9f, 0xffa2a2a2, 0xffa6a6a6, 0xffa9a9a9, 0xfeacacac, 0xffadadad, 0xfeb0b0b0, 0xffafafaf, 0xfeb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xffb0b0b0, 0xfeb1b1b1, 0xffafafaf, 0xfeafafaf, 0xffacacac, 0xffaaaaaa, 0xffa6a6a6, 0xfea4a4a4, 0xff9f9f9f, 0xfe9d9d9d, 0xfe999999, 0xff4e4e4e, 0xff333333, 0xff323232, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff343434, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff7e7e7e, 0xff969696, 0xfe9b9b9b, 0xff9d9e9e, 0xffa0a0a0, 0xfea5a5a5, 0xffa8a8a8, 0xffababab, 0xfeafafaf, 0xfeb1b1b1, 0xffb2b2b2, 0xffb3b3b3, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb6b6b6, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb6b6b6, 0xffb4b4b4, 0xffb4b4b4, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb4b4b4, 0xffb5b5b5, 0xffb5b5b5, 0xffb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb4b4b4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb4b4b4, 0xfeb5b5b5, 0xfeb5b5b5, 0xffb4b4b4, 0xffb5b5b5, 0xffb4b4b4, 0xffb5b5b5, 0xfeb5b5b5, 0xfeb5b5b5, 0xfeb5b5b5, 0xffb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb3b3b3, 0xffb2b2b2, 0xffb0b0b0, 0xffaeafae, 0xfeadadad, 0xffaaaaaa, 0xffa6a6a6, 0xffa2a2a2, 0xff9f9f9f, 0xff9d9d9d, 0xfe9a9a9a, 0xff858585, 0xff333333, 0xff323232, 0xff333333, 0xff323232, 0xff323232, 0xff333333, 0xff323232, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff323232, 0xff333333, 0xff414141, 0xff9a9a9a, 0xff9d9e9e, 0xffa1a1a1, 0xfea6a6a6, 0xffa8a8a8, 0xffacacac, 0xffaeaeae, 0xfeb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xfeafafaf, 0xffababab, 0xfeaaaaaa, 0xfea6a6a6, 0xfea3a3a3, 0xff9d9e9e, 0xff9b9b9b, 0xff484848, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff323232, 0xff333333, 0xff333333, 0xff333333, 0xff333333, 0xff323232, 0xff323232, 0xff7e7e7e, 0xff999999, 0xfe9d9d9d, 0xff9f9f9f, 0xffa2a2a2, 0xffa6a6a6, 0xfeaaaaaa, 0xffacacac, 0xfeb0b0b0, 0xfeb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xffb5b5b5, 0xffb5b5b5, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xfeb4b4b4, 0xfeb4b4b4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xfeb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffafafaf, 0xffaeaeae, 0xffababab, 0xffa9a9a9, 0xffa5a5a5, 0xffa1a1a1, 0xff9d9e9e, 0xff9b9b9b, 0xff8b8b8b, 0xff323232, 0xff323232, 0xff323232, 0xff333333, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff333333, 0xff969696, 0xff9f9f9f, 0xffa3a3a3, 0xffa7a7a7, 0xffaaaaaa, 0xffadadad, 0xffafafaf, 0xffb1b1b1, 0xffb2b2b2, 0xffb3b3b3, 0xffb3b3b3, 0xfeb4b4b4, 0xfeb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xffb0b0b0, 0xffafafaf, 0xffadadad, 0xfeababab, 0xffa7a7a7, 0xffa3a3a3, 0xfea0a0a0, 0xff9c9c9c, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff333333, 0xff323232, 0xff333333, 0xff323232, 0xff323232, 0xff323232, 0xff333333, 0xff333333, 0xff8b8b8b, 0xff9b9b9b, 0xff9d9e9e, 0xffa1a1a1, 0xffa5a5a5, 0xfeaaaaaa, 0xfeadadad, 0xfeaeaeae, 0xfeb0b0b0, 0xffb1b1b1, 0xffb2b2b2, 0xffb3b3b3, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb5b5b5, 0xffb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb4b4b4, 0xfeb4b4b4, 0xfeb4b4b4, 0xfeb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xffb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb4b4b4, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb2b2b2, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb3b3b3, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xfeb4b4b4, 0xffb3b3b3, 0xffb2b2b2, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xfeb1b1b1, 0xffaeafae, 0xffadadad, 0xffababab, 0xffa7a7a7, 0xffa4a4a4, 0xffa0a0a0, 0xff9d9e9e, 0xff818181, 0xff313131, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff848484, 0xffa0a0a0, 0xffa5a5a5, 0xffa8a8a8, 0xffacacac, 0xffaeaeae, 0xffb0b0b0, 0xffb1b1b1, 0xffb2b2b2, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb3b3b3, 0xfeb4b4b4, 0xffb2b2b2, 0xfeb2b2b2, 0xffb0b0b0, 0xffaeaeae, 0xffacacac, 0xfeaaaaaa, 0xfea6a6a6, 0xffa1a1a1, 0xff848484, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff323232, 0xff313131, 0xff323232, 0xff323232, 0xff878787, 0xff9d9d9d, 0xffa0a0a0, 0xffa4a4a4, 0xfea8a8a8, 0xffaaaaaa, 0xffadadad, 0xffaeafae, 0xfeb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xfeb4b4b4, 0xfeb4b4b4, 0xffb3b3b3, 0xffb3b3b3, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xffb3b3b3, 0xfeb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb1b1b1, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb2b2b2, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb2b2b2, 0xfeb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xfeb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xfeaeaeae, 0xffacacac, 0xffa9a9a9, 0xffa5a5a5, 0xfea2a2a2, 0xff727272, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff323232, 0xff646464, 0xffa2a2a2, 0xfea6a6a6, 0xffaaaaaa, 0xffadadad, 0xffaeafae, 0xffb0b0b0, 0xffb1b1b1, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb0b0b0, 0xffaeafae, 0xffadadad, 0xffa9a9a9, 0xffa6a6a6, 0xffa2a2a2, 0xff5d5e5e, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff323232, 0xff6b6b6b, 0xffa1a1a1, 0xfea6a6a6, 0xffa9a9a9, 0xfeadadad, 0xffaeaeae, 0xffafafaf, 0xffb0b0b0, 0xffb1b1b1, 0xffb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xffb2b2b2, 0xfeb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb3b3b3, 0xfeb3b3b3, 0xfeb3b3b3, 0xffb2b2b2, 0xfeb3b3b3, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb3b3b3, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffafafaf, 0xffafafaf, 0xfeafafaf, 0xffafafaf, 0xfeafafaf, 0xffaeafae, 0xffafafaf, 0xffafafaf, 0xffafafaf, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeb2b2b2, 0xffb1b1b1, 0xffb2b2b2, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffaeafae, 0xffadadad, 0xffababab, 0xffa0a0a0, 0xff606060, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff393939, 0xff9d9d9d, 0xfea8a8a8, 0xffaaaaaa, 0xffadadad, 0xfeb0b0b0, 0xfeb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb2b2b2, 0xffb0b0b0, 0xffaeafae, 0xffadadad, 0xffaaaaaa, 0xffa6a6a6, 0xff969696, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff323232, 0xff323232, 0xff313131, 0xff323232, 0xff676767, 0xffa0a0a0, 0xffaaaaaa, 0xffadadad, 0xffaeafae, 0xfeb0b0b0, 0xffb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb2b2b2, 0xffb2b2b2, 0xfeb2b2b2, 0xfeb2b2b2, 0xffb2b2b2, 0xffb1b1b1, 0xfeb2b2b2, 0xfeb2b2b2, 0xfeaeaeae, 0xfeaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeafae, 0xfeaeaeae, 0xfeaeaeae, 0xfeaeaeae, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb0b0b0, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xfeb2b2b2, 0xffb1b1b1, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffafafaf, 0xffaeafae, 0xfeaeaeae, 0xfe9d9e9d, 0xff494949, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff676767, 0xffa7a7a7, 0xffaaaaaa, 0xffadadad, 0xfeafafaf, 0xfeb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb2b2b2, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xffaeafae, 0xffadadad, 0xfeababab, 0xffa6a6a6, 0xff5f5f5f, 0xff313131, 0xff303030, 0xff313131, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff424242, 0xfe9d9e9d, 0xffadadad, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xffb1b1b1, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xfeaeaeae, 0xffadadad, 0xffadadad, 0xfeaeaeae, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xfeadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffacacac, 0xffadadad, 0xfeaeaeae, 0xfeaeaeae, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffb1b1b1, 0xfeb1b1b1, 0xffb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xffafafaf, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeafafaf, 0xff909090, 0xff393939, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xfe7e7e7e, 0xfeababab, 0xffacacac, 0xffaeafae, 0xffafafaf, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffaeaeae, 0xffacacac, 0xffaaaaaa, 0xff7d7d7d, 0xff313131, 0xff303030, 0xff313131, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff303030, 0xff313131, 0xff303030, 0xff303030, 0xff313131, 0xff303030, 0xff313131, 0xff313131, 0xff303030, 0xff303030, 0xff313131, 0xff313131, 0xff313131, 0xff424242, 0xff898989, 0xfeafafaf, 0xffafafaf, 0xfeb0b0b0, 0xfeb1b1b1, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb1b1b1, 0xfeb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffafafaf, 0xfeacacac, 0xffacacac, 0xfeacacac, 0xffacacac, 0xfeacacac, 0xffababab, 0xffacacac, 0xffababab, 0xffababab, 0xffacacac, 0xfeacacac, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xfeacacac, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeafafaf, 0xffafafaf, 0xfeafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xfeafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffb0b0b0, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffaeafae, 0xff727272, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff383838, 0xff949494, 0xffacacac, 0xfeaeaeae, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffb0b0b0, 0xffafafaf, 0xffafafaf, 0xffaeafae, 0xfeaeaeae, 0xffacacac, 0xff949494, 0xff393939, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff313131, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff737373, 0xfeafafaf, 0xfeb0b0b0, 0xfeb0b0b0, 0xffb0b0b0, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffb0b0b0, 0xfeb0b0b0, 0xffafafaf, 0xffafafaf, 0xfeb0b0b0, 0xffb0b0b0, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xffafafaf, 0xfeababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffa9a9a9, 0xfeababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xffafafaf, 0xffafafaf, 0xfeafafaf, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xffafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xff6a6a6a, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff383838, 0xff7f7f7f, 0xffadadad, 0xffaeaeae, 0xffafafaf, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xfeafafaf, 0xffafafaf, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xfeaeaeae, 0xfeaeaeae, 0xff808080, 0xff383838, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff636363, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffafafaf, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xfeafafaf, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffafafaf, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa9a9a9, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa9a9a9, 0xfea9a9a9, 0xfea9a9a9, 0xffa8a8a8, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeaeae, 0xfeaeaeae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xffaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xfeafafaf, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff626262, 0xff9e9e9e, 0xffaeaeae, 0xffaeafae, 0xfeafafaf, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffa6a6a6, 0xff696969, 0xff2e2e2e, 0xff303030, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xffadadad, 0xffaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeafae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeafae, 0xfeaeaeae, 0xfeafafaf, 0xfeaeaeae, 0xffaeafae, 0xfeaeaeae, 0xffaeafae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeafae, 0xffaeaeae, 0xffaeafae, 0xffaeafae, 0xffaeafae, 0xffaeaeae, 0xffaeafae, 0xffaeafae, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xfea7a7a7, 0xffa7a7a7, 0xfea7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffadadad, 0xffadadad, 0xffacacac, 0xff515151, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff303030, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff626262, 0xff909090, 0xfeaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffa7a7a7, 0xff919191, 0xff6a6a6a, 0xff383838, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff494949, 0xffacacac, 0xffadadad, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffadadad, 0xffaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xffa5a5a5, 0xfea6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xfea6a6a6, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeaeaeae, 0xfeadadad, 0xfeaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xfeaeaeae, 0xffadadad, 0xffaeaeae, 0xffadadad, 0xfeaeaeae, 0xfeaeaeae, 0xffadadad, 0xffaeaeae, 0xffadadad, 0xfeaeaeae, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xffababab, 0xfe8d8d8d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff494949, 0xff515151, 0xff525252, 0xff404040, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff9b9b9b, 0xffaaaaaa, 0xffababab, 0xffacacac, 0xffadadad, 0xffadadad, 0xffaeaeae, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xfeaeaeae, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xffadadad, 0xfeaeaeae, 0xffadadad, 0xffaeaeae, 0xffadadad, 0xffadadad, 0xffaeaeae, 0xfeaeaeae, 0xffaeaeae, 0xffaeaeae, 0xffadadad, 0xfeaeaeae, 0xffa4a4a4, 0xfea4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xfea4a4a4, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xfeadadad, 0xffadadad, 0xffadadad, 0xffacacac, 0xffadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xfeadadad, 0xffadadad, 0xffacacac, 0xfeadadad, 0xffacacac, 0xffacacac, 0xffacacac, 0xffadadad, 0xffacacac, 0xfeadadad, 0xffacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xffaaaaaa, 0xfeaaaaaa, 0xffa6a6a6, 0xff5d5e5e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2e2e2e, 0xff2d2d2d, 0xff5d5e5e, 0xfea7a7a7, 0xffa8a8a8, 0xffa9a9a9, 0xfeacacac, 0xfeadadad, 0xffacacac, 0xffadadad, 0xffacacac, 0xfeadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xfeadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffadadad, 0xffacacac, 0xfeadadad, 0xffadadad, 0xffacacac, 0xffacacac, 0xffadadad, 0xfeadadad, 0xfeadadad, 0xffacacac, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa2a2a2, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10afafaf, 0xffacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xfeacacac, 0xffacacac, 0xffababab, 0xffacacac, 0xffacacac, 0xfeacacac, 0xffacacac, 0xffababab, 0xffacacac, 0xffacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xffababab, 0xffacacac, 0xffababab, 0xffaaaaaa, 0xffa9a9a9, 0xffa7a7a7, 0xffa6a6a6, 0xffa4a4a4, 0xff9a9a9a, 0xff343434, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff3e3e3e, 0xff939393, 0xffa3a3a3, 0xfea7a7a7, 0xffa7a7a7, 0xfeaaaaaa, 0xffaaaaaa, 0xffacacac, 0xffacacac, 0xfeacacac, 0xffababab, 0xffacacac, 0xffababab, 0xffababab, 0xfeacacac, 0xffababab, 0xffacacac, 0xfeacacac, 0xffacacac, 0xffababab, 0xffacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xffacacac, 0xffababab, 0xfeacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffacacac, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fadadad, 0xfeababab, 0xffababab, 0xffababab, 0xfeababab, 0xffababab, 0xffaaaaaa, 0xffababab, 0xffababab, 0xffababab, 0xfeacacac, 0xffababab, 0xffababab, 0xffababab, 0xfeababab, 0xffababab, 0xfeababab, 0xffababab, 0xffababab, 0xffababab, 0xffaaaaaa, 0xffa9a9a9, 0xfea9a9a9, 0xffa7a7a7, 0xffa4a4a4, 0xfea2a2a2, 0xff9d9e9e, 0xff676767, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2d2d2d, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff666666, 0xff9d9e9e, 0xfea2a2a2, 0xfea4a4a4, 0xfea7a7a7, 0xfea9a9a9, 0xffa9a9a9, 0xffaaaaaa, 0xffababab, 0xffacacac, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xffacacac, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xfeababab, 0xfeacacac, 0xfeacacac, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xffababab, 0xffacacac, 0xfeababab, 0xffababab, 0xffababab, 0xffababab, 0xfeacacac, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xffa0a0a0, 0xff9f9f9f, 0xffa0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xfea0a0a0, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x50a9a9a9, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeababab, 0xffababab, 0xffaaaaaa, 0xfeababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffababab, 0xffaaaaaa, 0xffa9a9a9, 0xffa8a8a8, 0xffa7a7a7, 0xffa4a4a4, 0xffa2a2a2, 0xff9f9f9f, 0xff9c9c9c, 0xff919191, 0xff3b3b3b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2d2d2d, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff3b3b3b, 0xff999999, 0xfe9d9d9d, 0xff9e9e9e, 0xffa1a1a1, 0xffa4a4a4, 0xfea7a7a7, 0xffa8a8a8, 0xffa9a9a9, 0xffababab, 0xffaaaaaa, 0xfeababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xfeababab, 0xfeaaaaaa, 0xfeababab, 0xffaaaaaa, 0xffababab, 0xffababab, 0xffaaaaaa, 0xffababab, 0xffaaaaaa, 0xffaaaaaa, 0xffaaaaaa, 0xff9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0x809d9d9d, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20a7a7a7, 0xefaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffaaaaaa, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffaaaaaa, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xfeaaaaaa, 0xffa9a9a9, 0xffaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa7a7a7, 0xffa5a5a5, 0xffa3a3a3, 0xffa0a0a0, 0xff9d9d9d, 0xff999999, 0xff969696, 0xff7a7a7a, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff2c2c2c, 0xff6e6e6e, 0xfe969696, 0xff999999, 0xfe9d9e9d, 0xffa0a0a0, 0xffa3a3a3, 0xffa5a5a5, 0xfea8a8a8, 0xffa8a8a8, 0xffaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffaaaaaa, 0xfeaaaaaa, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xfeaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xfeaaaaaa, 0xffaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0x9f9f9f9f, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20a7a7a7, 0xdfa9a9a9, 0xfea9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xfea9a9a9, 0xfea9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfea9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xffa8a8a8, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa7a7a7, 0xffa6a6a6, 0xfea4a4a4, 0xffa2a2a2, 0xff9f9f9f, 0xff9c9c9c, 0xfe999999, 0xff949494, 0xff909090, 0xff464646, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2c2c2c, 0xff2b2b2b, 0xff4c4c4c, 0xff909090, 0xff939393, 0xff979797, 0xff9b9b9b, 0xff9e9e9e, 0xfea3a3a3, 0xffa4a4a4, 0xffa7a7a7, 0xffa7a7a7, 0xffa9a9a9, 0xffa9a9a9, 0xfea9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa8a8a8, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfeaaaaaa, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfea9a9a9, 0xffa9a9a9, 0xffa8a8a8, 0xffa9a9a9, 0xffa9a9a9, 0xffa9a9a9, 0xfea9a9a9, 0xffa8a8a8, 0xffa9a9a9, 0xffa9a9a9, 0xfe9d9d9d, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xfe9d9d9d, 0xfe9d9d9d, 0xcf9e9e9e, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xcfa8a8a8, 0xfea9a9a9, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xfea8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa9a9a9, 0xfea9a9a9, 0xffa7a7a7, 0xffa6a6a6, 0xffa5a5a5, 0xffa3a3a3, 0xffa0a0a0, 0xff9d9e9e, 0xff9b9b9b, 0xfe979797, 0xfe939393, 0xfe8f8f8f, 0xff7b7b7b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff808080, 0xfe8f8f8f, 0xff929292, 0xfe979797, 0xff9b9b9b, 0xfe9e9e9e, 0xffa0a0a0, 0xffa3a3a3, 0xfea6a6a6, 0xffa7a7a7, 0xffa8a8a8, 0xffa8a8a8, 0xfea9a9a9, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xfea8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xfea9a9a9, 0xfea8a8a8, 0xffa8a8a8, 0xffa7a7a7, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xffa8a8a8, 0xfea9a9a9, 0xfea9a9a9, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9b9b9b, 0xff9a9a9a, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xfe9b9b9b, 0xff9b9b9b, 0xdf9a9a9a, 0x109f9f9f, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x8fa9a9a9, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa4a4a4, 0xffa3a3a3, 0xffa0a0a0, 0xff9d9e9e, 0xff9a9a9a, 0xff969696, 0xff929292, 0xff8e8e8e, 0xff8a8a8a, 0xff565656, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff313131, 0xff313131, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff303030, 0xff313131, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2b2b2b, 0xff505050, 0xff8b8b8b, 0xff8e8e8e, 0xfe939393, 0xff969696, 0xff9a9a9a, 0xff9d9e9e, 0xffa0a0a0, 0xffa3a3a3, 0xfea6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa8a8a8, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xfea8a8a8, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xfea8a8a8, 0xfe9a9a9a, 0xff999999, 0xfe999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff999999, 0xdf999999, 0x20979797, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fa9a9a9, 0xffa6a6a6, 0xffa7a7a7, 0xfea7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xfea7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa6a6a6, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa7a7a7, 0xfea7a7a7, 0xffa7a7a7, 0xfea7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa5a5a5, 0xffa4a4a4, 0xffa2a2a2, 0xffa0a0a0, 0xff9d9d9d, 0xff9a9a9a, 0xff969696, 0xff929292, 0xfe8f8f8f, 0xff8b8b8b, 0xff828282, 0xff303030, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff414141, 0xff5c5c5c, 0xff7c7c7c, 0xfe777777, 0xff363636, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff3d3d3d, 0xff777777, 0xff7c7c7c, 0xfe626262, 0xff373737, 0xff2b2b2b, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff373737, 0xff7d7d7d, 0xff8b8b8b, 0xff8e8e8e, 0xff929292, 0xff969696, 0xff9a9a9a, 0xff9d9e9e, 0xffa0a0a0, 0xffa2a2a2, 0xfea5a5a5, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xfea7a7a7, 0xffa7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xffa7a7a7, 0xfea7a7a7, 0xffa6a6a6, 0xfea7a7a7, 0xffa6a6a6, 0xffa7a7a7, 0xfea7a7a7, 0xffa6a6a6, 0xfea7a7a7, 0xffa6a6a6, 0xffa6a6a6, 0xffa7a7a7, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff979797, 0xff989898, 0xff979797, 0xee989898, 0x20979797, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x50a6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xffa5a5a5, 0xffa3a3a3, 0xffa2a2a2, 0xfea1a1a1, 0xff9d9e9e, 0xff9b9b9b, 0xff969696, 0xff929292, 0xff8f8f8f, 0xff8b8b8b, 0xfe888888, 0xff606060, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff303030, 0xff525252, 0xff6c6c6c, 0xfe818181, 0xff808080, 0xff818181, 0xff818181, 0xfe828282, 0xff585858, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff303030, 0xff575757, 0xff818181, 0xff818181, 0xff808080, 0xff808080, 0xff808080, 0xff6d6d6d, 0xff4c4c4c, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff666666, 0xfe898989, 0xff8b8b8b, 0xfe8f8f8f, 0xff929292, 0xff979797, 0xff9a9a9a, 0xff9d9e9e, 0xffa0a0a0, 0xffa2a2a2, 0xfea5a5a5, 0xffa5a5a5, 0xffa6a6a6, 0xffa6a6a6, 0xffa5a5a5, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xffa5a5a5, 0xffa6a6a6, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xfea6a6a6, 0xfea6a6a6, 0xfea6a6a6, 0xfea6a6a6, 0xffa6a6a6, 0xfea7a7a7, 0xffa5a5a5, 0xffa6a6a6, 0xffa6a6a6, 0xffa6a6a6, 0xff969696, 0xff969696, 0xfe979797, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0x309a9a9a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x209f9f9f, 0xefa4a4a4, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xfea5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea4a4a4, 0xffa2a2a2, 0xfea1a1a1, 0xff9d9e9e, 0xfe9c9c9c, 0xff989898, 0xfe959595, 0xff909090, 0xff8c8c8c, 0xff898989, 0xff868686, 0xff3d3d3d, 0xff282828, 0xff282828, 0xff3b3b3b, 0xff575757, 0xff7b7b7b, 0xff818181, 0xff808080, 0xff808080, 0xff818181, 0xff818181, 0xfe828282, 0xff808080, 0xff818181, 0xff767676, 0xff4c4c4c, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff2a2a2a, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff282828, 0xff303030, 0xff535353, 0xff7b7b7b, 0xff818181, 0xfe818181, 0xfe828282, 0xfe828282, 0xff818181, 0xff808080, 0xff808080, 0xfe828282, 0xff767676, 0xff626262, 0xff343434, 0xff2a2a2a, 0xff282828, 0xff363636, 0xff868686, 0xff898989, 0xff8c8c8c, 0xff909090, 0xfe949494, 0xff989898, 0xff9b9b9b, 0xff9d9e9e, 0xffa0a0a0, 0xffa3a3a3, 0xffa3a3a3, 0xfea5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa6a6a6, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xfea5a5a5, 0xffa6a6a6, 0xfea6a6a6, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa4a4a4, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xffa5a5a5, 0xfea6a6a6, 0xffa5a5a5, 0xff949494, 0xff959595, 0xff959595, 0xff949494, 0xff959595, 0xfe969696, 0xff949494, 0xfe959595, 0xff949494, 0x5f969696, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x209f9f9f, 0xdfa5a5a5, 0xffa5a5a5, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xffa4a4a4, 0xffa5a5a5, 0xfea5a5a5, 0xffa5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xfea5a5a5, 0xffa4a4a4, 0xffa5a5a5, 0xffa5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa2a2a2, 0xffa1a1a1, 0xff9e9e9e, 0xff9c9c9c, 0xff999999, 0xfe969696, 0xff919191, 0xff8d8d8d, 0xff8a8a8a, 0xff878787, 0xff7a7a7a, 0xff696969, 0xff6d6d6d, 0xff818181, 0xff818181, 0xff818181, 0xff818181, 0xff818181, 0xff828282, 0xff818181, 0xff828282, 0xff818181, 0xff828282, 0xff808080, 0xff818181, 0xff808080, 0xff767676, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff2a2a2a, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff7c7c7c, 0xff808080, 0xff818181, 0xff818181, 0xfe828282, 0xff828282, 0xfe838383, 0xff818181, 0xff818181, 0xff818181, 0xff818181, 0xfe818181, 0xfe818181, 0xff818181, 0xff6d6d6d, 0xff636363, 0xfe818181, 0xff878787, 0xff8a8a8a, 0xff8d8d8d, 0xff919191, 0xff959595, 0xfe999999, 0xff9c9c9c, 0xff9e9e9e, 0xffa0a0a0, 0xfea3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xffa5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea4a4a4, 0xfea5a5a5, 0xfea5a5a5, 0xffa4a4a4, 0xfea4a4a4, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xfea5a5a5, 0xffa5a5a5, 0xff939393, 0xff939393, 0xfe949494, 0xfe949494, 0xff939393, 0xff939393, 0xff949494, 0xff939393, 0x80919393, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x10afafaf, 0xdfa4a4a4, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xfea4a4a4, 0xfea4a4a4, 0xffa3a3a3, 0xfea4a4a4, 0xfea4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xfea4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xffa0a0a0, 0xff9f9f9f, 0xff9d9d9d, 0xff9a9a9a, 0xfe979797, 0xff939393, 0xff909090, 0xfe8c8c8c, 0xfe898989, 0xff868686, 0xff848484, 0xfe838383, 0xff828282, 0xff818181, 0xff818181, 0xff828282, 0xff828282, 0xfe838383, 0xff838383, 0xff828282, 0xff828282, 0xff828282, 0xfe838383, 0xff818181, 0xff818181, 0xff808080, 0xff343434, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff272727, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff282828, 0xff3a3a3a, 0xff808080, 0xff818181, 0xff818181, 0xfe838383, 0xff828282, 0xff828282, 0xff828282, 0xff838383, 0xff828282, 0xff828282, 0xfe838383, 0xfe838383, 0xfe838383, 0xff828282, 0xfe848484, 0xff848484, 0xff868686, 0xff888888, 0xff8b8b8b, 0xff8e8e8e, 0xff929292, 0xfe989898, 0xff9a9a9a, 0xff9d9d9d, 0xff9f9f9f, 0xffa1a1a1, 0xffa2a2a2, 0xffa3a3a3, 0xfea5a5a5, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xfea4a4a4, 0xffa3a3a3, 0xffa4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa4a4a4, 0xfea4a4a4, 0xffa4a4a4, 0xffa4a4a4, 0xff929292, 0xff919191, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xfe929292, 0x80919393, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xafa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa2a2a2, 0xffa1a1a1, 0xffa0a0a0, 0xfea0a0a0, 0xff9d9e9e, 0xfe9c9c9c, 0xff989898, 0xff949494, 0xff909090, 0xff8d8d8d, 0xfe8b8b8b, 0xff878787, 0xfe868686, 0xff848484, 0xfe848484, 0xff838383, 0xff838383, 0xff838383, 0xfe858585, 0xff848484, 0xfe858585, 0xff848484, 0xff848484, 0xff838383, 0xff838383, 0xff828282, 0xfe838383, 0xff818181, 0xff464646, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff282828, 0xff282828, 0xff272727, 0xff282828, 0xff282828, 0xff272727, 0xff282828, 0xff272727, 0xff272727, 0xff272727, 0xff282828, 0xff272727, 0xff272727, 0xff272727, 0xff404040, 0xff818181, 0xff818181, 0xfe838383, 0xfe848484, 0xfe858585, 0xfe858585, 0xfe858585, 0xff848484, 0xff848484, 0xff838383, 0xfe848484, 0xff838383, 0xff838383, 0xff838383, 0xff838383, 0xfe868686, 0xfe888888, 0xff8a8a8a, 0xfe8e8e8e, 0xff909090, 0xfe959595, 0xff989898, 0xff9c9c9c, 0xff9d9e9e, 0xff9f9f9f, 0xfea2a2a2, 0xfea2a2a2, 0xffa3a3a3, 0xfea4a4a4, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xfea4a4a4, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xffa3a3a3, 0xfea3a3a3, 0xfe909090, 0xff909090, 0xff909090, 0xff919191, 0xff909090, 0xff919191, 0x9f929292, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x7fa3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa1a1a1, 0xffa1a1a1, 0xff9f9f9f, 0xff9d9e9e, 0xff9c9c9c, 0xff9a9a9a, 0xff969696, 0xff939393, 0xff8f8f8f, 0xff8c8c8c, 0xff898989, 0xff878787, 0xff858585, 0xff858585, 0xff848484, 0xff848484, 0xff858585, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xfe868686, 0xff858585, 0xfe848484, 0xfe848484, 0xff818181, 0xff4b4b4b, 0xff272727, 0xff272727, 0xff262626, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff282828, 0xff272727, 0xff272727, 0xff272727, 0xff515151, 0xff828282, 0xfe848484, 0xfe848484, 0xff858585, 0xff858585, 0xff868686, 0xff878787, 0xff878787, 0xff868686, 0xff868686, 0xfe868686, 0xff858585, 0xff858585, 0xfe868686, 0xff868686, 0xff878787, 0xff898989, 0xff8c8c8c, 0xfe909090, 0xff929292, 0xff969696, 0xff999999, 0xff9c9c9c, 0xff9e9e9e, 0xfea0a0a0, 0xffa1a1a1, 0xfea2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea3a3a3, 0xfea3a3a3, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xffa3a3a3, 0xffa3a3a3, 0xffa2a2a2, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xcf8f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x6fa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa2a2a2, 0xffa1a1a1, 0xffa2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xfe9e9e9e, 0xff9d9d9d, 0xfe9b9b9b, 0xfe989898, 0xfe959595, 0xff909090, 0xfe8f8f8f, 0xff8b8b8b, 0xff898989, 0xfe888888, 0xff878787, 0xff868686, 0xff878787, 0xfe898989, 0xff888888, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff888888, 0xfe888888, 0xff868686, 0xff858585, 0xff828282, 0xff5c5c5c, 0xff272727, 0xff272727, 0xff262626, 0xff262626, 0xff262626, 0xff272727, 0xff262626, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff272727, 0xff262626, 0xff262626, 0xff272727, 0xff262626, 0xff272727, 0xff5c5c5c, 0xff828282, 0xff848484, 0xff868686, 0xff868686, 0xfe898989, 0xff888888, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff888888, 0xfe898989, 0xfe888888, 0xfe888888, 0xff878787, 0xff888888, 0xff898989, 0xfe8c8c8c, 0xfe8f8f8f, 0xff909090, 0xfe959595, 0xff979797, 0xff9b9b9b, 0xff9d9d9d, 0xff9e9e9e, 0xff9f9f9f, 0xfea1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa2a2a2, 0xffa2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa2a2a2, 0xffa2a2a2, 0xffa2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xdf8e8e8e, 0x108f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x309f9f9f, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea2a2a2, 0xffa1a1a1, 0xffa1a1a1, 0xfea1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xfea0a0a0, 0xff9e9e9e, 0xff9d9d9d, 0xff9b9b9b, 0xfe9a9a9a, 0xff969696, 0xff939393, 0xff909090, 0xff8e8e8e, 0xff8d8d8d, 0xff8a8a8a, 0xfe8b8b8b, 0xff898989, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xfe8b8b8b, 0xff888888, 0xff878787, 0xff848484, 0xff686868, 0xff262626, 0xff262626, 0xff272727, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff272727, 0xff262626, 0xff272727, 0xff262626, 0xff262626, 0xff262626, 0xff686868, 0xfe858585, 0xff868686, 0xff888888, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xfe8b8b8b, 0xfe8b8b8b, 0xff8c8c8c, 0xff8d8d8d, 0xff909090, 0xfe949494, 0xff969696, 0xff999999, 0xff9c9c9c, 0xfe9e9e9e, 0xff9f9f9f, 0xffa0a0a0, 0xffa0a0a0, 0xffa1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xfea1a1a1, 0xffa0a0a0, 0xfea1a1a1, 0xfea1a1a1, 0xfea1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa1a1a1, 0xffa0a0a0, 0xffa1a1a1, 0xffa1a1a1, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xdf8d8d8d, 0x20878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x209f9f9f, 0xdf9f9f9f, 0xffa0a0a0, 0xfea1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xfea0a0a0, 0xfea1a1a1, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xff9e9e9e, 0xff9d9d9d, 0xff9c9c9c, 0xff9a9a9a, 0xff989898, 0xff959595, 0xff929292, 0xff909090, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff8e8e8e, 0xfe8d8d8d, 0xfe8b8b8b, 0xff898989, 0xff868686, 0xff797979, 0xff262626, 0xff262626, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff262626, 0xff252525, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff747474, 0xff868686, 0xfe898989, 0xff8a8a8a, 0xff8c8c8c, 0xfe8f8f8f, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff909090, 0xff929292, 0xff949494, 0xff989898, 0xff9a9a9a, 0xfe9d9d9d, 0xff9d9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xfea1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xff9f9f9f, 0xfea1a1a1, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xfea1a1a1, 0xfea0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xff8a8a8a, 0xfe8b8b8b, 0xee8b8b8b, 0x20878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x10afafaf, 0xdfa0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xffa0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xfe9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xfea0a0a0, 0xffa0a0a0, 0xffa0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xffa0a0a0, 0xff9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xff9d9e9e, 0xff9d9d9d, 0xfe9c9c9c, 0xff9a9a9a, 0xff979797, 0xff959595, 0xff939393, 0xff929292, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff929292, 0xff929292, 0xff929292, 0xff939393, 0xff929292, 0xff929292, 0xff919191, 0xff8f8f8f, 0xff8d8d8d, 0xff8b8b8b, 0xff888888, 0xfe808080, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff262626, 0xff252525, 0xff252525, 0xff262626, 0xff252525, 0xff262626, 0xff262626, 0xff262626, 0xff252525, 0xff858585, 0xff888888, 0xff8a8a8a, 0xff8c8c8c, 0xff8e8e8e, 0xff919191, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xfe929292, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xff929292, 0xff939393, 0xfe969696, 0xff979797, 0xff9a9a9a, 0xff9b9b9b, 0xff9d9d9d, 0xff9d9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xffa0a0a0, 0xff9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xfea0a0a0, 0xff9f9f9f, 0xff898989, 0xff898989, 0x308a8a8a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xaf9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xfe9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9d9d9d, 0xfe9c9c9c, 0xff9a9a9a, 0xfe999999, 0xfe989898, 0xfe979797, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xfe969696, 0xff959595, 0xff969696, 0xff969696, 0xfe969696, 0xfe949494, 0xff929292, 0xff909090, 0xfe8d8d8d, 0xff8a8a8a, 0xff868686, 0xff323232, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff262626, 0xff262626, 0xff252525, 0xff252525, 0xff252525, 0xff262626, 0xff262626, 0xff252525, 0xff252525, 0xff323232, 0xfe878787, 0xff8a8a8a, 0xff8c8c8c, 0xfe909090, 0xfe939393, 0xff949494, 0xff969696, 0xff969696, 0xfe979797, 0xfe979797, 0xff969696, 0xff959595, 0xfe959595, 0xff949494, 0xfe949494, 0xff949494, 0xfe959595, 0xff959595, 0xff969696, 0xff989898, 0xff9a9a9a, 0xfe9c9c9c, 0xff9d9d9d, 0xff9d9e9e, 0xff9e9e9e, 0xfea0a0a0, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xfe9f9f9f, 0xff9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xfe9f9f9f, 0xff9e9e9e, 0xfe9f9f9f, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9f9f9f, 0xfe9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9f9f9f, 0xff9e9e9e, 0xff9f9f9f, 0xfe888888, 0x5f898989, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x7f9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xfe9f9f9f, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9a9a9a, 0xff989898, 0xff989898, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xfe989898, 0xff989898, 0xff989898, 0xfe9a9a9a, 0xff989898, 0xff969696, 0xff949494, 0xff919191, 0xff8e8e8e, 0xff8b8b8b, 0xfe898989, 0xff3f3f3f, 0xff252525, 0xff232323, 0xff232323, 0xff252525, 0xff252525, 0xff252525, 0xff232323, 0xff232323, 0xff252525, 0xff252525, 0xff232323, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff252525, 0xff404040, 0xff888888, 0xff8b8b8b, 0xff8e8e8e, 0xff919191, 0xff949494, 0xff969696, 0xff979797, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xff989898, 0xff979797, 0xff979797, 0xff969696, 0xff969696, 0xff979797, 0xff989898, 0xff989898, 0xff9a9a9a, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xfe9f9f9f, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9f9f9f, 0xfe9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xfe9e9e9e, 0xff9e9e9e, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0x80878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xef9e9e9e, 0xfe9d9e9d, 0xfe9e9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9e9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xff9b9b9b, 0xfe9c9c9c, 0xff9a9a9a, 0xff999999, 0xff999999, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff989898, 0xfe979797, 0xfe949494, 0xff909090, 0xff8d8d8d, 0xff898989, 0xff757575, 0xff313131, 0xff252525, 0xff232323, 0xff232323, 0xff252525, 0xff232323, 0xff252525, 0xff252525, 0xff232323, 0xff252525, 0xff232323, 0xff252525, 0xff232323, 0xff232323, 0xff232323, 0xff2a2a2a, 0xff747474, 0xff898989, 0xff8c8c8c, 0xff909090, 0xfe949494, 0xff959595, 0xff979797, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xfe9a9a9a, 0xff9a9a9a, 0xff999999, 0xfe9a9a9a, 0xff989898, 0xfe999999, 0xff989898, 0xff999999, 0xff9a9a9a, 0xff9b9b9b, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xfe9d9e9d, 0xff9d9e9e, 0xfe9e9e9e, 0xff9d9e9e, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xfe9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xfe9d9e9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9a9a9a, 0xff999999, 0xff969696, 0xfe959595, 0xff919191, 0xff8e8e8e, 0xfe8b8b8b, 0xff868686, 0xfe848484, 0xff7f7f7f, 0xff7d7d7d, 0xff7c7c7c, 0xfe7b7b7b, 0xff7a7a7a, 0xff797979, 0xfe797979, 0xff797979, 0xff797979, 0xfe7a7a7a, 0xff7b7b7b, 0xfe7c7c7c, 0xff7e7e7e, 0xff808080, 0xff828282, 0xfe878787, 0xfe8b8b8b, 0xff8e8e8e, 0xff919191, 0xff949494, 0xff969696, 0xff999999, 0xfe9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xff9d9d9d, 0xff9d9e9e, 0xfe9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xfe9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xfe9d9e9d, 0xfe9d9e9d, 0xff9d9e9e, 0xff9d9e9e, 0xff9d9d9d, 0xff9d9d9d, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xfe9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff999999, 0xfe989898, 0xff959595, 0xff919191, 0xff8e8e8e, 0xfe8b8b8b, 0xff878787, 0xff838383, 0xfe818181, 0xff7e7e7e, 0xff7c7c7c, 0xfe7b7b7b, 0xfe7a7a7a, 0xff797979, 0xff7a7a7a, 0xff7a7a7a, 0xff7a7a7a, 0xff7a7a7a, 0xff7b7b7b, 0xff7c7c7c, 0xfe7e7e7e, 0xff818181, 0xff838383, 0xff878787, 0xff8b8b8b, 0xff8e8e8e, 0xfe939393, 0xff959595, 0xfe989898, 0xff999999, 0xff9b9b9b, 0xfe9c9c9c, 0xfe9c9c9c, 0xfe9d9d9d, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xfe9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9d9d9d, 0xff9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xfe9d9d9d, 0xff9d9d9d, 0xfe9d9d9d, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff989898, 0xff959595, 0xff929292, 0xff909090, 0xff8b8b8b, 0xff878787, 0xff848484, 0xff818181, 0xff7f7f7f, 0xfe7d7d7d, 0xff7c7c7c, 0xff7b7b7b, 0xfe7a7a7a, 0xff7a7a7a, 0xff7b7b7b, 0xfe7a7a7a, 0xfe7b7b7b, 0xff7b7b7b, 0xff7d7d7d, 0xff7f7f7f, 0xff818181, 0xff858585, 0xff888888, 0xfe8c8c8c, 0xff8f8f8f, 0xfe939393, 0xff959595, 0xff989898, 0xff999999, 0xff9b9b9b, 0xfe9d9d9d, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9d9d9d, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xfe9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9c9c9c, 0xff9c9c9c, 0xfe9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xff9c9c9c, 0xff9b9b9b, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff9a9a9a, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9a9a9a, 0xfe9c9c9c, 0xff9b9b9b, 0xfe9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xfe9b9b9b, 0xff9b9b9b, 0xff999999, 0xff989898, 0xff969696, 0xfe939393, 0xff909090, 0xff8c8c8c, 0xff898989, 0xfe868686, 0xff828282, 0xfe818181, 0xfe7e7e7e, 0xff7d7d7d, 0xff7c7c7c, 0xfe7b7b7b, 0xfe7c7c7c, 0xff7b7b7b, 0xff7b7b7b, 0xff7c7c7c, 0xff7c7c7c, 0xff7e7e7e, 0xff818181, 0xff828282, 0xff858585, 0xff898989, 0xfe8d8d8d, 0xff909090, 0xff939393, 0xff959595, 0xff979797, 0xff999999, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xff9b9b9b, 0xff9c9c9c, 0xfe9b9b9b, 0xfe9c9c9c, 0xfe9c9c9c, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9c9c9c, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9b9b9b, 0xff9c9c9c, 0xfe9b9b9b, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9b9b9b, 0xff9a9a9a, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xfe9a9a9a, 0xff999999, 0xff979797, 0xff959595, 0xff939393, 0xff909090, 0xff8d8d8d, 0xff8a8a8a, 0xff868686, 0xff848484, 0xff818181, 0xfe818181, 0xfe7e7e7e, 0xff7d7d7d, 0xff7d7d7d, 0xff7d7d7d, 0xff7d7d7d, 0xfe7d7d7d, 0xfe7d7d7d, 0xff7e7e7e, 0xff7f7f7f, 0xff818181, 0xff848484, 0xff878787, 0xff8a8a8a, 0xff8d8d8d, 0xff909090, 0xff949494, 0xff959595, 0xff979797, 0xfe9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xfe9b9b9b, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9b9b9b, 0xfe9b9b9b, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xfe9b9b9b, 0xff9a9a9a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff9a9a9a, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xfe9a9a9a, 0xff9a9a9a, 0xff999999, 0xfe9a9a9a, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xfe9a9a9a, 0xff9a9a9a, 0xfe9a9a9a, 0xff989898, 0xff979797, 0xfe979797, 0xff939393, 0xfe929292, 0xfe8f8f8f, 0xff8b8b8b, 0xff888888, 0xff868686, 0xff838383, 0xff828282, 0xff818181, 0xff7f7f7f, 0xff808080, 0xff7f7f7f, 0xff7f7f7f, 0xfe808080, 0xff808080, 0xff808080, 0xff828282, 0xff838383, 0xff858585, 0xff888888, 0xff8b8b8b, 0xff8e8e8e, 0xfe929292, 0xfe959595, 0xff969696, 0xfe989898, 0xff989898, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff9a9a9a, 0xfe9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff9a9a9a, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff9a9a9a, 0xfe9a9a9a, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff999999, 0xff9a9a9a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe999999, 0xfe999999, 0xff999999, 0xfe9a9a9a, 0xfe999999, 0xfe999999, 0xff989898, 0xfe999999, 0xfe999999, 0xfe999999, 0xff989898, 0xff989898, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xfe999999, 0xff999999, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xff989898, 0xfe999999, 0xfe999999, 0xff999999, 0xff999999, 0xfe999999, 0xff999999, 0xfe999999, 0xfe999999, 0xff999999, 0xff989898, 0xff999999, 0xff989898, 0xfe999999, 0xff999999, 0xff999999, 0xfe999999, 0xfe999999, 0xff999999, 0xff989898, 0xfe999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xfe999999, 0xff999999, 0xff999999, 0xff999999, 0xff989898, 0xff979797, 0xff959595, 0xfe959595, 0xff929292, 0xff909090, 0xff8d8d8d, 0xff8a8a8a, 0xff888888, 0xfe878787, 0xff848484, 0xff838383, 0xff838383, 0xff828282, 0xfe838383, 0xff828282, 0xff838383, 0xfe838383, 0xff838383, 0xff848484, 0xff858585, 0xff888888, 0xff8a8a8a, 0xff8c8c8c, 0xff8f8f8f, 0xff929292, 0xfe959595, 0xff959595, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff999999, 0xff989898, 0xfe999999, 0xff999999, 0xff999999, 0xfe999999, 0xfe999999, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xfe999999, 0xfe9a9a9a, 0xff999999, 0xfe999999, 0xff989898, 0xfe9a9a9a, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff999999, 0xfe999999, 0xfe999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xff999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xff999999, 0xfe9a9a9a, 0xfe9a9a9a, 0xff989898, 0xfe999999, 0xfe9a9a9a, 0xfe999999, 0xff999999, 0xff999999, 0xff989898, 0xff999999, 0xff989898, 0xff999999, 0xff989898, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff979797, 0xff979797, 0xff959595, 0xfe959595, 0xff939393, 0xff909090, 0xff8e8e8e, 0xff8c8c8c, 0xff8a8a8a, 0xfe898989, 0xff888888, 0xff868686, 0xfe878787, 0xff868686, 0xff858585, 0xff858585, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff888888, 0xff8a8a8a, 0xff8c8c8c, 0xff8e8e8e, 0xff909090, 0xff939393, 0xff949494, 0xfe969696, 0xff969696, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xff989898, 0xfe999999, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xfe989898, 0xff989898, 0xff989898, 0xfe989898, 0xfe999999, 0xff989898, 0xff999999, 0xff989898, 0xff989898, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff979797, 0xfe989898, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff989898, 0xfe989898, 0xff989898, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xff979797, 0xfe989898, 0xff989898, 0xff979797, 0xff989898, 0xfe989898, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff989898, 0xff979797, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xff979797, 0xff969696, 0xfe979797, 0xfe959595, 0xff939393, 0xff929292, 0xff909090, 0xff8e8e8e, 0xff8d8d8d, 0xff8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff898989, 0xfe8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8d8d8d, 0xff8e8e8e, 0xfe919191, 0xff929292, 0xff939393, 0xff959595, 0xff959595, 0xfe979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff989898, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff989898, 0xfe989898, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff989898, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe989898, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe979797, 0xff969696, 0xfe979797, 0xff969696, 0xff979797, 0xfe979797, 0xff979797, 0xff979797, 0xff969696, 0xfe979797, 0xff969696, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xff969696, 0xff979797, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xff979797, 0xff969696, 0xfe989898, 0xff969696, 0xff979797, 0xff979797, 0xfe979797, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xfe979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff969696, 0xff969696, 0xff979797, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff959595, 0xff959595, 0xff949494, 0xff929292, 0xff929292, 0xff909090, 0xff8f8f8f, 0xff8e8e8e, 0xff8d8d8d, 0xfe8e8e8e, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff909090, 0xff929292, 0xff939393, 0xfe959595, 0xff959595, 0xff959595, 0xff969696, 0xff979797, 0xff969696, 0xff969696, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xfe979797, 0xff969696, 0xff969696, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xff979797, 0xff969696, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xff979797, 0xfe979797, 0xff979797, 0xff969696, 0xfe979797, 0xff979797, 0xff969696, 0xff969696, 0xff969696, 0xff979797, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xfe969696, 0xfe979797, 0xff969696, 0xfe969696, 0xff959595, 0xff969696, 0xff969696, 0xff959595, 0xfe979797, 0xff969696, 0xff959595, 0xff969696, 0xff969696, 0xff959595, 0xff969696, 0xff969696, 0xff959595, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff959595, 0xff969696, 0xff959595, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xff959595, 0xff969696, 0xfe969696, 0xfe969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff959595, 0xff969696, 0xff959595, 0xfe979797, 0xff969696, 0xfe979797, 0xfe969696, 0xff949494, 0xfe949494, 0xfe949494, 0xff929292, 0xff919191, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xfe909090, 0xff8f8f8f, 0xff909090, 0xff919191, 0xff919191, 0xff929292, 0xff939393, 0xff949494, 0xfe959595, 0xfe969696, 0xff969696, 0xfe979797, 0xfe969696, 0xff969696, 0xff969696, 0xfe969696, 0xfe969696, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff959595, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe979797, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xff969696, 0xfe969696, 0xff969696, 0xff959595, 0xff959595, 0xff969696, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff959595, 0xff969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe959595, 0xff959595, 0xfe969696, 0xfe969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe959595, 0xff949494, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe969696, 0xfe969696, 0xff959595, 0xfe959595, 0xff959595, 0xff959595, 0xfe959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe969696, 0xff959595, 0xfe959595, 0xff959595, 0xfe969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff969696, 0xff959595, 0xff949494, 0xfe959595, 0xff959595, 0xff959595, 0xff959595, 0xff969696, 0xff949494, 0xff949494, 0xff949494, 0xff939393, 0xff939393, 0xfe939393, 0xff919191, 0xff919191, 0xfe929292, 0xfe919191, 0xff909090, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff919191, 0xff909090, 0xff919191, 0xff919191, 0xff929292, 0xff929292, 0xff939393, 0xff949494, 0xff949494, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff949494, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe959595, 0xff959595, 0xfe969696, 0xff959595, 0xff959595, 0xff959595, 0xff959595, 0xfe969696, 0xff959595, 0xfe959595, 0xff959595, 0xff959595, 0xff969696, 0xfe959595, 0xff959595, 0xff959595, 0xff959595, 0xfe969696, 0xfe959595, 0xff959595, 0xfe959595, 0xfe959595, 0xff959595, 0xfe969696, 0xff959595, 0xff959595, 0xff969696, 0xff959595, 0xfe969696, 0xff959595, 0xff959595, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff949494, 0xfe959595, 0xff949494, 0xfe959595, 0xfe959595, 0xfe959595, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xfe959595, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xfe959595, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff959595, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff959595, 0xff949494, 0xfe959595, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff959595, 0xff949494, 0xff949494, 0xff959595, 0xff959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xfe959595, 0xff949494, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xff949494, 0xff939393, 0xfe949494, 0xff939393, 0xff949494, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xfe949494, 0xff949494, 0xff939393, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xfe949494, 0xfe949494, 0xff949494, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff949494, 0xff939393, 0xff949494, 0xfe949494, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xfe949494, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xfe949494, 0xff949494, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xff949494, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xfe949494, 0xff939393, 0xfe949494, 0xff929292, 0xff939393, 0xff939393, 0xfe949494, 0xff929292, 0xff929292, 0xfe949494, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff949494, 0xff949494, 0xff949494, 0xff949494, 0xff939393, 0xff949494, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff949494, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xff949494, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xff949494, 0xfe949494, 0xff939393, 0xfe949494, 0xff939393, 0xff949494, 0xfe949494, 0xff949494, 0xff949494, 0xff939393, 0xff949494, 0xfe949494, 0xff939393, 0xff949494, 0xfe949494, 0xfe949494, 0xff939393, 0xfe949494, 0xff939393, 0xff949494, 0xff949494, 0xff939393, 0xfe949494, 0xfe949494, 0xff949494, 0xff949494, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xef939393, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff929292, 0xff929292, 0xff939393, 0xfe939393, 0xff929292, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff929292, 0xff939393, 0xfe939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff929292, 0xfe939393, 0xff929292, 0xff939393, 0xff939393, 0xfe939393, 0xfe939393, 0xff929292, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xfe949494, 0xfe949494, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xff939393, 0xfe939393, 0xff939393, 0xff939393, 0xfe949494, 0xff929292, 0xff939393, 0xff939393, 0xff929292, 0xff939393, 0xff939393, 0xff939393, 0xff939393, 0xfe939393, 0xef929292, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xdf929292, 0xff929292, 0xfe939393, 0xfe939393, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xfe939393, 0xff939393, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe929292, 0xfe939393, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xff929292, 0xfe939393, 0xfe929292, 0xff929292, 0xff929292, 0xcf939393, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xaf929292, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xfe929292, 0xfe929292, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff929292, 0xfe929292, 0xff929292, 0xff929292, 0xff919191, 0xfe929292, 0xff929292, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff929292, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xfe919191, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xfe929292, 0xfe929292, 0xff929292, 0xff929292, 0xfe929292, 0xff919191, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff929292, 0xfe919191, 0xfe929292, 0xfe929292, 0xff929292, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xfe929292, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xff929292, 0xfe929292, 0xff919191, 0xfe929292, 0xff919191, 0xff919191, 0xff919191, 0xff929292, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff929292, 0xfe929292, 0xff919191, 0xff929292, 0xff919191, 0xb0929292, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x70929292, 0xff919191, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff919191, 0xff919191, 0xfe919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff909090, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff919191, 0xff909090, 0xff919191, 0xfe919191, 0xff919191, 0xff919191, 0xff909090, 0xff919191, 0xff909090, 0xff919191, 0xff919191, 0xfe919191, 0xff909090, 0xfe919191, 0xfe919191, 0xff919191, 0xff909090, 0xff909090, 0xff919191, 0xff909090, 0xfe919191, 0xff919191, 0xff909090, 0xff919191, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xfe919191, 0xff909090, 0xff919191, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xfe919191, 0xfe919191, 0xff909090, 0xff909090, 0xff919191, 0xff919191, 0xfe919191, 0xff909090, 0xff919191, 0xff909090, 0xff909090, 0xfe919191, 0xfe919191, 0xff909090, 0xff909090, 0xfe919191, 0xff919191, 0xfe919191, 0xfe919191, 0xff919191, 0xff909090, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff919191, 0xff909090, 0xff909090, 0xfe919191, 0xfe919191, 0xfe919191, 0xfe919191, 0xfe919191, 0xff909090, 0xff919191, 0xff919191, 0xff919191, 0xff909090, 0xff909090, 0xff909090, 0xff919191, 0xff919191, 0xff909090, 0xff919191, 0xff919191, 0xff909090, 0xfe919191, 0xff909090, 0xff919191, 0xff919191, 0xff919191, 0xfe919191, 0xfe919191, 0xff909090, 0xfe929292, 0xff909090, 0xff909090, 0xff919191, 0xfe919191, 0xff909090, 0xff909090, 0xfe919191, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xff919191, 0xfe919191, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0x80919191, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0x408f8f8f, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xfe909090, 0xfe919191, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xfe919191, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xfe919191, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xfe919191, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff8f8f8f, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xff909090, 0xff909090, 0xff8f8f8f, 0xff909090, 0xfe919191, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xff909090, 0xfe909090, 0xfe909090, 0xff909090, 0xff909090, 0x408f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xee909090, 0xfe909090, 0xfe8f8f8f, 0xff909090, 0xfe909090, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xfe909090, 0xfe8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe909090, 0xfe909090, 0xff8f8f8f, 0xfe8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff909090, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xfe8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff909090, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xfe909090, 0xff909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff909090, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xfe909090, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xfe909090, 0xfe909090, 0xfe8f8f8f, 0xfe909090, 0xfe909090, 0xfe909090, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xdf909090, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x808f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8f8f8f, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xfe8f8f8f, 0xff8e8e8e, 0x9f909090, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0x108f8f8f, 0xff8e8e8e, 0xfe8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8f8f8f, 0xff8d8d8d, 0xff8e8e8e, 0xfe8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xfe8f8f8f, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xfe8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xfe8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xfe8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xfe8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0xff8e8e8e, 0xff8e8e8e, 0xff8d8d8d, 0x208f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x8f8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8e8e8e, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8e8e8e, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8e8e8e, 0xff8d8d8d, 0xff8c8c8c, 0xff8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8d8d8d, 0xff8d8d8d, 0xfe8d8d8d, 0x9f8f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0x108f8f8f, 0xef8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xfe8c8c8c, 0xff8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xfe8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8d8d8d, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xdf8d8d8d, 0x20878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x708b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xfe8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xfe8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0xff8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8c8c8c, 0xfe8c8c8c, 0xff8c8c8c, 0xfe8c8c8c, 0xff8b8b8b, 0x5f8c8c8c, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x908a8a8a, 0xfe8b8b8b, 0xfe8c8c8c, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8c8c8c, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xfe8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8a8a8a, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xfe8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0xfe8c8c8c, 0xff8b8b8b, 0xff8b8b8b, 0xff8b8b8b, 0x908a8a8a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xbf8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xfe8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xfe8b8b8b, 0xff8b8b8b, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8b8b8b, 0xfe8a8a8a, 0xfe8b8b8b, 0xff8a8a8a, 0xfe8b8b8b, 0xcf8a8a8a, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x108f8f8f, 0xcf898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xfe8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xfe8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff898989, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xfe8a8a8a, 0xff898989, 0xff898989, 0xff8a8a8a, 0xff898989, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff8a8a8a, 0xff898989, 0xfe8a8a8a, 0xff8a8a8a, 0xbf8a8a8a, 0x108f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x90888888, 0xfe898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xff898989, 0xfe898989, 0xff888888, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xfe898989, 0xff888888, 0xfe898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xfe898989, 0xff898989, 0xff888888, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xfe898989, 0xfe898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xfe898989, 0xff898989, 0xfe8a8a8a, 0xfe898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff888888, 0xff888888, 0xff888888, 0xff898989, 0xff888888, 0xfe898989, 0xff888888, 0xfe898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff888888, 0xff898989, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xff888888, 0xfe898989, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0xfe898989, 0xff898989, 0xff898989, 0xff898989, 0xff898989, 0xff888888, 0xff898989, 0x90878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x60878787, 0xdf888888, 0xff888888, 0xff888888, 0xfe888888, 0xfe898989, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xfe888888, 0xff888888, 0xff878787, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff878787, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff878787, 0xff888888, 0xff888888, 0xfe898989, 0xfe888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff898989, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe888888, 0xff888888, 0xff878787, 0xff878787, 0xfe888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xff888888, 0xff888888, 0xfe898989, 0xff888888, 0xfe898989, 0xff888888, 0xfe898989, 0xff888888, 0xef898989, 0x70868686, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20878787, 0xa0878787, 0xfe878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff888888, 0xff888888, 0xff878787, 0xff878787, 0xff878787, 0xff888888, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff888888, 0xff878787, 0xff888888, 0xff878787, 0xfe878787, 0xff878787, 0xfe888888, 0xfe878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff888888, 0xff878787, 0xfe888888, 0xfe888888, 0xff878787, 0xfe878787, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xfe888888, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xfe878787, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xfe878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xfe888888, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0xff878787, 0xfe888888, 0xff878787, 0x90878787, 0x108f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x20808080, 0x9f878787, 0xdf878787, 0xff878787, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xfe878787, 0xfe878787, 0xff868686, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff878787, 0xff878787, 0xff868686, 0xfe878787, 0xff868686, 0xfe878787, 0xff878787, 0xfe878787, 0xff878787, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff868686, 0xfe878787, 0xff868686, 0xff878787, 0xff878787, 0xff878787, 0xfe878787, 0xfe878787, 0xfe878787, 0xff868686, 0xff878787, 0xfe878787, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xff878787, 0xfe878787, 0xfe878787, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff878787, 0xff878787, 0xfe878787, 0xff878787, 0xff878787, 0xfe878787, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xff878787, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xfe878787, 0xfe878787, 0xff878787, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xfe878787, 0xff878787, 0xff868686, 0xff878787, 0xff868686, 0xff868686, 0xff868686, 0xff878787, 0xff868686, 0xff878787, 0xef888888, 0x80878787, 0x108f8f8f, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x40878787, 0x80858585, 0xaf888888, 0xcf868686, 0xef868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff858585, 0xfe868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xff868686, 0xfe868686, 0xff868686, 0xff858585, 0xff868686, 0xfe868686, 0xff858585, 0xff868686, 0xfe868686, 0xfe868686, 0xfe868686, 0xff868686, 0xff868686, 0xfe868686, 0xff868686, 0xff868686, 0xfe868686, 0xfe868686, 0xfe878787, 0xff868686, 0xfe868686, 0xfe878787, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff858585, 0xff858585, 0xfe868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xfe868686, 0xfe868686, 0xff858585, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xfe868686, 0xfe878787, 0xff868686, 0xff868686, 0xfe868686, 0xff868686, 0xff868686, 0xfe868686, 0xff858585, 0xfe868686, 0xff868686, 0xff868686, 0xff868686, 0xfe878787, 0xff868686, 0xff868686, 0xfe878787, 0xff858585, 0xff868686, 0xff858585, 0xff858585, 0xfe868686, 0xff858585, 0xff858585, 0xff868686, 0xff868686, 0xfe868686, 0xff868686, 0xfe868686, 0xff868686, 0xff868686, 0xfe868686, 0xff858585, 0xff868686, 0xfe868686, 0xff858585, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff868686, 0xff858585, 0xff868686, 0xff868686, 0xff858585, 0xff868686, 0xef888888, 0xdf878787, 0xaf868686, 0x70868686, 0x40878787, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF +}; diff --git a/Private/NewBoot/Source/BootloaderRsrc.rsrc b/Private/NewBoot/Source/BootloaderRsrc.rsrc index f77a4079..e8d89e9a 100644 --- a/Private/NewBoot/Source/BootloaderRsrc.rsrc +++ b/Private/NewBoot/Source/BootloaderRsrc.rsrc @@ -1,6 +1,6 @@ #include "../../CompilerKit/Version.hxx" -1 ICON "../../Root/Boot/boot-logo.ico" +1 ICON "../../Root/Boot/Icons/boot-logo.ico" 1 VERSIONINFO FILEVERSION 1,0,0,0 @@ -11,7 +11,7 @@ BEGIN BLOCK "080904E4" BEGIN VALUE "CompanyName", "Mahrouss-Logic" - VALUE "FileDescription", "NewOS multi-platform bootloader." + VALUE "FileDescription", "New OS multi-platform bootloader." VALUE "FileVersion", BOOTLOADER_VERSION VALUE "InternalName", "NewBoot" VALUE "LegalCopyright", "Copyright Mahrouss-Logic, all rights reserved." diff --git a/Private/NewBoot/Source/CDROM/.NEWDEV b/Private/NewBoot/Source/CDROM/.NEWDEV deleted file mode 100644 index d5d2badf..00000000 --- a/Private/NewBoot/Source/CDROM/.NEWDEV +++ /dev/null @@ -1,2 +0,0 @@ -[POWER_MANAGEMENT] -ENFORCE_ACPI=YES
\ No newline at end of file diff --git a/Private/NewBoot/Source/CDROM/SplashScreen.fmt b/Private/NewBoot/Source/CDROM/SplashScreen.fmt new file mode 100644 index 00000000..e47a66a6 --- /dev/null +++ b/Private/NewBoot/Source/CDROM/SplashScreen.fmt @@ -0,0 +1,6 @@ +Welcome to NeWS + +Brought to you by: +* MicroKernel, Bootloader: Amlal EL Mahrouss. + +Copyright Mahrouss-Logic, all rights reserved. diff --git a/Private/NewBoot/Source/HEL/AMD64/BootATA.cxx b/Private/NewBoot/Source/HEL/AMD64/BootATA.cxx index 2a2852fb..4e41ba2e 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootATA.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootATA.cxx @@ -72,7 +72,7 @@ ATAInit_Retry: if (statRdy & ATA_SR_ERR) { writer.Write( - L"NewOS: ATA: Select error, not an IDE based hard-drive.\r\n"); + L"New Boot: ATA: Select error, not an IDE based hard-drive.\r\n"); return false; } @@ -108,21 +108,21 @@ ATAInit_Retry: /* differentiate ATA, ATAPI, SATA and SATAPI */ if (cl == 0x14 && ch == 0xEB) { - writer.Write(L"NewOS: PATAPI drive detected.\r\n"); + writer.Write(L"New Boot: PATAPI drive detected.\r\n"); kATADeviceType = kATADevicePATA_PI; } if (cl == 0x69 && ch == 0x96) { - writer.Write(L"NewOS: SATAPI drive detected.\r\n"); + writer.Write(L"New Boot: SATAPI drive detected.\r\n"); kATADeviceType = kATADeviceSATA_PI; } if (cl == 0x0 && ch == 0x0) { - writer.Write(L"NewOS: PATA drive detected.\r\n"); + writer.Write(L"New Boot: PATA drive detected.\r\n"); kATADeviceType = kATADevicePATA; } if (cl == 0x3c && ch == 0xc3) { - writer.Write(L"NewOS: SATA drive detected.\r\n"); + writer.Write(L"New Boot: SATA drive detected.\r\n"); kATADeviceType = kATADeviceSATA; } @@ -159,7 +159,7 @@ Void boot_ata_read(UInt64 Lba, UInt16 IO, UInt8 Master, CharacterTypeUTF8* Buf, ++IndexOff; while ((In8(ATA_COMMAND(IO))) & ATA_SR_BSY) boot_ata_wait_io(IO); - + byte = In16(IO + ATA_REG_DATA); Buf[IndexOff] = byte; } @@ -213,7 +213,7 @@ BootDeviceATA::BootDeviceATA() noexcept { BTextWriter writer; - writer.Write(L"NewOS: Drive is OnLine.\r\n"); + writer.Write(L"New Boot: Drive is OnLine.\r\n"); } } /** diff --git a/Private/NewBoot/Source/HEL/AMD64/BootEPM.cxx b/Private/NewBoot/Source/HEL/AMD64/BootEPM.cxx deleted file mode 100644 index 0d678dc1..00000000 --- a/Private/NewBoot/Source/HEL/AMD64/BootEPM.cxx +++ /dev/null @@ -1,119 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -#include <BootKit/BootKit.hxx> -#include <FSKit/NewFS.hxx> - -#define kEPMSectorSize kATASectorSize -#define kEPMSwapSize MIB(16) -#define kEPMGPTStartLba (30) - -// {310E1FC7-2060-425D-BE7B-75A37CC679BC} -STATIC const BlockGUID kEPMGuid = { - 0x310e1fc7, - 0x2060, - 0x425d, - {0xbe, 0x7b, 0x75, 0xa3, 0x7c, 0xc6, 0x79, 0xbc}}; - -/// @brief Write epm partition to disk. -/// @param namePart partition name -/// @param namePartLength length of name -/// @param bootDev disk interface. -/// @return -EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLength, - BootDevice* bootDev) { - if (namePartLength > kEPMNameLength || !namePart) return No; - if (!bootDev) return No; - - bootDev->Leak().mBase = kEPMGPTStartLba; - bootDev->Leak().mSize = kEPMSectorSize; - - Char buf[kEPMSectorSize] = {0}; - - bootDev->Read(buf, 1); - - BTextWriter writer; - - writer.Write(L"NewOS: Checking for a EPM partition...\r\n"); - - for (SizeT index = 0; index < kEPMMagicLength; ++index) { - if (buf[index] != kEPMMagic[index]) { - writer.Write(L"NewOS: Writing a EPM partition...\r\n"); - - BootBlockType* bootBlock = (BootBlockType*)buf; - - bootBlock->Version = kEPMRevision; - bootBlock->NumBlocks = 2; - - for (SizeT i = 0; i < kEPMNameLength; ++i) { - bootBlock->Magic[i] = kEPMMagic[i]; - } - - for (SizeT i = 0; i < namePartLength; ++i) { - bootBlock->Name[i] = namePart[i]; - } - - bootBlock->LbaStart = - sizeof(BootBlockType) + (sizeof(PartitionBlockType) * kEPMMaxBlks); - - bootBlock->SectorSz = kEPMSectorSize; - - bootBlock->Uuid = kEPMGuid; - - PartitionBlock* partBlock = (PartitionBlock*)(buf + sizeof(BootBlock)); - - const char* fsName = "NewFS"; - int fsNameLength = 6; - - for (SizeT i = 0; i < fsNameLength; ++i) { - partBlock->Fs[i] = fsName[i]; - } - - partBlock->Version = kEPMNewOS; - - const char* partNameSystem = "System HD"; - int partNameLength = 10; - - for (SizeT i = 0; i < partNameLength; ++i) { - partBlock->Name[i] = partNameSystem[i]; - } - - partBlock->SectorSz = kEPMSectorSize; - partBlock->LbaStart = kEPMStartPartitionBlk + kEPMSwapSize; - partBlock->Version = kNewFSVersionInteger; - partBlock->Kind = kNewFSPartitionTypeStandard; - partBlock->LbaEnd = 0UL; ///! grows on the disk. - - PartitionBlock* swapBlock = (PartitionBlock*)(buf + sizeof(BootBlock) + sizeof(PartitionBlock)); - - for (SizeT i = 0; i < fsNameLength; ++i) { - swapBlock->Fs[i] = fsName[i]; - } - - swapBlock->Version = kEPMNewOS; - - const char *partNameSwap = "Swap HD"; - partNameLength = 8; - - for (SizeT i = 0; i < partNameLength; ++i) { - swapBlock->Name[i] = partNameSwap[i]; - } - - swapBlock->SectorSz = kEPMSectorSize; - swapBlock->LbaStart = kEPMStartPartitionBlk; - swapBlock->Version = kNewFSVersionInteger; - swapBlock->Kind = kNewFSPartitionTypePage; - swapBlock->LbaEnd = kEPMSwapSize; /// 4 MIB swap partition. - - bootDev->Write(buf, 1); - - return No; - } - } - - writer.Write(L"NewOS: Partition found, everything's OK.\r\n"); - return Yes; -}
\ No newline at end of file diff --git a/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx b/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx index b31f37de..3a445d61 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootFileReader.cxx @@ -3,7 +3,7 @@ Copyright Mahrouss Logic File: FileReader.cxx - Purpose: NewBoot FileReader, + Purpose: New Boot FileReader, Read complete file and store it in a buffer. ------------------------------------------- */ @@ -25,7 +25,8 @@ /*** @brief File Reader constructor. */ -BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiHandlePtr ImageHandle) { +BFileReader::BFileReader(const CharacterTypeUTF16* path, + EfiHandlePtr ImageHandle) { if (path != nullptr) { SizeT index = 0UL; for (; path[index] != L'\0'; ++index) { @@ -46,12 +47,12 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiHandlePtr ImageHandl EfiGUID guidImg = EfiGUID(EFI_LOADED_IMAGE_PROTOCOL_GUID); if (BS->HandleProtocol(ImageHandle, &guidImg, (void**)&img) != kEfiOk) { - mWriter.Write(L"NewOS: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); + mWriter.Write(L"New Boot: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); this->mErrorCode = kNotSupported; } if (BS->HandleProtocol(img->DeviceHandle, &guidEfp, (void**)&efp) != kEfiOk) { - mWriter.Write(L"NewOS: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); + mWriter.Write(L"New Boot: Fetch-Protocol: No-Such-Protocol").Write(L"\r\n"); this->mErrorCode = kNotSupported; return; } @@ -59,7 +60,7 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiHandlePtr ImageHandl /// Start doing disk I/O if (efp->OpenVolume(efp, &rootFs) != kEfiOk) { - mWriter.Write(L"NewOS: Fetch-Protocol: No-Such-Volume").Write(L"\r\n"); + mWriter.Write(L"New Boot: Fetch-Protocol: No-Such-Volume").Write(L"\r\n"); this->mErrorCode = kNotSupported; return; } @@ -68,7 +69,7 @@ BFileReader::BFileReader(const CharacterTypeUTF16* path, EfiHandlePtr ImageHandl if (rootFs->Open(rootFs, &kernelFile, mPath, kEFIFileRead, kEFIReadOnly) != kEfiOk) { - mWriter.Write(L"NewOS: Fetch-Protocol: No-Such-Path: ") + mWriter.Write(L"New Boot: Fetch-Protocol: No-Such-Path: ") .Write(mPath) .Write(L"\r\n"); this->mErrorCode = kNotSupported; @@ -88,24 +89,19 @@ BFileReader::~BFileReader() { this->mFile = nullptr; } - if (this->mBlob) - BS->FreePool(mBlob); + if (this->mBlob) BS->FreePool(mBlob); BSetMem(this->mPath, 0, kPathLen); } /** @brief this reads all of the buffer. - @param ImageHandle used internally. + @param until read until size is reached. */ -Void BFileReader::ReadAll() { - /// Allocate Handover page. - - if (this->mErrorCode != kOperationOkay) return; - +Void BFileReader::ReadAll(SizeT until, SizeT chunk) { if (mBlob == nullptr) { - if (auto err = BS->AllocatePool(EfiLoaderCode, mSizeFile, - (VoidPtr*)&mBlob) != kEfiOk) { + if (auto err = BS->AllocatePool(EfiLoaderCode, until, + (VoidPtr*)&mBlob) != kEfiOk) { mWriter.Write(L"*** EFI-Code: ").Write(err).Write(L" ***\r\n"); EFI::RaiseHardError(L"NewBoot_PageError", L"Allocation error."); } @@ -113,8 +109,34 @@ Void BFileReader::ReadAll() { mErrorCode = kNotSupported; - if (mFile->Read(mFile, &mSizeFile, (VoidPtr)((UIntPtr)mBlob)) != kEfiOk) - return; + UInt64 bufSize = chunk; + UInt64 szCnt = 0; + UInt64 curSz = 0; + + while (curSz < until) { + if (mFile->Read(mFile, &bufSize, (VoidPtr)((UIntPtr)mBlob + curSz)) != kEfiOk) { + break; + } + + szCnt += bufSize; + curSz += bufSize; + if (bufSize == 0) + break; + } + + mSizeFile = curSz; mErrorCode = kOperationOkay; } + +/// @brief error code getter. +/// @return the error code. +Int32& BFileReader::Error() { return mErrorCode; } + +/// @brief blob getter. +/// @return the blob. +VoidPtr BFileReader::Blob(){ return mBlob; } + +/// @breif Size getter. +/// @return the size of the file. +UInt64& BFileReader::Size() { return mSizeFile; } diff --git a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx index f5bb3ce8..638fe37a 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootMain.cxx @@ -5,52 +5,61 @@ ------------------------------------------- */ #include <BootKit/BootKit.hxx> +#include <BootKit/Rsrc/Driver.rsrc> +#include <Builtins/Toolbox/Toolbox.hxx> #include <KernelKit/MSDOS.hpp> #include <KernelKit/PE.hxx> #include <NewKit/Ref.hpp> -#ifdef __x86_64__ -#include <HALKit/AMD64/HalPageAlloc.hpp> -#else -#error This CPU is unknown. -#endif // ifdef __x86_64__ +/** Graphics related. */ -#define kMaxBufSize 256 +STATIC EfiGraphicsOutputProtocol* kGop = nullptr; +STATIC UInt16 kStride = 0U; +STATIC EfiGUID kGopGuid; -/// @brief Bootloader main type. -typedef void (*bt_main_type)(HEL::HandoverInformationHeader* handoverInfo); +/** + @brief Finds and stores the GOP. +*/ + +STATIC Void CheckAndFindFramebuffer() noexcept { + kGopGuid = EfiGUID(EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID); + kGop = nullptr; + + extern EfiBootServices* BS; + + BS->LocateProtocol(&kGopGuid, nullptr, (VoidPtr*)&kGop); + + kStride = 4; +} + +/// @brief check the BootDevice if suitable. +STATIC Bool CheckBootDevice(BootDeviceATA& ataDev) { + if (ataDev.Leak().mErr) return false; + return true; +} /// @brief Main EFI entrypoint. /// @param ImageHandle Handle of this image. /// @param SystemTable The system table of it. /// @return -EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, - EfiSystemTable* SystemTable) { - InitEFI(SystemTable); // Init the EFI library. - InitGOP(); // Init the GOP. +EFI_EXTERN_C EFI_API Int Main(EfiHandlePtr ImageHandle, + EfiSystemTable* SystemTable) { + InitEFI(SystemTable); ///! Init the EFI library. + CheckAndFindFramebuffer(); ///! Init the GOP. BTextWriter writer; + /// Splash screen stuff - writer.Write(L"Mahrouss-Logic (R) NewOS: ").Write(BVersionString::Shared()); + writer.Write(L"Mahrouss-Logic (R) New Boot: ") + .Write(BVersionString::Shared()); - writer.Write(L"\r\nNewOS: Firmware Vendor: ") + writer.Write(L"\r\nNewBoot: Firmware Vendor: ") .Write(SystemTable->FirmwareVendor) .Write(L"\r\n"); BootDeviceATA ataDev; - Boolean isEpmFound = No; - - /// if ATA drive is initialized and EFI vendor supports an EPM scheme. - /// @EDK tells our OS that it supports EPM scheme as well. - if (ataDev) { - Char namePart[kEPMNameLength] = {"NewBoot"}; - /// tries to read an EPM block, or writes one if it fails. - isEpmFound = boot_write_epm_partition(namePart, kEPMNameLength, &ataDev); - } else { - writer.Write(L"NewOS: This computer can't work with NewOS.\r\n"); - return kEfiFail; - } + Boolean isGptFound = No; UInt32 MapKey = 0; UInt32* SizePtr = nullptr; @@ -60,7 +69,7 @@ EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, if (BS->AllocatePool(EfiLoaderData, sizeof(UInt32), (VoidPtr*)&SizePtr) != kEfiOk) { - EFI::RaiseHardError(L"__bad_alloc", L"NewBoot ran out of memory!"); + EFI::RaiseHardError(L"Bad-Alloc", L"New Boot ran out of memory!"); } /**** @@ -73,23 +82,31 @@ EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, if (BS->AllocatePool(EfiLoaderData, sizeof(EfiMemoryDescriptor), (VoidPtr*)&Descriptor) != kEfiOk) { - EFI::RaiseHardError(L"__bad_alloc", L"NewBoot ran out of memory!"); + EFI::RaiseHardError(L"Bad-Alloc", L"New Boot ran out of memory!"); } - /**** - * - * Get machine memory map. - * - */ + HEL::HandoverInformationHeader* handoverHdrPtr = nullptr; - while (BS->GetMemoryMap(SizePtr, Descriptor, &MapKey, &SzDesc, &RevDesc) != - kEfiOk) - ; + for (SizeT indexVT = 0; indexVT < SystemTable->NumberOfTableEntries; + ++indexVT) { + volatile Char* vendorTable = reinterpret_cast<volatile Char*>( + SystemTable->ConfigurationTable[indexVT].VendorTable); - HEL::HandoverInformationHeader* handoverHdrPtr = nullptr; + if (vendorTable[0] == 'R' && vendorTable[1] == 'S' && + vendorTable[2] == 'D' && vendorTable[3] == ' ' && + vendorTable[4] == 'P' && vendorTable[5] == 'T' && + vendorTable[6] == 'R' && vendorTable[7] == ' ') { + handoverHdrPtr->f_HardwareTables.f_RsdPtr = (VoidPtr)vendorTable; - BS->AllocatePool(EfiLoaderData, sizeof(HEL::HandoverInformationHeader), - (VoidPtr*)&handoverHdrPtr); + break; + } + } + + handoverHdrPtr->f_Magic = kHandoverMagic; + handoverHdrPtr->f_Version = kHandoverVersion; + + BCopyMem(handoverHdrPtr->f_FirmwareVendorName, SystemTable->FirmwareVendor, + handoverHdrPtr->f_FirmwareVendorLen); handoverHdrPtr->f_GOP.f_The = kGop->Mode->FrameBufferBase; handoverHdrPtr->f_GOP.f_Width = kGop->Mode->Info->VerticalResolution; @@ -98,58 +115,77 @@ EFI_EXTERN_C EFI_API Int EfiMain(EfiHandlePtr ImageHandle, handoverHdrPtr->f_GOP.f_PixelFormat = kGop->Mode->Info->PixelFormat; handoverHdrPtr->f_GOP.f_Size = kGop->Mode->FrameBufferSize; - handoverHdrPtr->f_PhysicalStart = - reinterpret_cast<voidPtr>(Descriptor->PhysicalStart); - handoverHdrPtr->f_PhysicalSize = Descriptor->NumberOfPages; + ///! Finally draw bootloader screen. - handoverHdrPtr->f_VirtualStart = - reinterpret_cast<voidPtr>(Descriptor->VirtualStart); + auto kHandoverHeader = handoverHdrPtr; - handoverHdrPtr->f_VirtualSize = Descriptor->NumberOfPages; /* # of pages */ + ToolboxInitRsrc(); - handoverHdrPtr->f_FirmwareVendorLen = BStrLen(SystemTable->FirmwareVendor); + ToolboxDrawZone(RGB(FF, FF, FF), handoverHdrPtr->f_GOP.f_Height, + handoverHdrPtr->f_GOP.f_Width, 0, 0); - BCopyMem(handoverHdrPtr->f_FirmwareVendorName, SystemTable->FirmwareVendor, - handoverHdrPtr->f_FirmwareVendorLen); + ToolboxClearRsrc(); -#ifdef __DEBUG__ - writer.Write(L"NewOS: Fetching ACPI's 'RSD PTR'...").Write(L"\r\n"); -#endif + ToolboxDrawRsrc(Driver, DRIVER_HEIGHT, DRIVER_WIDTH, + (handoverHdrPtr->f_GOP.f_Width - DRIVER_HEIGHT) / 2, + (handoverHdrPtr->f_GOP.f_Height - DRIVER_HEIGHT) / 2); - for (SizeT indexVT = 0; indexVT < SystemTable->NumberOfTableEntries; - ++indexVT) { - volatile Char* vendorTable = reinterpret_cast<volatile Char*>( - SystemTable->ConfigurationTable[indexVT].VendorTable); + ToolboxClearRsrc(); - if (vendorTable[0] == 'R' && vendorTable[1] == 'S' && - vendorTable[2] == 'D' && vendorTable[3] == ' ' && - vendorTable[4] == 'P' && vendorTable[5] == 'T' && - vendorTable[6] == 'R' && vendorTable[7] == ' ') { - handoverHdrPtr->f_HardwareTables.f_RsdPtr = (VoidPtr)vendorTable; + BS->AllocatePool(EfiLoaderData, sizeof(HEL::HandoverInformationHeader), + (VoidPtr*)&handoverHdrPtr); -#ifdef __DEBUG__ - writer.Write(L"NewOS: Found ACPI's 'RSD PTR' table on this machine.") - .Write(L"\r\n"); -#endif + handoverHdrPtr->f_PhysicalStart = 0; + handoverHdrPtr->f_PhysicalSize = 0; - break; - } + EfiPhysicalAddress* whereAddress = + reinterpret_cast<EfiPhysicalAddress*>(kBootVirtualAddress); + + BS->AllocatePages(EfiAllocateType::AllocateAnyPages, + EfiMemoryType::EfiConventionalMemory, 1, whereAddress); + + handoverHdrPtr->f_VirtualStart = reinterpret_cast<voidPtr>(whereAddress); + + handoverHdrPtr->f_VirtualSize = Descriptor->NumberOfPages; /* # of pages */ + + handoverHdrPtr->f_FirmwareVendorLen = BStrLen(SystemTable->FirmwareVendor); + + BFileReader reader(L"SplashScreen.fmt", ImageHandle); + reader.ReadAll(512, 16); + + Char* buf = (Char*)reader.Blob(); + + for (SizeT i = 0; i < reader.Size(); ++i) { + if (buf[i] != '\n' && buf[i] != '\r') { + if (buf[i] == '*') { + writer.WriteCharacter('\t'); + } else { + writer.WriteCharacter(buf[i]); + } + } else + writer.Write(L"\r\n"); } - if (!isEpmFound) { - writer.Write(L"NewOS: No partition found for NewOS. (HCR-1000)\r\n"); + BFileReader kernelFile(L"NewKernel.exe", ImageHandle); + kernelFile.ReadAll(KIB(512), 4096); + + ExecOptionalHeaderPtr headerKind = (ExecOptionalHeaderPtr)rt_find_exec_header((DosHeaderPtr)kernelFile.Blob()); + + if (!headerKind) { + EFI::RaiseHardError(L"Bad-Exec", L"New Boot can't recognize this executable."); } - handoverHdrPtr->f_Magic = kHandoverMagic; - handoverHdrPtr->f_Version = kHandoverVersion; + BootMainKind main = (BootMainKind)nullptr; - writer.Write(L"Running NewOS...\r\n"); + if (!main) { + EFI::RaiseHardError(L"Bad-Exec", L"New Boot can't recognize this executable."); + } EFI::ExitBootServices(MapKey, ImageHandle); - /// TODO: Read catalog and read NewKernel.exe + main(handoverHdrPtr); EFI::Stop(); - return kEfiFail; + CANT_REACH(); } diff --git a/Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx b/Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx index 00f7bdd8..d0da09b7 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootPlatform.cxx @@ -15,3 +15,36 @@ EXTERN_C void rt_sti() { asm volatile("sti"); } EXTERN_C void rt_cld() { asm volatile("cld"); } EXTERN_C void rt_std() { asm volatile("std"); } + +EXTERN_C void Out8(UInt16 port, UInt8 value) { + asm volatile("outb %%al, %1" : : "a"(value), "Nd"(port) : "memory"); +} + +EXTERN_C void Out16(UInt16 port, UInt16 value) { + asm volatile("outw %%ax, %1" : : "a"(value), "Nd"(port) : "memory"); +} + +EXTERN_C void Out32(UInt16 port, UInt32 value) { + asm volatile("outl %%eax, %1" : : "a"(value), "Nd"(port) : "memory"); +} + +EXTERN_C UInt8 In8(UInt16 port) { + UInt8 value; + asm volatile("inb %1, %%al" : "=a"(value) : "Nd"(port) : "memory"); + + return value; +} + +EXTERN_C UInt16 In16(UInt16 port) { + UInt16 value; + asm volatile("inw %%dx, %%ax" : "=a"(value) : "d"(port)); + + return value; +} + +EXTERN_C UInt32 In32(UInt16 port) { + UInt32 value; + asm volatile("inl %1, %%eax" : "=a"(value) : "Nd"(port) : "memory"); + + return value; +} diff --git a/Private/NewBoot/Source/HEL/AMD64/BootTextWriter.cxx b/Private/NewBoot/Source/HEL/AMD64/BootTextWriter.cxx index 7ccc37aa..2ebde023 100644 --- a/Private/NewBoot/Source/HEL/AMD64/BootTextWriter.cxx +++ b/Private/NewBoot/Source/HEL/AMD64/BootTextWriter.cxx @@ -21,23 +21,27 @@ @brief puts wrapper over EFI ConOut. */ BTextWriter &BTextWriter::Write(const CharacterTypeUTF16 *str) { - if (*str == 0 || !str) return *this; +#ifdef __DEBUG__ + if (!str || *str == 0) return *this; ST->ConOut->OutputString(ST->ConOut, str); +#endif // ifdef __DEBUG__ return *this; } BTextWriter &BTextWriter::Write(const UChar *str) { - if (*str == 0 || !str) return *this; +#ifdef __DEBUG__ + if (!str || *str == 0) return *this; CharacterTypeUTF16 strTmp[2]; strTmp[1] = 0; - + for (size_t i = 0; str[i] != 0; i++) { strTmp[0] = str[i]; ST->ConOut->OutputString(ST->ConOut, strTmp); } +#endif // ifdef __DEBUG__ return *this; } @@ -46,22 +50,29 @@ BTextWriter &BTextWriter::Write(const UChar *str) { @brief putc wrapper over EFI ConOut. */ BTextWriter &BTextWriter::WriteCharacter(CharacterTypeUTF16 c) { +#ifdef __DEBUG__ EfiCharType str[2]; + str[0] = c; str[1] = 0; ST->ConOut->OutputString(ST->ConOut, str); +#endif // ifdef __DEBUG__ return *this; } BTextWriter &BTextWriter::Write(const Long &x) { +#ifdef __DEBUG__ this->Write(L"0x"); this->_Write(x); +#endif // ifdef __DEBUG__ + return *this; } BTextWriter &BTextWriter::_Write(const Long &x) { +#ifdef __DEBUG__ int y = x / 16; int h = x % 16; @@ -78,5 +89,7 @@ BTextWriter &BTextWriter::_Write(const Long &x) { const char NUMBERS[17] = "0123456789ABCDEF"; this->WriteCharacter(NUMBERS[h]); +#endif // ifdef __DEBUG__ + return *this; } diff --git a/Private/Servers/.gitkeep b/Private/NewBoot/Source/HEL/POWER/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/Servers/.gitkeep +++ b/Private/NewBoot/Source/HEL/POWER/.gitkeep diff --git a/Private/NewBoot/Source/HEL/POWER/BootCoreBoot.S b/Private/NewBoot/Source/HEL/POWER/BootCoreBoot.S new file mode 100644 index 00000000..c611467d --- /dev/null +++ b/Private/NewBoot/Source/HEL/POWER/BootCoreBoot.S @@ -0,0 +1,34 @@ +/* ------------------------------------------- + + Copyright Mahrouss Logic + +------------------------------------------- */ + +.section .boot_hdr +.align 4 + +/* NewBoot boot header begin */ + +boot_hdr_mag: + .ascii "LX" +boot_hdr_name: + // it has to match ten bytes. + .asciz "NewBoot\0\0\0" +boot_hdr_ver: + .word 0x104 +boot_hdr_proc: + .long bootloader_start + +/* NewOS boot header end */ + +.extern bootloader_main +.extern bootloader_stack + +.globl bootloader_start +bootloader_start: + mflr 4 /* real address of .Laddr */ + lwz 0,(bootloader_stack-bootloader_start)(4) /* stack address location */ + mr 1,0 /* use user defined stack */ + + bl bootloader_main + blr diff --git a/Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx b/Private/NewBoot/Source/HEL/POWER/BootEPM.cxx index f088d73c..72276ef9 100644 --- a/Private/NewBoot/Source/HEL/PowerPC/BootEPM.cxx +++ b/Private/NewBoot/Source/HEL/POWER/BootEPM.cxx @@ -21,7 +21,7 @@ STATIC const BlockGUID kEPMGuid = { /// @param namePart partition name /// @param namePartLength length of name /// @param bootDev disk interface. -/// @return +/// @return EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLength, BootDevice* bootDev) { if (namePartLength > kEPMNameLength || !namePart) return No; @@ -36,11 +36,11 @@ EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLe BTextWriter writer; - writer.Write(L"NewOS: Checking for a EPM partition...\r\n"); + writer.Write(L"NewBoot: Checking for an EPM partition...\r\n"); for (SizeT index = 0; index < kEPMMagicLength; ++index) { if (buf[index] != kEPMMagic[index]) { - writer.Write(L"NewOS: Writing a EPM partition...\r\n"); + writer.Write(L"NewBoot: Writing an EPM partition...\r\n"); BootBlockType* bootBlock = (BootBlockType*)buf; @@ -113,6 +113,6 @@ EXTERN_C Boolean boot_write_epm_partition(const Char* namePart, SizeT namePartLe } } - writer.Write(L"NewOS: Partition found, everything's OK.\r\n"); + writer.Write(L"NewBoot: Partition found, everything's OK.\r\n"); return Yes; -}
\ No newline at end of file +} diff --git a/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S b/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S deleted file mode 100644 index 0b3cd493..00000000 --- a/Private/NewBoot/Source/HEL/PowerPC/BootPowerPC.S +++ /dev/null @@ -1,22 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - -------------------------------------------- */ - -.section .init -.align 4 - -/* NewOS kernel header begin */ - -boot_hdr_mag: - .ascii "LX" -boot_hdr_name: - // it has to match ten bytes. - .asciz "NewBoot\0\0\0" -boot_hdr_ver: - .word 0x104 -boot_hdr_proc: - .long bootloader_start - -/* NewOS kernel header end */
\ No newline at end of file diff --git a/Private/NewBoot/Source/makefile b/Private/NewBoot/Source/makefile index 4016e3a8..197eb91b 100644 --- a/Private/NewBoot/Source/makefile +++ b/Private/NewBoot/Source/makefile @@ -1,5 +1,5 @@ ################################################## -# (C) Mahrouss Logic, all rights reserved. +# (C) Mahrouss Logic, all rights reserved. # This is the bootloader makefile. ################################################## @@ -20,12 +20,11 @@ endif IMG=epm.img IMG_2=epm-slave.img -EMU_FLAGS=-net none -smp 4 -m 4G -M q35 -bios OVMF.fd -device piix3-ide,id=ide -drive id=disk,file=$(IMG),format=raw,if=none -device ide-hd,drive=disk,bus=ide.0 -drive file=fat:rw:CDROM,index=2,format=raw -d int -hdd epm-slave.img +EMU_FLAGS=-net none -smp 4 -m 8G -M q35 -bios OVMF.fd -device piix3-ide,id=ide -drive id=disk,file=$(IMG),format=raw,if=none -device ide-hd,drive=disk,bus=ide.0 -drive file=fat:rw:CDROM,index=2,format=raw -d int -hdd epm-slave.img -LD_FLAGS=-e efi_main --subsystem=10 - -OBJ=$(wildcard *.o) $(wildcard HEL/AMD64/*.obj) +LD_FLAGS=-e Main --subsystem=10 +OBJ=*.o REM=rm REM_FLAG=-f @@ -35,14 +34,25 @@ FLAG_GNU=-fshort-wchar -D__EFI_x86_64__ -mgeneral-regs-only -mno-red-zone -D__KE .PHONY: invalid-recipe invalid-recipe: - @echo "invalid-recipe: Use make bootloader-<arch> all instead." + @echo "invalid-recipe: Use make bootloader-<arch> instead." + +KERNEL_OBJ=kernel.bin +DD=dd +IMG_CREATE=qemu-img +MAX_KERNEL_SIZE=1024K +BOOT_LOADER=NewBoot.exe +KERNEL=NewKernel.exe .PHONY: all all: compile-amd64 - $(LD_GNU) $(OBJ) $(LD_FLAGS) -o NewBoot.exe - $(COPY) NewBoot.exe CDROM/EFI/BOOT/BOOTX64.EFI - $(COPY) NewBoot.exe CDROM/EFI/BOOT/NEWBOOT.EFI - $(COPY) NewBoot.exe ../../Root/Boot/NewBoot.exe + mkdir -p CDROM/EFI/BOOT + $(LD_GNU) $(OBJ) $(LD_FLAGS) -o $(KERNEL_OBJ) + $(IMG_CREATE) create -f raw $(BOOT_LOADER) $(MAX_KERNEL_SIZE) + $(DD) if=$(KERNEL_OBJ) of=$(BOOT_LOADER) bs=1 seek=0 conv=notrunc + $(COPY) $(BOOT_LOADER) CDROM/EFI/BOOT/BOOTX64.EFI + $(COPY) $(BOOT_LOADER) CDROM/EFI/BOOT/NEWBOOT.EFI + $(COPY) $(BOOT_LOADER) ../../Root/Boot/$(BOOT_LOADER) + $(COPY) ../../$(KERNEL) CDROM/$(KERNEL) ifneq ($(DEBUG_SUPPORT), ) DEBUG = -D__DEBUG__ @@ -68,12 +78,13 @@ download-edk: .PHONY: clean clean: - $(REM) $(REM_FLAG) $(OBJ) NewBoot.exe NewKernel.exe OVMF.fd + $(REM) $(REM_FLAG) $(OBJ) NewBoot.exe NewKernel.exe OVMF.fd $(IMG) $(IMG_2) .PHONY: help help: @echo "=== HELP ===" - @echo "epm-img: Format a disk using the Explicit Partition Map/GPT." + @echo "epm-img: Format a disk using the Explicit Partition Map." + @echo "gpt-img: Format a disk using the Explicit Partition Map." @echo "clean: clean bootloader." @echo "bootloader-amd64: Build bootloader. (PC AMD64)" @echo "run-efi-amd64: Run bootloader. (PC AMD64)" diff --git a/Private/NewKit/Application.hxx b/Private/NewKit/Application.hxx index f19dbd97..15ffd073 100644 --- a/Private/NewKit/Application.hxx +++ b/Private/NewKit/Application.hxx @@ -7,7 +7,7 @@ #pragma once /// -/// @brief Main application object, given by the OS to interact with the OS. +/// @brief Application object, given by the OS to the process. interact with the OS. /// @file Application.hxx /// @author Amlal EL Mahrouss /// @@ -17,14 +17,14 @@ /// \brief Application Interface. /// \author Amlal El Mahrouss -typedef struct Application final { +typedef struct _Application final { /// @brief Releases the object exit the process on main object. - NewOS::Void(*Release)(struct Application* Self, NewOS::Int32 ExitCode); + NewOS::Void(*Release)(struct _Application* Self, NewOS::Int32 ExitCode); /// @brief Invoke a function from the application object. - NewOS::IntPtr(*Invoke)(struct Application* Self, NewOS::Int32 Sel, ...); + NewOS::IntPtr(*Invoke)(struct _Application* Self, NewOS::Int32 Sel, ...); /// @brief Query a new application object from a GUID. /// @note this doesn't query a process, it query a registered object withtin that app. - NewOS::Void(*Query)(struct Application* Self, NewOS::VoidPtr* Dst, NewOS::SizeT SzDst, NewOS::XRN::GUIDSequence GuidOf); + NewOS::Void(*Query)(struct _Application* Self, NewOS::VoidPtr* Dst, NewOS::SizeT SzDst, NewOS::XRN::GUIDSequence GuidOf); } Application, *ApplicationRef; #define app_cast reinterpret_cast<ApplicationRef> diff --git a/Private/Root/Boot/Icons/bonjour-logo.ico b/Private/Root/Boot/Icons/bonjour-logo.ico Binary files differnew file mode 100644 index 00000000..568de302 --- /dev/null +++ b/Private/Root/Boot/Icons/bonjour-logo.ico diff --git a/Private/Root/Boot/Icons/boot-logo.ico b/Private/Root/Boot/Icons/boot-logo.ico Binary files differnew file mode 100644 index 00000000..a7edcfe8 --- /dev/null +++ b/Private/Root/Boot/Icons/boot-logo.ico diff --git a/Private/Root/Boot/Icons/driver-logo.ico b/Private/Root/Boot/Icons/driver-logo.ico Binary files differnew file mode 100644 index 00000000..dbdcdee1 --- /dev/null +++ b/Private/Root/Boot/Icons/driver-logo.ico diff --git a/Private/Root/Boot/Icons/kernel-logo.ico b/Private/Root/Boot/Icons/kernel-logo.ico Binary files differnew file mode 100644 index 00000000..00724f48 --- /dev/null +++ b/Private/Root/Boot/Icons/kernel-logo.ico diff --git a/Private/Root/Boot/Icons/settings-icon.ico b/Private/Root/Boot/Icons/settings-icon.ico Binary files differnew file mode 100644 index 00000000..4fd36645 --- /dev/null +++ b/Private/Root/Boot/Icons/settings-icon.ico diff --git a/Private/Root/Boot/Icons/update-logo.ico b/Private/Root/Boot/Icons/update-logo.ico Binary files differnew file mode 100644 index 00000000..3423d76a --- /dev/null +++ b/Private/Root/Boot/Icons/update-logo.ico diff --git a/Private/Root/Boot/boot-logo.ico b/Private/Root/Boot/boot-logo.ico Binary files differdeleted file mode 100644 index a9c250ed..00000000 --- a/Private/Root/Boot/boot-logo.ico +++ /dev/null diff --git a/Private/Root/Boot/kernel-logo.ico b/Private/Root/Boot/kernel-logo.ico Binary files differdeleted file mode 100644 index d5ea0310..00000000 --- a/Private/Root/Boot/kernel-logo.ico +++ /dev/null diff --git a/Private/Servers/CoreDisplay/Headers/.gitkeep b/Private/Root/Users/Shared/.gitkeep index e69de29b..e69de29b 100644 --- a/Private/Servers/CoreDisplay/Headers/.gitkeep +++ b/Private/Root/Users/Shared/.gitkeep diff --git a/Private/Root/Users/User.script b/Private/Root/Users/User.script deleted file mode 100644 index 09cecb8b..00000000 --- a/Private/Root/Users/User.script +++ /dev/null @@ -1,3 +0,0 @@ -# User script - -Guest: true; diff --git a/Private/Servers/CoreDisplay/README.txt b/Private/Servers/CoreDisplay/README.txt deleted file mode 100644 index 669ec31c..00000000 --- a/Private/Servers/CoreDisplay/README.txt +++ /dev/null @@ -1,4 +0,0 @@ -CoreDisplay is the window manager of NewOS. -Written in C by Amlal EL Mahrouss. - -Unlike X it is not networked, but can be extend to with NetworkDisplay. diff --git a/Private/Servers/CoreDisplay/Sources/CDBitBlt.c b/Private/Servers/CoreDisplay/Sources/CDBitBlt.c deleted file mode 100644 index 91e5342f..00000000 --- a/Private/Servers/CoreDisplay/Sources/CDBitBlt.c +++ /dev/null @@ -1,11 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - - File: CDBitBlt.c - Purpose: Userbuffer to Framebuffer magic. - -------------------------------------------- */ - -#include <CDBitBlt.h> - diff --git a/Private/Servers/CoreDisplay/Sources/CDServerStartup.c b/Private/Servers/CoreDisplay/Sources/CDServerStartup.c deleted file mode 100644 index 7293b720..00000000 --- a/Private/Servers/CoreDisplay/Sources/CDServerStartup.c +++ /dev/null @@ -1,25 +0,0 @@ -/* ------------------------------------------- - - Copyright Mahrouss Logic - - File: CDServerStartup.c - Purpose: Server entrypoint. - -------------------------------------------- */ - -#include <CDServerStartup.h> -#include <IPC.h> - -/// @brief Called when the server starts. -int ServerStartup(void) -{ - return 0; -} - -/// @brief Called when the server shuts down. -int ServerShutdown(void) -{ - return 0; -} - -/// EOF. diff --git a/Private/Source/RuntimeMain.cxx b/Private/Source/AppMain.cxx index 5bbee3b2..87705393 100644 --- a/Private/Source/RuntimeMain.cxx +++ b/Private/Source/AppMain.cxx @@ -5,7 +5,6 @@ ------------------------------------------- */ #include <ArchKit/ArchKit.hpp> -#include <Builtins/Toolbox/Rsrc/Splash.rsrc> #include <Builtins/Toolbox/Toolbox.hxx> #include <FirmwareKit/Handover.hxx> #include <KernelKit/FileManager.hpp> @@ -18,15 +17,15 @@ /// @file Main microkernel entrypoint. -EXTERN_C void RuntimeMain(void) { +EXTERN_C NewOS::Void AppMain(NewOS::Void) { ///! Mounts a NewFS block. NewOS::NewFilesystemManager* newFS = new NewOS::NewFilesystemManager(); NewOS::ke_protect_ke_heap(newFS); NewOS::FilesystemManagerInterface::Mount(newFS); - + while (NewOS::ProcessScheduler::Shared().Leak().Run() > 0); ///! we're done, unmount. delete newFS; -}
\ No newline at end of file +} diff --git a/Private/Source/CxxAbi.cxx b/Private/Source/CxxAbi.cxx index d79d688c..452c4383 100644 --- a/Private/Source/CxxAbi.cxx +++ b/Private/Source/CxxAbi.cxx @@ -13,7 +13,7 @@ atexit_func_entry_t __atexit_funcs[kDSOMaxObjects]; uarch_t __atexit_func_count; extern "C" void __cxa_pure_virtual() { - NewOS::kcout << "NewOS: C++ placeholder method.\n"; + NewOS::kcout << "New OS: C++ placeholder method.\n"; } extern "C" void ___chkstk_ms() { diff --git a/Private/Source/FS/NewFS.cxx b/Private/Source/FS/NewFS.cxx index 1d7d3621..7eb79d10 100644 --- a/Private/Source/FS/NewFS.cxx +++ b/Private/Source/FS/NewFS.cxx @@ -7,13 +7,16 @@ #ifdef __FSKIT_NEWFS__ #include <FSKit/NewFS.hxx> +#include <KernelKit/HError.hpp> +#include <NewKit/Crc32.hpp> #include <NewKit/Utils.hpp> using namespace NewOS; -STATIC Lba ke_find_free_fork(SizeT sz); -STATIC Lba ke_find_free_catalog(SizeT sz); -STATIC Lba ke_find_free_data(SizeT sz); +/// forward decl. + +STATIC Lba ke_find_free_fork(SizeT sz, Int32 drv, NewCatalog* catalog); +STATIC Lba ke_find_free_catalog(SizeT kind, Int32 drv); STATIC MountpointInterface sMountpointInterface; @@ -26,7 +29,8 @@ _Output NewFork* NewFSParser::CreateFork(_Input NewCatalog* catalog, if (catalog && theFork.Name[0] != 0 && theFork.DataSize > 0) { Lba whereFork = 0; - theFork.DataOffset = ke_find_free_fork(theFork.DataSize); + theFork.DataOffset = + ke_find_free_fork(theFork.DataSize, this->fDriveIndex, catalog); theFork.Flags |= kNewFSFlagCreated; if (catalog->FirstFork == 0) { @@ -161,7 +165,55 @@ bool NewFSParser::Format(_Input _Output DriveTrait* drive) { return false; } - return true; + Char sectorBuf[kNewFSMinimumSectorSz] = {0}; + + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = kNewFSAddressAsLba; + + drive->fInput(&drive->fPacket); + + /// disk isnt faulty and data has been fetched. + if (drive->fPacket.fPacketGood) { + NewPartitionBlock* partBlock = (NewPartitionBlock*)sectorBuf; + + /// check for an empty partition here. + if (partBlock->PartitionName[0] == 0 && + rt_string_cmp(partBlock->Ident, kNewFSIdent, kNewFSIdentLen)) { + /// partition is free and valid. + + rt_copy_memory((VoidPtr)kNewFSIdent, (VoidPtr)partBlock->Ident, + kNewFSIdentLen); + rt_copy_memory((VoidPtr) "New OS\0", (VoidPtr)partBlock->PartitionName, + rt_string_len("New OS\0")); + + SizeT catalogCount = 0; + SizeT sectorCount = 0; + SizeT diskSize = 0; + + partBlock->Kind = kNewFSPartitionTypeStandard; + partBlock->StartCatalog = sizeof(NewPartitionBlock) + kNewFSAddressAsLba; + partBlock->CatalogCount = catalogCount; + partBlock->SectorCount = sectorCount; + partBlock->DiskSize = diskSize; + partBlock->FreeCatalog = partBlock->StartCatalog; + + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = kNewFSAddressAsLba; + + drive->fOutput(&drive->fPacket); + + return true; + } + + kcout << "New OS: Partition already exists.\r\n"; + + /// return success as well, do not ignore that partition. + return true; + } + + return false; } /// @brief @@ -173,73 +225,186 @@ bool NewFSParser::WriteCatalog(_Input _Output NewCatalog* catalog, return false; } -/// @brief -/// @param catalogName -/// @return +/// @brief +/// @param catalogName +/// @return _Output NewCatalog* NewFSParser::FindCatalog(_Input const char* catalogName) { return nullptr; } -/// @brief -/// @param name -/// @return +/// @brief +/// @param name +/// @return _Output NewCatalog* NewFSParser::GetCatalog(_Input const char* name) { return nullptr; } -/// @brief -/// @param catalog -/// @return +/// @brief +/// @param catalog +/// @return Boolean NewFSParser::CloseCatalog(_Input _Output NewCatalog* catalog) { - return false; + return true; } -/// @brief -/// @param catalog -/// @return +/// @brief Mark catalog as removed. +/// @param catalog The catalog structure. +/// @return Boolean NewFSParser::RemoveCatalog(_Input _Output NewCatalog* catalog) { + catalog->Flags |= kNewFSFlagDeleted; + this->WriteCatalog(catalog, nullptr); + return false; } -/// @brief -/// @param catalog -/// @param dataSz -/// @return +/// ***************************************************************** /// +/// Reading,Seek,Tell are unimplemented on catalogs, refer to forks I/O instead. +/// ***************************************************************** /// + +/// @brief +/// @param catalog +/// @param dataSz +/// @return VoidPtr NewFSParser::ReadCatalog(_Input _Output NewCatalog* catalog, SizeT dataSz) { return nullptr; } -/// @brief -/// @param catalog -/// @param off -/// @return +/// @brief +/// @param catalog +/// @param off +/// @return bool NewFSParser::Seek(_Input _Output NewCatalog* catalog, SizeT off) { return false; } -/// @brief -/// @param catalog -/// @return +/// @brief +/// @param catalog +/// @return SizeT NewFSParser::Tell(_Input _Output NewCatalog* catalog) { return 0; } -/// @brief -/// @param sz -/// @return -STATIC Lba ke_find_free_fork(SizeT sz) { return 0; } +/// @brief Find a free fork inside the filesystem. +/// @param sz the size of the fork to set. +/// @return the valid lba. +STATIC Lba ke_find_free_fork(SizeT sz, Int32 drv, NewCatalog* catalog) { + auto drive = *sMountpointInterface.GetAddressOf(drv); -/// @brief -/// @param sz -/// @return -STATIC Lba ke_find_free_catalog(SizeT sz) { return 0; } + if (drive) { + /// prepare packet. + bool done = false; + bool error = false; -/// @brief -/// @param sz -/// @return -STATIC Lba ke_find_free_data(SizeT sz) { return 0; } + Lba lba = catalog->LastFork; + + while (!done) { + Char sectorBuf[kNewFSMinimumSectorSz] = {0}; + + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = lba; + + drive->fInput(&drive->fPacket); + + if (!drive->fPacket.fPacketGood) { + ///! not a lot of choices, disk has become unreliable. + if (ke_calculate_crc32(sectorBuf, kNewFSMinimumSectorSz) != + drive->fPacket.fPacketCRC32) { + DbgLastError() = kErrorDiskIsCorrupted; + } + + error = true; + break; + } + + NewFork* fork = (NewFork*)sectorBuf; + + if (fork->DataSize == 0 && fork->Name[0] == 0 && + (fork->Flags == kNewFSFlagDeleted || + fork->Flags == kNewFSFlagUnallocated)) { + fork->DataSize = sz; + fork->Flags |= kNewFSFlagCreated; + + drive->fOutput(&drive->fPacket); + + /// here it's either a read-only filesystem or something bad happened.' + if (!drive->fPacket.fPacketGood) { + DbgLastError() = kErrorDiskReadOnly; + + return 0; + } + + return lba; + } + + lba += sizeof(NewFork); + } + + if (error) { + DbgLastError() = kErrorDisk; + return 0; + } + } + + return 0; +} + +/// @brief find a free catalog. +/// @param kind the catalog kind. +/// @return the valid lba. +STATIC Lba ke_find_free_catalog(SizeT kind, Int32 drv) { + auto drive = *sMountpointInterface.GetAddressOf(drv); + + if (drive) { + Char sectorBuf[kNewFSMinimumSectorSz] = {0}; + + /// prepare packet. + + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = kNewFSAddressAsLba; + + drive->fInput(&drive->fPacket); + + NewPartitionBlock* partBlock = (NewPartitionBlock*)sectorBuf; + + /// check for a valid partition. + if (partBlock->PartitionName[0] != 0 && + rt_string_cmp(partBlock->Ident, kNewFSIdent, kNewFSIdentLen) == 0) { + auto startLba = partBlock->FreeCatalog; + + if (startLba == 0) { + DbgLastError() = kErrorDiskIsFull; + return 1; + } else { + while (startLba != 0) { + drive->fPacket.fPacketContent = sectorBuf; + drive->fPacket.fPacketSize = kNewFSMinimumSectorSz; + drive->fPacket.fLba = startLba; + + drive->fInput(&drive->fPacket); + + NewCatalog* catalog = (NewCatalog*)sectorBuf; + + if (catalog->Flags == kNewFSFlagUnallocated || + catalog->Flags == kNewFSFlagDeleted) { + catalog->Flags |= kNewFSFlagCreated; + catalog->Kind |= kind; + + return startLba; + } + + startLba = catalog->NextSibling; + } + + return 0; + } + } + } + + return 0; +} namespace NewOS::Detail { -Boolean fs_init_newfs(Void) noexcept { return false; } +Boolean fs_init_newfs(Void) noexcept { return true; } } // namespace NewOS::Detail -#endif // ifdef __FSKIT_NEWFS__
\ No newline at end of file +#endif // ifdef __FSKIT_NEWFS__ diff --git a/Private/Source/IndexableProperty.cxx b/Private/Source/IndexableProperty.cxx index c3978fe9..dba56c74 100644 --- a/Private/Source/IndexableProperty.cxx +++ b/Private/Source/IndexableProperty.cxx @@ -34,7 +34,7 @@ Void fs_index_file(const Char* filename, SizeT filenameLen, IndexableProperty& i indexer.AddFlag(kIndexerClaimed); rt_copy_memory((VoidPtr)indexer.LeakProperty().Path, (VoidPtr)filename, filenameLen); - kcout << "NewOS: FSKit: index new file: " << filename << endl; + kcout << "New OS: FSKit: index new file: " << filename << endl; } } } // namespace Indexer diff --git a/Private/Source/KernelHeap.cxx b/Private/Source/KernelHeap.cxx index 72d291a8..3b77ebb6 100644 --- a/Private/Source/KernelHeap.cxx +++ b/Private/Source/KernelHeap.cxx @@ -97,7 +97,7 @@ Int32 ke_delete_ke_heap(VoidPtr heapPtr) { PTEWrapper pageWrapper(false, false, false, (UIntPtr)virtualAddress); Ref<PTEWrapper*> pteAddress{ &pageWrapper }; - + kHeapPageManager.Free(pteAddress); --kHeapCount; @@ -126,7 +126,7 @@ Boolean ke_is_valid_heap(VoidPtr heapPtr) { return false; } -/// @brief Protect the heap pointer with a CRC32. +/// @brief Protect the heap with a CRC value. /// @param heapPtr HIB pointer. /// @return if it valid: point has crc now., otherwise fail. Boolean ke_protect_ke_heap(VoidPtr heapPtr) { diff --git a/Private/Source/PEFCodeManager.cxx b/Private/Source/PEFCodeManager.cxx index f8616a8c..2f60f085 100644 --- a/Private/Source/PEFCodeManager.cxx +++ b/Private/Source/PEFCodeManager.cxx @@ -17,6 +17,7 @@ namespace NewOS { namespace Detail { +/// @brief Get the PEF platform signature according to the compiled backebnd UInt32 rt_get_pef_platform(void) noexcept { #ifdef __32x0__ return kPefArch32x0; @@ -33,7 +34,7 @@ UInt32 rt_get_pef_platform(void) noexcept { } // namespace Detail /// @brief PEF loader constructor w/ blob. -/// @param blob +/// @param blob PEFLoader::PEFLoader(const VoidPtr blob) : fCachedBlob(nullptr) { fCachedBlob = blob; fBad = false; @@ -42,11 +43,11 @@ PEFLoader::PEFLoader(const VoidPtr blob) : fCachedBlob(nullptr) { } /// @brief PEF loader constructor. -/// @param path -PEFLoader::PEFLoader(const char *path) : fCachedBlob(nullptr), fBad(false) { - OwnPtr<FileStream<char>> file; +/// @param path the filesystem path. +PEFLoader::PEFLoader(const Char* path) : fCachedBlob(nullptr), fBad(false) { + OwnPtr<FileStream<Char>> file; - file.New(const_cast<Char *>(path), kRestrictRB); + file.New(const_cast<Char*>(path), kRestrictRB); if (StringBuilder::Equals(file->MIME(), this->MIME())) { fPath = StringBuilder::Construct(path).Leak(); @@ -131,7 +132,7 @@ VoidPtr PEFLoader::FindSymbol(const char *name, Int32 kind) { } /// @brief Finds the executable entrypoint. -/// @return +/// @return ErrorOr<VoidPtr> PEFLoader::FindStart() { if (auto sym = this->FindSymbol(kPefStart, kPefCode); sym) return ErrorOr<VoidPtr>(sym); @@ -140,7 +141,7 @@ ErrorOr<VoidPtr> PEFLoader::FindStart() { } /// @brief Tells if the executable is loaded or not. -/// @return +/// @return bool PEFLoader::IsLoaded() noexcept { return !fBad && fCachedBlob; } #define kPefAppnameCommandHdr "PefAppName" diff --git a/Private/Source/ThreadLocalStorage.cxx b/Private/Source/ThreadLocalStorage.cxx index d3e31a1c..8d3281e3 100644 --- a/Private/Source/ThreadLocalStorage.cxx +++ b/Private/Source/ThreadLocalStorage.cxx @@ -31,7 +31,7 @@ Boolean tls_check_tib(ThreadInformationBlock* tib) { Encoder encoder; const char* tibAsBytes = encoder.AsBytes(tib); - kcout << "NewOS: Checking for a valid cookie...\r\n"; + kcout << "New OS: Checking for a valid cookie...\r\n"; return tibAsBytes[0] == kCookieMag0 && tibAsBytes[1] == kCookieMag1 && tibAsBytes[2] == kCookieMag2; @@ -46,9 +46,9 @@ EXTERN_C Void tls_check_syscall_impl(NewOS::HAL::StackFramePtr stackPtr) noexcep ThreadInformationBlock* tib = (ThreadInformationBlock*)stackPtr->Gs; if (!tls_check_tib(tib)) { - kcout << "NewOS: Verification failed, Crashing...\r\n"; + kcout << "New OS: Verification failed, Crashing...\r\n"; ProcessScheduler::Shared().Leak().GetCurrent().Leak().Crash(); } - kcout << "NewOS: Verification succeeded! Keeping on...\r\n"; + kcout << "New OS: Verification succeeded! Keeping on...\r\n"; } diff --git a/Private/Source/URL.cxx b/Private/Source/URL.cxx index 090c7c66..4983a34c 100644 --- a/Private/Source/URL.cxx +++ b/Private/Source/URL.cxx @@ -15,12 +15,15 @@ URL::URL(StringView &strUrl) : fUrlView(strUrl, false) {} URL::~URL() = default; +/// @brief internal and reserved protocols by kernel. constexpr const char *kURLProtocols[] = { "file", // Filesystem protocol + "mup", // Mahrouss update protocol + "param", // Mahrouss parameter protocol. }; constexpr const int kUrlOutSz = 1; //! such as: :// -constexpr const int kProtosCount = 4; +constexpr const int kProtosCount = 3; constexpr const int kRangeSz = 4096; ErrorOr<StringView> url_extract_location(const char *url) { diff --git a/Private/makefile b/Private/makefile index 412739ca..128ccc55 100644 --- a/Private/makefile +++ b/Private/makefile @@ -1,33 +1,35 @@ ################################################## -# (C) Mahrouss Logic, all rights reserved. +# (C) Mahrouss Logic, all rights reserved. # This is the microkernel makefile. ################################################## CC = x86_64-w64-mingw32-gcc LD = x86_64-w64-mingw32-ld -CCFLAGS = -c -ffreestanding -D__NEWOS_AMD64__ -mgeneral-regs-only -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__FSKIT_NEWFS__ -D__KERNEL__ -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -I../ -I./ +CCFLAGS = -c -ffreestanding -D__NEWOS_AMD64__ -mgeneral-regs-only -mno-red-zone -fno-rtti -fno-exceptions -std=c++20 -D__FSKIT_NEWFS__ -D__KERNEL__ -D__HAVE_MAHROUSS_APIS__ -D__MAHROUSS__ -I../ -I./ ASM = nasm ifneq ($(ATA_PIO_SUPPORT), ) -DISKDRIVER = -D__ATA_PIO__ +DISKDRIVER = -D__ATA_PIO__ endif ifneq ($(ATA_DMA_SUPPORT), ) -DISKDRIVER = -D__ATA_DMA__ +DISKDRIVER = -D__ATA_DMA__ endif ifneq ($(AHCI_SUPPORT), ) -DISKDRIVER = -D__AHCI__ +DISKDRIVER = -D__AHCI__ endif ifneq ($(DEBUG_SUPPORT), ) -DEBUG = -D__DEBUG__ +DEBUG = -D__DEBUG__ endif +COPY = cp + # Add assembler, linker, and object files variables. ASMFLAGS = -f win64 LDFLAGS = -e Main --subsystem=17 -LDOBJ = $(wildcard Objects/*.obj) +LDOBJ = Objects/*.obj # This file is the kernel, responsible of task management, memory, drivers and more. KERNEL = NewKernel.exe @@ -37,7 +39,7 @@ SCRIPT = --script=Linker/Platforms/PC.lds .PHONY: error error: - @echo "Use a specific target." + @echo "=> Use a specific target." MOVEALL=./MoveAll.sh WINDRES=x86_64-w64-mingw32-windres @@ -52,12 +54,19 @@ newos-amd64-epm: clean $(ASM) $(ASMFLAGS) HALKit/AMD64/HalInstallTIB.asm $(MOVEALL) -OBJCOPY=x86_64-w64-mingw32-objcopy +OBJCOPY=x86_64-w64-mingw32-objcopy + +KERNEL_OBJ=kernel.bin +DD=dd +IMG_CREATE=qemu-img +MAX_KERNEL_SIZE=1024K .PHONY: link-amd64-epm link-amd64-epm: - $(LD) $(LDFLAGS) $(LDOBJ) -o $(KERNEL) - cp $(KERNEL) Root/Boot + $(LD) $(LDFLAGS) $(LDOBJ) -o $(KERNEL_OBJ) + $(IMG_CREATE) create -f raw $(KERNEL) $(MAX_KERNEL_SIZE) + $(DD) if=$(KERNEL_OBJ) of=$(KERNEL) bs=1 seek=0 conv=notrunc + $(COPY) $(KERNEL) Root/Boot .PHONY: all all: newos-amd64-epm link-amd64-epm |
