diff --git a/include/bios.h b/include/bios.h index 902e5525..e16f7900 100644 --- a/include/bios.h +++ b/include/bios.h @@ -101,6 +101,9 @@ #define BIOS_VIDEO_SAVEPTR 0x4a8 +/* maximum of scancodes handled by keyboard bios routines */ +#define MAX_SCAN_CODE 0x58 + /* The Section handling Bios Disk Access */ #define BIOS_MAX_DISK 10 @@ -170,4 +173,8 @@ void INT2F_StartUp(void); void INT33_StartUp(void); void INT13_StartUp(void); +bool BIOS_AddKeyToBuffer(Bit16u code); + +void INT10_ReloadRomFonts(); + #endif diff --git a/include/dos_inc.h b/include/dos_inc.h index 931c3094..7be5fdb9 100644 --- a/include/dos_inc.h +++ b/include/dos_inc.h @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: dos_inc.h,v 1.61 2006-06-30 12:47:06 c2woody Exp $ */ +/* $Id: dos_inc.h,v 1.62 2006-10-27 13:37:13 c2woody Exp $ */ #ifndef DOSBOX_DOS_INC_H #define DOSBOX_DOS_INC_H @@ -187,6 +187,20 @@ void DOS_SetupTables(void); /* Internal DOS Setup Programs */ void DOS_SetupPrograms(void); +/* Initialize Keyboard Layout */ +void DOS_KeyboardLayout_Init(Section* sec); + +bool DOS_LayoutKey(Bitu key, Bit8u flags1, Bit8u flags2, Bit8u flags3); + +enum { + KEYB_NOERROR=0, + KEYB_FILENOTFOUND, + KEYB_INVALIDFILE, + KEYB_LAYOUTNOTFOUND, + KEYB_INVALIDCPFILE +}; + + INLINE Bit16u long2para(Bit32u size) { if (size>0xFFFF0) return 0xffff; if (size&0xf) return (Bit16u)((size>>4)+1); @@ -605,6 +619,7 @@ struct DOS_Block { RealPt dcbs; Bit8u* country;//Will be copied to dos memory. resides in real mem } tables; + Bit16u loaded_codepage; }; extern DOS_Block dos; diff --git a/src/dos/Makefile.am b/src/dos/Makefile.am index 0beeb4aa..3bdfbf51 100644 --- a/src/dos/Makefile.am +++ b/src/dos/Makefile.am @@ -1,10 +1,10 @@ AM_CPPFLAGS = -I$(top_srcdir)/include noinst_LIBRARIES = libdos.a -EXTRA_DIST = scsidefs.h wnaspi32.h +EXTRA_DIST = scsidefs.h wnaspi32.h dos_codepages.h dos_keyboard_layout_data.h libdos_a_SOURCES = dos.cpp dos_devices.cpp dos_execute.cpp dos_files.cpp dos_ioctl.cpp dos_memory.cpp \ dos_misc.cpp dos_classes.cpp dos_programs.cpp dos_tables.cpp \ drives.cpp drives.h drive_virtual.cpp drive_local.cpp drive_cache.cpp drive_fat.cpp \ - drive_iso.cpp dev_con.h dos_mscdex.cpp \ + drive_iso.cpp dev_con.h dos_mscdex.cpp dos_keyboard_layout.cpp \ cdrom.h cdrom.cpp cdrom_ioctl_win32.cpp cdrom_aspi_win32.cpp cdrom_ioctl_linux.cpp cdrom_image.cpp \ cdrom_ioctl_os2.cpp diff --git a/src/dos/dos.cpp b/src/dos/dos.cpp index cd2273ca..99a92cb4 100644 --- a/src/dos/dos.cpp +++ b/src/dos/dos.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: dos.cpp,v 1.95 2006-07-24 19:06:55 c2woody Exp $ */ +/* $Id: dos.cpp,v 1.96 2006-10-27 13:37:13 c2woody Exp $ */ #include #include @@ -862,7 +862,7 @@ static Bitu DOS_21Handler(void) { mem_writeb(data + 0x00,reg_al); mem_writew(data + 0x01,0x26); mem_writew(data + 0x03,1); - if(reg_cx > 0x06 ) mem_writew(data+0x05,0x01b5); + if(reg_cx > 0x06 ) mem_writew(data+0x05,dos.loaded_codepage); if(reg_cx > 0x08 ) { Bitu amount = (reg_cx>=0x29)?0x22:(reg_cx-7); MEM_BlockWrite(data + 0x07,dos.tables.country,amount); @@ -914,7 +914,7 @@ static Bitu DOS_21Handler(void) { case 0x66: /* Get/Set global code page table */ if (reg_al==1) { LOG(LOG_DOSMISC,LOG_ERROR)("Getting global code page table"); - reg_bx=reg_dx=437; + reg_bx=reg_dx=dos.loaded_codepage; CALLBACK_SCF(false); break; } diff --git a/src/dos/dos_codepages.h b/src/dos/dos_codepages.h new file mode 100644 index 00000000..9b69f61c --- /dev/null +++ b/src/dos/dos_codepages.h @@ -0,0 +1,1131 @@ +/* + * Copyright (C) Henrique Peron + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +/* This file contains data of .CPI/.CPX-files. They have been + generated by Henrique Peron */ + +/* The font files have been created/edited with CPIadd V1.20 + Copyright (C) 1993-1996 by kostis@acm.org (Kosta Kostis) */ + +/* This file contains data of UPX-compressed CPI files. + UPX, The Ultimate Packer for eXecutables + Copyright (c) 1996-2002 Markus Oberhumer & Laszlo Molnar + http://upx.sourceforge.net */ + + +Bit8u font_ega_cpx[6322] = { +0x81, 0xfc, 0xce, 0xe7, 0x77, 0x02, 0xcd, 0x20, 0xb9, 0xb2, 0x18, 0xbe, 0xb2, 0x19, 0xbf, 0x6e, +0xe7, 0xbb, 0x00, 0x80, 0xfd, 0xf3, 0xa4, 0xfc, 0x87, 0xf7, 0x83, 0xee, 0xc6, 0x19, 0xed, 0x57, +0x57, 0xe9, 0xed, 0xe5, 0x55, 0x50, 0x58, 0x21, 0x0b, 0x01, 0x04, 0x08, 0x6c, 0xfa, 0x36, 0x54, +0x99, 0xe8, 0x0b, 0xa9, 0x00, 0xe6, 0x1a, 0x18, 0x06, 0x74, 0xbb, 0xfc, 0xff, 0x46, 0x4f, 0x4e, +0x54, 0x20, 0x00, 0x00, 0x01, 0x6e, 0x39, 0x01, 0x17, 0x06, 0xfd, 0xfd, 0x06, 0x00, 0x1c, 0x00, +0x4d, 0x26, 0x0e, 0x45, 0x47, 0x41, 0xc9, 0xcd, 0x1e, 0x20, 0xb5, 0x01, 0xfe, 0xd8, 0x35, 0x24, +0x03, 0x00, 0x12, 0x26, 0x10, 0x08, 0x95, 0xc5, 0x0a, 0x00, 0x6d, 0xff, 0x7e, 0x81, 0xa5, 0x81, +0x81, 0xbd, 0x99, 0x03, 0x7e, 0xfe, 0x83, 0x0f, 0xff, 0xdb, 0xff, 0xff, 0xc3, 0xe7, 0xff, 0xff, +0xe6, 0x77, 0x00, 0x6c, 0xfe, 0x3e, 0xec, 0x7c, 0x38, 0x10, 0x30, 0x10, 0x38, 0x7c, 0xfd, 0xc0, +0x0e, 0x18, 0x3c, 0x3c, 0xe7, 0xb2, 0xb6, 0x00, 0x18, 0x06, 0x0f, 0x65, 0x6e, 0x7e, 0x3b, 0x0f, +0xb3, 0xb3, 0x22, 0x18, 0x09, 0xde, 0xb1, 0xff, 0x00, 0xe7, 0xc3, 0x5f, 0x3f, 0xf6, 0x00, 0x1f, +0x3c, 0x66, 0x42, 0x42, 0x66, 0xff, 0x92, 0x3c, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xfe, 0x21, +0x1e, 0x0e, 0x1a, 0x32, 0x78, 0xcc, 0xde, 0xeb, 0x00, 0x78, 0x20, 0x2d, 0xb9, 0xe6, 0x00, 0x4f, +0x61, 0xbb, 0x9f, 0x0f, 0x3f, 0x33, 0x3f, 0x30, 0x00, 0x70, 0xf0, 0xf9, 0xc8, 0xe0, 0x00, 0x7f, +0x63, 0x7f, 0x63, 0x9e, 0xbd, 0x67, 0xe7, 0xe6, 0xc0, 0x7c, 0x18, 0xdb, 0x87, 0xdd, 0xa0, 0x3c, +0xdb, 0x2e, 0x80, 0xbb, 0xfd, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8, 0x2d, 0xc0, 0x80, 0xbf, 0xfe, +0x1f, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0xfe, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x6b, 0x49, 0x2b, 0x5e, +0x7c, 0x67, 0x3c, 0x00, 0x66, 0x98, 0x9b, 0x07, 0x5f, 0xe7, 0x36, 0xdb, 0x00, 0x7b, 0x1b, 0xff, +0x9b, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x0c, 0x06, 0xe4, 0xc6, 0x7c, +0x00, 0xfe, 0x43, 0x66, 0x4f, 0x7e, 0x6f, 0x60, 0x0f, 0x00, 0xbd, 0x60, 0x0f, 0x00, 0xfe, 0x96, +0x70, 0x11, 0x0c, 0xfe, 0x0c, 0x77, 0xc9, 0x0c, 0x00, 0x30, 0x60, 0xfe, 0x06, 0xe4, 0x60, 0x30, +0x00, 0xc0, 0x61, 0x56, 0x5c, 0xa1, 0x76, 0x39, 0x28, 0x6c, 0x28, 0x0e, 0x50, 0x58, 0x9f, 0xb2, +0xb7, 0xa0, 0x7c, 0x7d, 0x8a, 0x0e, 0x5b, 0x0e, 0x38, 0xaf, 0xbc, 0xc0, 0x00, 0x18, 0x3c, 0x66, +0xaf, 0x8c, 0x8f, 0x21, 0xeb, 0xe9, 0x24, 0x20, 0x8b, 0xb9, 0x6c, 0x5e, 0x03, 0xad, 0xfe, 0x36, +0xf1, 0xc2, 0xc0, 0x7c, 0x06, 0x06, 0x86, 0x1e, 0xd6, 0xef, 0xc1, 0xc2, 0xc6, 0x26, 0xdf, 0xae, +0x30, 0x60, 0xc6, 0x86, 0x2e, 0x14, 0x0e, 0x0c, 0x76, 0xdc, 0xc1, 0x1a, 0xaf, 0x76, 0xbd, 0x81, +0x6d, 0x00, 0x60, 0x4e, 0x8b, 0xb9, 0x2b, 0x00, 0xe5, 0xb9, 0x59, 0x0f, 0x08, 0x96, 0x8d, 0x00, +0x18, 0xe2, 0x15, 0x16, 0xde, 0xff, 0xe5, 0x84, 0x81, 0xa2, 0xed, 0x06, 0xb6, 0x14, 0x6c, 0xc0, +0x31, 0xfe, 0xd7, 0x96, 0xad, 0x31, 0xf9, 0x15, 0xe2, 0x9f, 0xc0, 0x80, 0xf8, 0x30, 0xae, 0xd6, +0xd6, 0x0e, 0x76, 0xb2, 0x27, 0x38, 0x78, 0x59, 0x10, 0x81, 0x2e, 0xf6, 0xe4, 0x7c, 0xc6, 0xc6, +0xfe, 0x0f, 0xd8, 0x4e, 0x06, 0x3c, 0x02, 0x06, 0xfd, 0x43, 0xdf, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, +0xfe, 0x9c, 0xd0, 0xb0, 0x1e, 0x8d, 0xfe, 0x03, 0xd6, 0xfc, 0x1f, 0x38, 0x90, 0xbb, 0x60, 0x0f, +0xc6, 0xc6, 0xc6, 0x66, 0xee, 0xfe, 0x3f, 0xf3, 0x73, 0xc3, 0x4f, 0x1a, 0x1f, 0x7d, 0x01, 0x0b, +0x7e, 0x0b, 0xdb, 0x3f, 0x0c, 0x78, 0xba, 0x0b, 0x7b, 0x04, 0x0f, 0x62, 0x93, 0x30, 0x9e, 0x92, +0x1a, 0x35, 0x06, 0xc2, 0xc9, 0xde, 0x02, 0x00, 0xf6, 0x62, 0x1b, 0x23, 0x5f, 0x25, 0x4c, 0x0c, +0xdf, 0xb6, 0xb3, 0x10, 0xde, 0x00, 0xdc, 0x61, 0x14, 0xc4, 0x2e, 0x3b, 0xdb, 0x6c, 0x90, 0xfe, +0x0f, 0x6c, 0x3c, 0xfc, 0x66, 0xf1, 0x7c, 0x86, 0xf4, 0xfc, 0x6f, 0xd4, 0x15, 0xef, 0x00, 0xc2, +0xf2, 0xe9, 0xa1, 0x10, 0xf8, 0x6c, 0x3f, 0x7b, 0x6c, 0xf8, 0x0f, 0xfe, 0x66, 0x62, 0x68, 0x84, +0xfc, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0xc0, 0xb6, 0x00, 0xf0, 0x3f, 0x4d, 0x7e, 0xde, 0xc6, +0xc6, 0x66, 0x3a, 0x61, 0xef, 0x69, 0x6e, 0x6f, 0x6b, 0xc2, 0x3c, 0x7d, 0x30, 0x31, 0x26, 0x1e, +0x0d, 0x77, 0x49, 0xef, 0xe6, 0x6a, 0xb3, 0x6e, 0x78, 0x78, 0x74, 0xe6, 0x0f, 0xb3, 0xd8, 0xf0, +0x60, 0x00, 0x6f, 0x92, 0x7f, 0x4f, 0xee, 0xfe, 0xfe, 0xd6, 0xf2, 0xdb, 0x0f, 0xe6, 0xf6, 0xfe, +0xde, 0xce, 0x79, 0x58, 0x6f, 0xc6, 0x9b, 0x2d, 0xdf, 0x41, 0x27, 0xec, 0xf0, 0x1f, 0xd6, 0xde, +0x97, 0xe4, 0x7c, 0x0c, 0x0e, 0xe3, 0x29, 0xd9, 0xe6, 0x1f, 0xe2, 0xb2, 0x42, 0x50, 0x3f, 0x09, +0x7b, 0x7e, 0x7e, 0x5a, 0xaf, 0x16, 0xb2, 0xc6, 0x5f, 0x0f, 0x25, 0x0f, 0x6c, 0x38, 0x10, 0x43, +0xfe, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x6b, 0xa6, 0x6c, 0x8e, 0x61, 0x9f, 0x66, 0x0d, 0xce, +0x0b, 0xcb, 0x4f, 0x1b, 0x86, 0x21, 0x1f, 0x7f, 0xc2, 0x16, 0xec, 0x3c, 0x30, 0x00, 0x1f, 0xfe, +0x0a, 0xc1, 0x70, 0x38, 0x1c, 0x76, 0xb2, 0xaf, 0x3c, 0x0c, 0x00, 0x62, 0x0c, 0x3c, 0xdc, 0x8d, +0x90, 0xe6, 0xec, 0x34, 0x6c, 0xff, 0x18, 0xe9, 0x03, 0x78, 0x0c, 0x7c, 0xaf, 0x16, 0x2e, 0xe0, +0x19, 0x78, 0x66, 0x11, 0xe2, 0xcf, 0x1c, 0x13, 0x02, 0x00, 0xb9, 0xc3, 0xdf, 0x1c, 0x69, 0x2d, +0x2b, 0x00, 0x2f, 0x80, 0x8c, 0x1f, 0xfe, 0xc6, 0xfb, 0x36, 0x32, 0x30, 0x78, 0xaf, 0xcf, 0xf0, +0x5d, 0x76, 0x2e, 0xcc, 0xdf, 0xa1, 0x5f, 0xd2, 0x5f, 0x6c, 0x32, 0x9e, 0x76, 0xe6, 0xdc, 0x03, +0x61, 0x38, 0x4f, 0x6b, 0x4b, 0x09, 0x00, 0xdb, 0x00, 0xcc, 0x10, 0x17, 0x2f, 0x71, 0xc6, 0x00, +0xe6, 0x90, 0x9c, 0x2f, 0x38, 0x35, 0xba, 0x00, 0xec, 0x00, 0x4c, 0xd6, 0x00, 0xc6, 0x0f, 0xdc, +0xcb, 0x66, 0xa1, 0x9f, 0x6c, 0x09, 0x9f, 0x1f, 0xf6, 0xb1, 0x04, 0xf0, 0x9f, 0x90, 0x16, 0xd2, +0x19, 0xed, 0xdc, 0x9f, 0x1f, 0x4c, 0x60, 0xe4, 0x76, 0x09, 0xdf, 0x10, 0xd9, 0xb2, 0xdf, 0xfc, +0xde, 0x36, 0x1c, 0x1f, 0x10, 0x5e, 0x3d, 0x0f, 0x82, 0x31, 0x00, 0x47, 0xc0, 0x0f, 0x00, 0xb7, +0x84, 0x9a, 0x1b, 0x30, 0x53, 0x38, 0x75, 0x2f, 0xd4, 0xb5, 0x04, 0x0c, 0x03, 0x87, 0x52, 0xcc, +0x4f, 0xcd, 0xd9, 0xfe, 0xef, 0x0e, 0x70, 0x64, 0x3d, 0x0e, 0xf7, 0x09, 0x83, 0x3f, 0xda, 0x7b, +0x1b, 0x23, 0x24, 0x40, 0xf8, 0xc9, 0xdc, 0xdf, 0x8b, 0x34, 0xe2, 0x4f, 0x17, 0xd2, 0xcf, 0x18, +0xd8, 0x59, 0x72, 0xcc, 0xbf, 0xe0, 0x4a, 0x39, 0xb8, 0x84, 0xcf, 0x3b, 0x6e, 0x61, 0x1f, 0x2f, +0x7c, 0x60, 0x0f, 0xc0, 0x60, 0x30, 0xb6, 0x84, 0x2e, 0x38, 0x46, 0xc8, 0x2f, 0x3f, 0xde, 0x4b, +0x6f, 0x4f, 0x5c, 0xc2, 0x5f, 0xfd, 0x57, 0xc2, 0x0f, 0xbd, 0x18, 0x32, 0x1f, 0x66, 0x5a, 0xc2, +0x1f, 0x06, 0xde, 0xc2, 0x0f, 0x2f, 0x6b, 0xc0, 0x0f, 0xc6, 0xcf, 0x73, 0x0b, 0x8d, 0x0f, 0x72, +0x09, 0xdc, 0xc7, 0xc8, 0xaf, 0x3f, 0x4e, 0xfe, 0x36, 0x36, 0x7e, 0xd8, 0xd8, 0x6e, 0x3e, 0x1e, +0x3a, 0xdc, 0xfe, 0x0f, 0xce, 0x18, 0xc9, 0xff, 0x3f, 0x84, 0x5d, 0xc6, 0x0f, 0x65, 0xb3, 0xaf, +0x0f, 0x08, 0x8d, 0xf6, 0x4f, 0x71, 0x58, 0x1f, 0xc2, 0x85, 0x1f, 0xc6, 0xef, 0x59, 0x07, 0xc6, +0x9f, 0x65, 0x0d, 0xc6, 0x4f, 0x70, 0x22, 0x71, 0x37, 0xe1, 0x0d, 0xef, 0xd2, 0x70, 0xe0, 0x64, +0x60, 0x03, 0xa1, 0x21, 0x9f, 0x0c, 0xc9, 0x38, 0x7e, 0x0f, 0xdb, 0xb7, 0xf8, 0x69, 0xf8, 0xc4, +0xcc, 0xde, 0x05, 0xc6, 0xe5, 0x19, 0x1f, 0x0e, 0x1b, 0x70, 0x9a, 0x7e, 0xd8, 0x0b, 0xe1, 0x01, +0xaf, 0x42, 0x6a, 0x84, 0x7f, 0xcb, 0xde, 0x0f, 0xcf, 0x21, 0x7b, 0x2f, 0xbf, 0x92, 0x1c, 0x62, +0x5f, 0x04, 0xdc, 0x0c, 0x6f, 0x6e, 0x8d, 0x1c, 0x6c, 0x36, 0x0c, 0x0c, 0x8e, 0xd6, 0x5e, 0x0f, +0x51, 0x0f, 0x98, 0x58, 0x07, 0x48, 0x5d, 0x11, 0xc0, 0x8f, 0x7a, 0x1c, 0xfe, 0x90, 0x34, 0x10, +0x3c, 0xc1, 0xe0, 0xfd, 0xcc, 0xa6, 0x85, 0xe0, 0xa8, 0x6c, 0x0d, 0xac, 0x81, 0xdc, 0x14, 0x3e, +0x0f, 0x60, 0xbf, 0x66, 0xce, 0x9a, 0x3f, 0x22, 0xe8, 0xb9, 0xf7, 0xbc, 0x63, 0xc9, 0x62, 0x85, +0x36, 0xcb, 0xcc, 0x6c, 0xd8, 0x00, 0x6d, 0x76, 0x0d, 0x6c, 0xd8, 0x11, 0x44, 0xe4, 0x85, 0x01, +0x55, 0xaa, 0x21, 0x2f, 0xdd, 0x77, 0x05, 0x76, 0x18, 0x00, 0x0b, 0xd9, 0xf8, 0x0d, 0x0f, 0xcf, +0x26, 0x36, 0x00, 0xf6, 0x36, 0xb0, 0x20, 0xd0, 0x4b, 0xd8, 0x0f, 0x2f, 0xce, 0x23, 0xf6, 0x06, +0x96, 0xc0, 0x00, 0x3d, 0x85, 0x6c, 0x1f, 0x25, 0xa3, 0x2f, 0xba, 0xc9, 0x82, 0x11, 0x0f, 0xac, +0x61, 0x8f, 0x00, 0xc8, 0x86, 0xf8, 0xbf, 0x27, 0x6c, 0x1f, 0x2f, 0x18, 0x18, 0x19, 0x92, 0xff, +0xff, 0x58, 0x23, 0x72, 0x59, 0x5b, 0x1f, 0x3f, 0x21, 0x1b, 0x2d, 0x86, 0x84, 0x1f, 0x0f, 0x37, +0x7b, 0xc2, 0xbf, 0x37, 0x30, 0x3f, 0x6d, 0x52, 0x09, 0xbf, 0xbb, 0xb0, 0x1f, 0xf7, 0x5f, 0x83, +0x2d, 0x6d, 0xf7, 0x2c, 0x64, 0x3f, 0x2f, 0x6c, 0x96, 0x1f, 0x2f, 0x6c, 0xb6, 0x3f, 0x2f, 0x0c, +0xb6, 0xdd, 0xff, 0x2c, 0x24, 0x2f, 0x5f, 0xc8, 0x8e, 0xff, 0xdf, 0x42, 0xc2, 0x86, 0x61, 0xc9, +0xaf, 0xdf, 0x97, 0xb0, 0x3f, 0xef, 0xb9, 0xb0, 0x3f, 0x3f, 0x64, 0x21, 0x4f, 0x10, 0x84, 0x2d, +0x84, 0x91, 0x5f, 0xaf, 0x93, 0x8d, 0x4f, 0xff, 0x2c, 0x64, 0x00, 0x9f, 0x1c, 0x36, 0x00, 0xf0, +0xc9, 0x90, 0x0f, 0x0b, 0x0b, 0x36, 0xf2, 0x61, 0x00, 0x76, 0xdc, 0xd8, 0x08, 0xd2, 0xdc, 0xcf, +0xd3, 0x06, 0x5b, 0xd8, 0xcc, 0xbe, 0x86, 0x45, 0xcc, 0x7f, 0x48, 0x07, 0xad, 0x91, 0x9d, 0x4a, +0xff, 0x35, 0xcc, 0x00, 0x1f, 0xcb, 0xc0, 0xf2, 0x9f, 0x78, 0x7e, 0x00, 0x7e, 0xd8, 0x70, 0x64, +0x92, 0x5f, 0x66, 0x0c, 0x3b, 0xc0, 0x6f, 0x2b, 0x20, 0x1c, 0x8b, 0x20, 0x40, 0xc1, 0x2f, 0xa9, +0x8f, 0xfe, 0xc6, 0x83, 0x25, 0xab, 0xd1, 0x17, 0x6e, 0xee, 0xd6, 0x9c, 0xce, 0x1e, 0x3e, 0x31, +0xb0, 0x2c, 0x6f, 0xb2, 0x0a, 0x82, 0x61, 0x6c, 0xf7, 0x03, 0x06, 0x0f, 0xf3, 0x7e, 0x6c, 0x68, +0x3b, 0x1c, 0x9a, 0x60, 0x09, 0x7d, 0xdf, 0x30, 0x1c, 0xff, 0x25, 0x0b, 0xcd, 0xb2, 0x9a, 0x02, +0x5d, 0x4a, 0x36, 0x50, 0x59, 0x90, 0x3e, 0x10, 0x41, 0x2a, 0x6e, 0x07, 0x66, 0x0f, 0x4f, 0x01, +0xac, 0x1b, 0x11, 0x77, 0x60, 0xff, 0x18, 0x2a, 0x12, 0x42, 0x18, 0x6e, 0x0c, 0x24, 0x97, 0xac, +0x0e, 0x0f, 0xac, 0x61, 0x81, 0x42, 0xf3, 0xb0, 0x00, 0x0f, 0x0c, 0x60, 0xdb, 0xec, 0x34, 0x3c, +0xcf, 0x06, 0xd6, 0x6c, 0x58, 0x5b, 0x24, 0xcf, 0xa0, 0x32, 0xbe, 0x64, 0xbc, 0x00, 0x7e, 0x40, +0x4e, 0x00, 0x2f, 0x18, 0x0e, 0x05, 0x84, 0x05, 0x03, 0x58, 0x70, 0x7e, 0x01, 0x12, 0x1c, 0x7e, +0xff, 0x82, 0x00, 0x12, 0x4c, 0xfd, 0xfb, 0x09, 0x56, 0xf9, 0x04, 0x29, 0x92, 0xe0, 0xf7, 0xf5, +0x49, 0x30, 0xf3, 0x92, 0x60, 0xf1, 0x49, 0x30, 0xef, 0x60, 0x76, 0x78, 0x27, 0xc1, 0x92, 0xec, +0x24, 0x38, 0xeb, 0xea, 0x4e, 0xb0, 0xe9, 0xc1, 0x09, 0xe8, 0x2a, 0x25, 0xe7, 0x4a, 0x60, 0x24, +0xe5, 0x2c, 0x09, 0xe4, 0xa9, 0x12, 0xe3, 0x32, 0x25, 0xc1, 0xe1, 0x90, 0x20, 0xde, 0x48, 0x90, +0xdd, 0x90, 0x60, 0xdb, 0x24, 0xc1, 0xda, 0x82, 0x72, 0x00, 0xde, 0x48, 0xd7, 0x0d, 0xc1, 0x32, +0xe4, 0x20, 0x24, 0xd2, 0x12, 0x9c, 0xd1, 0xcf, 0x82, 0x10, 0x12, 0x4c, 0xcd, 0xcb, 0x09, 0x56, +0xc9, 0x49, 0x30, 0xc7, 0x09, 0x52, 0xc3, 0x02, 0x17, 0x76, 0x12, 0x4c, 0xc1, 0xbe, 0x82, 0x10, +0x12, 0x4c, 0xbd, 0xbc, 0x27, 0x58, 0xbb, 0x20, 0xc1, 0x66, 0xc6, 0xb9, 0x49, 0x70, 0x76, 0x5f, +0x24, 0x48, 0xb5, 0x82, 0xd3, 0x06, 0x64, 0x4b, 0xb3, 0x20, 0x70, 0x82, 0xb0, 0x02, 0x49, 0xae, +0x63, 0xc0, 0x4b, 0xfe, 0xfb, 0x41, 0x08, 0x6b, 0x25, 0xa5, 0x14, 0x49, 0x30, 0xa3, 0x49, 0x70, +0x7e, 0xa1, 0xc1, 0x6b, 0x80, 0x87, 0x25, 0x9f, 0xa3, 0x97, 0x04, 0x9d, 0x1e, 0x80, 0x04, 0x9b, +0x12, 0xbc, 0x1b, 0x99, 0xc1, 0x5b, 0x0d, 0x30, 0x3b, 0x97, 0xd4, 0x1c, 0x48, 0x95, 0x7c, 0x02, +0x12, 0x93, 0x04, 0x8f, 0xaf, 0x82, 0x95, 0x90, 0x58, 0x40, 0x8e, 0xb3, 0x04, 0xaf, 0x1e, 0x82, +0x95, 0x8b, 0x41, 0x42, 0x88, 0xf0, 0x22, 0x87, 0x3c, 0x4a, 0x49, 0x84, 0x41, 0x32, 0xa3, 0x75, +0x20, 0x81, 0xfc, 0x82, 0x25, 0xaf, 0x13, 0x4c, 0x7e, 0x7d, 0x4b, 0x82, 0x7c, 0x68, 0x46, 0xcb, +0x5a, 0xf6, 0xca, 0x0d, 0x12, 0xbc, 0xb8, 0x77, 0x27, 0x58, 0x76, 0x96, 0x04, 0x75, 0x03, 0x09, +0x73, 0x40, 0x82, 0x3c, 0x71, 0x93, 0xe0, 0x78, 0x6f, 0x80, 0x1b, 0x06, 0x78, 0x6c, 0x82, 0x41, +0x6e, 0xf0, 0x04, 0x4b, 0x6c, 0x92, 0xe0, 0x6b, 0x6a, 0x92, 0xd0, 0xf9, 0x26, 0x04, 0x67, 0x7c, +0x03, 0x09, 0x65, 0xc1, 0xb2, 0xf0, 0x1b, 0x24, 0x30, 0x62, 0x61, 0x09, 0x0e, 0xe6, 0x5f, 0x86, +0x2d, 0x37, 0xd9, 0x09, 0x5d, 0x99, 0x42, 0x2a, 0x0a, 0x21, 0xc1, 0x58, 0x91, 0x20, 0x57, 0xb1, +0x19, 0xd7, 0x0d, 0xf0, 0x4a, 0x1c, 0x66, 0x1b, 0x48, 0x53, 0x45, 0xc1, 0x36, 0xf7, 0x8c, 0x82, +0x25, 0x50, 0x82, 0x41, 0x4f, 0x3c, 0xc1, 0x4a, 0x4c, 0xc1, 0x20, 0x4b, 0x3c, 0x0c, 0x24, 0x49, +0xff, 0x01, 0x12, 0x45, 0x18, 0xa9, 0x53, 0x76, 0x0d, 0x24, 0x41, 0xa9, 0x64, 0x35, 0xc0, 0x48, +0x30, 0x3d, 0x97, 0x1d, 0x76, 0x1b, 0xfe, 0x82, 0x24, 0x24, 0x58, 0x39, 0x7c, 0x38, 0x03, 0x06, +0x76, 0x96, 0x48, 0x10, 0x35, 0x12, 0x0c, 0xe6, 0x33, 0x04, 0x07, 0x3c, 0x09, 0x96, 0x31, 0x2f, +0x08, 0x09, 0xbf, 0x5e, 0x6c, 0x26, 0x29, 0x09, 0x09, 0x2b, 0x84, 0x04, 0x09, 0xc3, 0xb2, 0x8b, +0x6b, 0x98, 0xb0, 0x1b, 0x7c, 0x58, 0x76, 0xc1, 0x8b, 0x0e, 0x24, 0x21, 0xf0, 0xc9, 0xcb, 0x37, +0x70, 0x1c, 0x4c, 0x82, 0x1d, 0x58, 0x12, 0x1c, 0x24, 0x24, 0x1a, 0xb3, 0x25, 0xbf, 0x0d, 0x80, +0x04, 0x16, 0x12, 0xb8, 0x19, 0x14, 0x04, 0x58, 0x22, 0x92, 0xe0, 0x7c, 0x11, 0x82, 0x47, 0x83, +0x82, 0x4b, 0x0f, 0x0e, 0x41, 0x42, 0x0d, 0x70, 0x20, 0x0b, 0x70, 0x12, 0x48, 0x09, 0x48, 0x93, +0x66, 0x55, 0xdc, 0x5b, 0x2b, 0xa5, 0x53, 0xc0, 0xa7, 0xb2, 0xb7, 0x04, 0x95, 0x33, 0x0d, 0x84, +0xdb, 0xb4, 0xcc, 0x29, 0x0d, 0xb0, 0xcc, 0xf8, 0x0d, 0x30, 0x19, 0xf9, 0x76, 0xbd, 0x85, 0xf7, +0x61, 0xb7, 0xec, 0x45, 0x53, 0xdd, 0xd7, 0x32, 0x0d, 0x26, 0x98, 0xb0, 0x1b, 0x66, 0x5a, 0x40, +0xdb, 0x05, 0xde, 0xc0, 0x0d, 0x29, 0x01, 0xc9, 0x0d, 0x03, 0x96, 0xe9, 0xe7, 0x5e, 0x09, 0x94, +0x10, 0xb2, 0x19, 0x86, 0x1e, 0xe3, 0xf5, 0xc0, 0x80, 0x6e, 0xe1, 0x30, 0xe0, 0xce, 0xdf, 0x03, +0x36, 0x99, 0xc6, 0x37, 0x90, 0xc6, 0x0d, 0xcb, 0x80, 0xd9, 0x84, 0x65, 0xfb, 0xdb, 0x12, 0x26, +0xc6, 0xb1, 0x09, 0xeb, 0xc6, 0x0b, 0x84, 0xa4, 0xc6, 0xc5, 0x83, 0x07, 0xcf, 0x7f, 0x06, 0x24, +0xcd, 0x30, 0x6b, 0xeb, 0x2b, 0x19, 0xcb, 0x43, 0xde, 0x0e, 0x7c, 0xc1, 0x6f, 0x66, 0xf3, 0x01, +0x03, 0xc7, 0x60, 0x42, 0x66, 0x09, 0x33, 0xc5, 0xb1, 0x2d, 0x61, 0x17, 0xb7, 0xec, 0x0d, 0xb5, +0x29, 0xc0, 0xb2, 0xa7, 0x80, 0x65, 0xbd, 0x40, 0xc2, 0xbb, 0x60, 0x65, 0xb9, 0x90, 0x30, 0xb7, +0xb3, 0x18, 0xb5, 0x53, 0x48, 0x06, 0x5a, 0x24, 0x0c, 0xb1, 0x73, 0x06, 0xaf, 0x63, 0xb0, 0x6d, +0x6e, 0xc3, 0x85, 0x1f, 0x0d, 0x0c, 0xf8, 0x36, 0x6e, 0xda, 0xac, 0x03, 0xdc, 0xd8, 0xaa, 0x01, +0x0b, 0x32, 0xe0, 0xa8, 0xa6, 0x19, 0x10, 0xa3, 0x03, 0x02, 0x9f, 0xe0, 0x2a, 0xf8, 0xb0, 0x32, +0x9b, 0x5b, 0x18, 0x99, 0xb6, 0x03, 0xce, 0x95, 0x01, 0x2b, 0x60, 0x90, 0x93, 0xb0, 0x32, 0x8f, +0x03, 0x1e, 0x8d, 0x8b, 0x01, 0x29, 0x80, 0x95, 0x89, 0x60, 0xc8, 0x87, 0x1f, 0xac, 0x30, 0x83, +0x42, 0x06, 0x51, 0x2b, 0x03, 0x7d, 0x94, 0x01, 0x7b, 0xd9, 0x80, 0x77, 0x1f, 0xc0, 0x08, 0x03, +0x66, 0x75, 0x73, 0x01, 0x2b, 0x30, 0xe0, 0x71, 0x6f, 0x07, 0x8c, 0x6d, 0xca, 0x80, 0x6b, 0x65, +0x40, 0x69, 0xc8, 0x80, 0x67, 0x65, 0xc0, 0x65, 0x01, 0x6e, 0x1b, 0x70, 0x85, 0x61, 0x3f, 0x46, +0x18, 0x5d, 0x18, 0xf0, 0xd1, 0x59, 0x01, 0x53, 0xff, 0x70, 0x85, 0x55, 0xf8, 0x02, 0x18, 0x51, +0x20, 0x03, 0x4d, 0x64, 0x40, 0x49, 0x0c, 0x08, 0x47, 0x30, 0xad, 0x3f, 0x38, 0x0c, 0x44, 0x78, +0xb0, 0x0c, 0x42, 0x60, 0x19, 0x41, 0x90, 0x30, 0x3f, 0x20, 0x19, 0x3d, 0x18, 0x30, 0x3c, 0x7e, +0x0c, 0x0c, 0x3a, 0x60, 0x06, 0x38, 0x30, 0x30, 0x37, 0x6b, 0x19, 0x35, 0x1d, 0x93, 0x91, 0x1d, +0xfe, 0x03, 0x26, 0x31, 0x03, 0x2e, 0xee, 0x2f, 0x80, 0x03, 0x3c, 0x80, 0xc9, 0x2c, 0x7e, 0x96, +0xc0, 0x2a, 0x29, 0x6b, 0xad, 0x78, 0x0b, 0x8f, 0xc2, 0x62, 0x1e, 0xbf, 0x65, 0x40, 0x25, 0x32, +0x60, 0x22, 0x65, 0xc0, 0x20, 0x32, 0x20, 0x1e, 0x60, 0xc0, 0x1c, 0x0c, 0x48, 0x19, 0x01, 0x23, +0x03, 0x96, 0x17, 0x15, 0x64, 0xc0, 0x12, 0x06, 0x0c, 0x18, 0x0f, 0x80, 0x43, 0x3c, 0x1c, 0xc0, +0xca, 0x0d, 0x20, 0x64, 0x0b, 0x2e, 0x30, 0x08, 0x08, 0x2c, 0x03, 0x05, 0x80, 0x03, 0xfc, 0x0c, +0x70, 0xfb, 0xf6, 0xa0, 0x01, 0xf5, 0x6c, 0x00, 0x13, 0xee, 0xda, 0x82, 0xe9, 0x06, 0x38, 0x6b, +0x85, 0x61, 0x0d, 0x0f, 0xd0, 0xda, 0x10, 0x05, 0x20, 0x08, 0xd7, 0x40, 0x10, 0xd1, 0x80, 0x20, +0xcb, 0xf0, 0x41, 0xc5, 0x0f, 0x07, 0x0f, 0x7d, 0x01, 0x0c, 0xbf, 0xba, 0x03, 0x04, 0xb4, 0x50, +0x80, 0xb3, 0xc0, 0x0f, 0xae, 0x67, 0xe6, 0xc0, 0x06, 0x30, 0xa7, 0xa8, 0x75, 0x80, 0x80, 0xa1, +0x03, 0x2c, 0xef, 0x02, 0x9b, 0x38, 0xc0, 0x02, 0x42, 0x00, 0x06, 0x33, 0x06, 0x98, 0x8f, 0x8a, +0xc0, 0x00, 0x89, 0xbb, 0xdb, 0xae, 0x61, 0x49, 0x3c, 0x86, 0x7c, 0xd0, 0xef, 0x05, 0x27, 0x26, +0x4d, 0x80, 0xff, 0x72, 0xc0, 0x3b, 0x35, 0x0f, 0x80, 0x24, 0x65, 0x09, 0x70, 0x5f, 0x59, 0x03, +0x7c, 0x24, 0x66, 0xff, 0x12, 0xf1, 0x80, 0x9f, 0xc0, 0x8b, 0xef, 0x2e, 0x6f, 0x20, 0x3d, 0x46, +0x00, 0x1d, 0x7c, 0x24, 0x8f, 0x86, 0x31, 0x57, 0xdb, 0xea, 0x18, 0x3e, 0x60, 0x58, 0x7c, 0x29, +0x80, 0x86, 0xd7, 0x07, 0x78, 0x23, 0x38, 0x1e, 0x24, 0xab, 0x76, 0xcc, 0xc3, 0x34, 0xf9, 0x30, +0x0f, 0x00, 0xe6, 0x0c, 0x01, 0x92, 0x06, 0x00, 0x83, 0x2d, 0x2b, 0x7e, 0x1a, 0x08, 0xd6, 0xc7, +0xb0, 0xe8, 0xb7, 0xab, 0x47, 0xd6, 0xc3, 0xdd, 0xab, 0x58, 0xc2, 0xc9, 0xf7, 0xe2, 0x1c, 0xe5, +0x07, 0xea, 0x55, 0x3c, 0xb3, 0x0f, 0xce, 0xca, 0x1e, 0x6a, 0x5c, 0xbd, 0xfc, 0x0f, 0xbf, 0xa6, +0xae, 0xbe, 0x7c, 0x43, 0x3d, 0x62, 0x79, 0xb1, 0xab, 0xef, 0x02, 0x07, 0x7e, 0xab, 0xab, 0x17, +0x74, 0x62, 0xbc, 0x37, 0x77, 0x67, 0xb2, 0x7a, 0xaa, 0x94, 0xab, 0x47, 0xa6, 0x8d, 0xcd, 0xea, +0x7c, 0x88, 0xed, 0xca, 0x07, 0x82, 0xc0, 0x78, 0xc4, 0xe2, 0x87, 0x37, 0xaf, 0x4e, 0x6f, 0x75, +0x60, 0x68, 0xc3, 0x38, 0xf5, 0xca, 0xd0, 0x6b, 0x58, 0x7c, 0x69, 0xfe, 0x4a, 0xa1, 0xd9, 0xfe, +0x07, 0xf5, 0x57, 0x9f, 0x1f, 0xce, 0x57, 0x05, 0x2b, 0x52, 0x2d, 0x58, 0x4d, 0x2f, 0x06, 0xab, +0x1e, 0x45, 0xe6, 0x1a, 0x8c, 0x7f, 0xf0, 0x55, 0xb0, 0x39, 0x27, 0x26, 0xa1, 0x6d, 0xa0, 0x13, +0x6c, 0x7a, 0xc3, 0x5e, 0x6f, 0xfc, 0x3d, 0x45, 0x0f, 0xce, 0x7c, 0x0e, 0xda, 0x8b, 0x37, 0x5f, +0x2b, 0xe7, 0xa8, 0x7f, 0x0b, 0x2c, 0xde, 0x57, 0x3d, 0x08, 0x35, 0x56, 0x41, 0x2a, 0xf8, 0x53, +0xbd, 0x00, 0x0c, 0x46, 0x7a, 0x0f, 0x67, 0x27, 0xea, 0x9e, 0xe7, 0x32, 0x6f, 0x3c, 0x40, 0x90, +0xdf, 0x99, 0x3a, 0x97, 0xd9, 0xc5, 0x49, 0xd5, 0x3c, 0x40, 0xe0, 0xe9, 0x91, 0xa9, 0xc3, 0xba, +0xbc, 0xa9, 0x01, 0x76, 0x39, 0x35, 0x80, 0x75, 0xdc, 0x87, 0x09, 0xb8, 0x7f, 0x86, 0x44, 0x26, +0xbb, 0x87, 0x9e, 0x7c, 0x97, 0x60, 0xf8, 0x75, 0x46, 0xf5, 0x76, 0xca, 0x35, 0x09, 0xf8, 0x2f, +0x8b, 0x76, 0x92, 0xaf, 0x7c, 0x15, 0xde, 0x7f, 0x69, 0x70, 0x4f, 0x84, 0x3c, 0x17, 0x24, 0x7a, +0x00, 0xe6, 0x56, 0x22, 0xb5, 0x74, 0x30, 0xa4, 0x52, 0x2c, 0x18, 0x6d, 0x0f, 0x9a, 0x6c, 0x7c, +0x4f, 0x1e, 0x67, 0x91, 0x56, 0x5f, 0x7e, 0xa1, 0x04, 0xa3, 0x87, 0xea, 0x54, 0x4a, 0x58, 0x4c, +0x49, 0xbf, 0x90, 0x62, 0x26, 0x86, 0x54, 0x37, 0x63, 0x11, 0x00, 0x17, 0x7e, 0x83, 0x73, 0x2f, +0x37, 0xdf, 0xf5, 0x54, 0x7e, 0x21, 0x70, 0x90, 0x3a, 0x1f, 0x19, 0xe5, 0xde, 0x0c, 0x12, 0x92, +0x9a, 0x6b, 0x07, 0xa3, 0xc3, 0xc6, 0xff, 0x36, 0x1b, 0xcc, 0x5f, 0x3b, 0x46, 0xb3, 0xe7, 0xf0, +0xb3, 0x6e, 0x6f, 0xcc, 0x07, 0xb6, 0xc9, 0x60, 0x30, 0x17, 0x38, 0x09, 0x4d, 0xbf, 0x82, 0xd1, +0x70, 0xd2, 0x9d, 0x19, 0x97, 0x07, 0x30, 0x8c, 0x82, 0x3f, 0xc0, 0x98, 0x1b, 0x3c, 0x1f, 0x07, +0x8e, 0xb9, 0x17, 0x07, 0xc6, 0x10, 0x73, 0x33, 0x68, 0x47, 0x27, 0x33, 0x81, 0x0d, 0x2c, 0x3a, +0x69, 0xf8, 0xa1, 0xec, 0xa3, 0x85, 0x7f, 0x6e, 0x97, 0xd4, 0xd1, 0x96, 0xce, 0xa3, 0x60, 0x90, +0x47, 0x9b, 0x0d, 0x57, 0x07, 0x82, 0x91, 0x7e, 0x9d, 0xf0, 0x8f, 0x0f, 0xc6, 0x70, 0x9a, 0xf7, +0x98, 0x7a, 0xef, 0x17, 0x0e, 0x27, 0xa6, 0x66, 0x4a, 0x55, 0x80, 0x23, 0x47, 0x5a, 0x59, 0xc8, +0x11, 0x1d, 0x42, 0xc5, 0x53, 0x18, 0x1d, 0xfd, 0xfa, 0xc6, 0xcf, 0xc6, 0xc7, 0x48, 0x3c, 0xa3, +0x47, 0x47, 0x42, 0xb3, 0x37, 0xf7, 0x9f, 0xf6, 0x62, 0xff, 0x3f, 0x5f, 0x30, 0x0a, 0x2a, 0x31, +0xdc, 0x07, 0xb8, 0x4a, 0x46, 0x1f, 0xd1, 0x30, 0x19, 0x93, 0x9b, 0x12, 0x08, 0xa1, 0x0d, 0xa3, +0x06, 0xe6, 0xbf, 0x07, 0x63, 0xe6, 0x6c, 0x7e, 0x33, 0x66, 0xcc, 0x0f, 0xa1, 0xf6, 0x7a, 0x36, +0x6a, 0xdf, 0x11, 0xf4, 0xee, 0x35, 0x10, 0x16, 0xdd, 0xc3, 0x66, 0x33, 0xcf, 0x66, 0x09, 0x22, +0x42, 0xb3, 0x88, 0x01, 0xd9, 0x10, 0x1a, 0xd4, 0x95, 0xd0, 0xca, 0x34, 0xa1, 0x9a, 0xa1, 0x21, +0xbe, 0xb8, 0x08, 0x0d, 0xb2, 0x48, 0x68, 0xac, 0x96, 0xd0, 0xa0, 0xd0, 0x84, 0x9a, 0x84, 0x86, +0x94, 0x8e, 0x84, 0x0e, 0xf8, 0x82, 0x08, 0x05, 0x7c, 0x08, 0x1d, 0xff, 0x70, 0x16, 0x0b, 0x0f, +0x1f, 0x10, 0x1a, 0x5e, 0x3c, 0x14, 0x52, 0x37, 0xa1, 0x84, 0x4c, 0x25, 0x34, 0x46, 0xd0, 0xa1, +0x40, 0x84, 0x96, 0x3a, 0x34, 0x21, 0x34, 0x2e, 0x0d, 0xa1, 0x28, 0x6e, 0x09, 0x22, 0x0f, 0xa1, +0x61, 0x6f, 0x10, 0x42, 0x01, 0x0a, 0x31, 0x5b, 0x77, 0x6f, 0x60, 0xfe, 0x27, 0x06, 0x16, 0xf2, +0x78, 0xc3, 0xd7, 0x27, 0x31, 0xb0, 0xdd, 0x62, 0x60, 0xd7, 0xc4, 0xc0, 0xcb, 0x17, 0x93, 0x81, +0xc8, 0xc1, 0x88, 0x45, 0x78, 0xbc, 0xb3, 0xd8, 0x5d, 0xfe, 0xb6, 0x18, 0x16, 0xb0, 0x16, 0xb1, +0xab, 0xa9, 0x60, 0x71, 0x7e, 0xa3, 0xe2, 0x8b, 0x9c, 0xc0, 0x16, 0xc3, 0x98, 0x92, 0xf1, 0x22, +0x91, 0xc7, 0xe9, 0xd6, 0x97, 0x86, 0xe2, 0x8b, 0x85, 0x0e, 0x2c, 0xc6, 0x80, 0x3c, 0x7a, 0xef, +0xd5, 0x8f, 0x07, 0x0b, 0x17, 0x73, 0x6f, 0xf5, 0xa2, 0x7e, 0x6d, 0xde, 0x9b, 0xff, 0x66, 0x01, +0x36, 0x0c, 0x2e, 0x29, 0x17, 0x81, 0x9e, 0x07, 0x5e, 0x38, 0x05, 0x4f, 0x25, 0x2c, 0x4b, 0xcc, +0xe2, 0x7f, 0x3e, 0x63, 0x59, 0x38, 0x87, 0x90, 0xc5, 0x2c, 0x2c, 0xbe, 0x06, 0x0f, 0x1f, 0x62, +0x31, 0x1b, 0xc2, 0xbd, 0xdd, 0x50, 0x5d, 0x45, 0x3d, 0x79, 0x3c, 0x88, 0x24, 0x20, 0x37, 0x33, +0x81, 0x4c, 0x1c, 0x39, 0x52, 0x03, 0x69, 0x26, 0x11, 0x84, 0x20, 0x90, 0x16, 0x22, 0x00, 0x78, +0xf9, 0x04, 0x7c, 0xce, 0xd6, 0xe6, 0x7c, 0x40, 0x2b, 0x83, 0x33, 0xda, 0x7b, 0x1c, 0x1d, 0x1e, +0x50, 0xc3, 0x1f, 0x10, 0xe7, 0x7c, 0x01, 0x61, 0x33, 0x76, 0x3f, 0x7c, 0x82, 0xb2, 0xaa, 0xaa, +0x02, 0x82, 0x7c, 0xc2, 0x20, 0x33, 0xd4, 0x2a, 0x2c, 0xa2, 0x8d, 0xa3, 0x85, 0x85, 0x0f, 0x2d, +0xe4, 0x60, 0x30, 0xdd, 0xc5, 0xef, 0x9a, 0xa2, 0x00, 0x9a, 0x20, 0x62, 0xef, 0x84, 0xca, 0x33, +0x95, 0x45, 0x53, 0xb2, 0x88, 0x43, 0x06, 0x11, 0x33, 0x1a, 0x44, 0x11, 0xb3, 0xd0, 0xb9, 0x64, +0x93, 0x0c, 0x88, 0x84, 0xff, 0x28, 0x32, 0x33, 0x6a, 0x52, 0x0f, 0x82, 0x31, 0x41, 0xc6, 0xf3, +0xb1, 0x83, 0x34, 0x18, 0x2c, 0x06, 0x92, 0xa0, 0x03, 0x43, 0xe4, 0xf6, 0xbf, 0x30, 0x8a, 0x53, +0x0b, 0xbb, 0xc6, 0x0f, 0x30, 0x8a, 0x30, 0x73, 0x46, 0x0c, 0x1c, 0xe4, 0x48, 0x0f, 0x5a, 0x12, +0x03, 0x61, 0x06, 0xc4, 0x0f, 0x42, 0x72, 0x00, 0xca, 0x20, 0x33, 0x9b, 0x85, 0x40, 0x47, 0xec, +0x05, 0x9f, 0x7f, 0x85, 0x85, 0x36, 0x04, 0xbd, 0x9f, 0x88, 0x91, 0x43, 0xde, 0x32, 0x33, 0xff, +0xec, 0xc2, 0x1f, 0x30, 0x2f, 0x30, 0xac, 0xd2, 0x16, 0xa4, 0xf4, 0x0c, 0x31, 0x5b, 0x0f, 0x56, +0x06, 0x33, 0xfa, 0x00, 0xc3, 0x7c, 0x01, 0x01, 0xa3, 0x14, 0xb3, 0xf0, 0x0e, 0x90, 0xef, 0x2c, +0x8f, 0xc6, 0x49, 0x37, 0x7f, 0xc6, 0x09, 0x0b, 0x0f, 0xe2, 0x55, 0x11, 0xb7, 0xa4, 0x73, 0x0c, +0x90, 0x20, 0x73, 0x85, 0x91, 0x39, 0x81, 0xbd, 0x5f, 0x00, 0x2d, 0x21, 0xbb, 0x42, 0x16, 0x10, +0x09, 0xa1, 0xe7, 0x8a, 0x6f, 0xbd, 0x30, 0x62, 0x36, 0xec, 0xd1, 0x32, 0xa3, 0x56, 0x59, 0x33, +0xc8, 0x20, 0x33, 0x59, 0xd1, 0x0b, 0x59, 0x34, 0x78, 0x1d, 0xcd, 0x18, 0x94, 0xb0, 0x95, 0x2a, +0x0a, 0x1e, 0x11, 0xd0, 0x82, 0xcb, 0x0f, 0x7c, 0x20, 0x9a, 0x21, 0x7c, 0x22, 0xc0, 0x33, 0x45, +0x8a, 0x03, 0x5a, 0x1d, 0xcf, 0x83, 0xb8, 0xe6, 0x7c, 0x80, 0x33, 0x01, 0x23, 0x0c, 0x98, 0xcb, +0xca, 0x02, 0x90, 0x13, 0x0c, 0x62, 0x33, 0x8c, 0x02, 0x00, 0x07, 0xb3, 0x06, 0xf1, 0xb2, 0x33, +0x02, 0x05, 0x01, 0x03, 0x9b, 0x84, 0x01, 0x99, 0xc2, 0x80, 0x97, 0x65, 0x40, 0x95, 0xf1, 0x80, +0x94, 0x44, 0x06, 0x33, 0x2c, 0x22, 0x0f, 0x07, 0x8c, 0x89, 0x41, 0x98, 0x02, 0x90, 0x33, 0x2e, +0x03, 0x79, 0x76, 0x03, 0x03, 0x77, 0x83, 0x70, 0xdf, 0x33, 0xa4, 0x0a, 0x4b, 0x06, 0x67, 0x03, +0x60, 0x40, 0x65, 0x04, 0x68, 0xe9, 0x16, 0x99, 0xf6, 0x95, 0x10, 0x8a, 0xcf, 0x03, 0x3b, 0xc6, +0x0d, 0x12, 0x8a, 0x30, 0xeb, 0x42, 0xb1, 0x0b, 0x32, 0x60, 0x59, 0x90, 0xdf, 0x0d, 0x3c, 0x66, +0x09, 0x39, 0x00, 0x64, 0x10, 0x33, 0xc4, 0x42, 0x38, 0x80, 0x20, 0x57, 0xec, 0xc0, 0x49, 0x3c, +0x22, 0x03, 0xce, 0x45, 0x88, 0x23, 0x7c, 0x10, 0x32, 0x33, 0x60, 0x19, 0x41, 0x64, 0x26, 0x56, +0x29, 0x30, 0x60, 0x30, 0xb7, 0x6c, 0x7c, 0x0a, 0x0d, 0x32, 0x88, 0x33, 0x1e, 0xb0, 0x37, 0xe4, +0x03, 0x35, 0xe0, 0x1e, 0x30, 0x34, 0x2e, 0x03, 0x33, 0x7c, 0x42, 0xc6, 0x6f, 0xc6, 0x60, 0x59, +0x0d, 0xc5, 0x32, 0x2d, 0x03, 0x1c, 0xcb, 0x2b, 0x13, 0x2c, 0x1a, 0xca, 0x80, 0x27, 0x56, 0x34, +0x56, 0x80, 0x14, 0x78, 0xc0, 0x1f, 0x63, 0x36, 0xec, 0x34, 0xa3, 0x15, 0x54, 0x46, 0x73, 0xc0, +0x80, 0x19, 0x06, 0x3c, 0x18, 0x70, 0x15, 0x32, 0x60, 0x13, 0x03, 0x06, 0x18, 0x0f, 0xc0, 0x02, +0x20, 0x62, 0x0d, 0x00, 0xc2, 0x33, 0x47, 0x83, 0x5f, 0xc4, 0xa3, 0x5e, 0x3d, 0x18, 0x33, 0x00, +0x3a, 0x6c, 0x30, 0xda, 0x0f, 0x6c, 0xb8, 0x4e, 0x18, 0xc4, 0x33, 0x28, 0x14, 0x0e, 0xcd, 0x0c, +0x39, 0xc2, 0x20, 0x33, 0x68, 0x09, 0x97, 0x16, 0x89, 0x6b, 0x9c, 0xc9, 0xb3, 0x07, 0x60, 0x30, +0xd0, 0xa1, 0xb2, 0x0c, 0xe2, 0xb1, 0x33, 0x11, 0xa1, 0x88, 0x20, 0x43, 0x44, 0x90, 0x3b, 0x10, +0x19, 0x33, 0x30, 0xa1, 0x5e, 0xc4, 0xec, 0x17, 0x7f, 0x10, 0x19, 0x33, 0xdf, 0xa1, 0x28, 0xcd, +0x76, 0xe2, 0xd0, 0x18, 0x6c, 0x22, 0x95, 0x8f, 0x9b, 0xf6, 0x22, 0x0e, 0x19, 0xb1, 0xd6, 0x44, +0x59, 0x06, 0x45, 0x6c, 0x07, 0x30, 0x10, 0x92, 0x53, 0x9f, 0x22, 0x50, 0xe6, 0x16, 0x2c, 0xfb, +0x06, 0x10, 0x6e, 0x07, 0x0a, 0x65, 0x33, 0x1b, 0x24, 0x20, 0x30, 0x3f, 0x86, 0x05, 0x1b, 0x1c, +0x11, 0x57, 0x12, 0xc1, 0x20, 0x33, 0xf0, 0x0e, 0x5f, 0x0f, 0x16, 0xef, 0x5f, 0x07, 0x9f, 0x8b, +0x0d, 0x7c, 0xef, 0x27, 0x19, 0xc4, 0x33, 0x3c, 0x8a, 0x5a, 0x2f, 0x5e, 0x89, 0x93, 0x45, 0x73, +0x07, 0x47, 0x98, 0x9b, 0x6f, 0xbf, 0x07, 0x23, 0xd8, 0x30, 0x0f, 0x4f, 0x5f, 0x84, 0xd3, 0x0c, +0xf1, 0x0e, 0x79, 0x77, 0x63, 0x65, 0x6b, 0x4d, 0x19, 0xc4, 0x33, 0xc1, 0x22, 0x53, 0x40, 0xff, +0xe1, 0x32, 0xe4, 0x3a, 0xf6, 0x2a, 0x5f, 0x86, 0xa0, 0x20, 0x34, 0x45, 0x12, 0x33, 0x8b, 0x81, +0x3e, 0x35, 0x8b, 0x87, 0x87, 0x2e, 0x8b, 0x21, 0x18, 0x21, 0x20, 0x0e, 0x3c, 0x6c, 0xf1, 0x2b, +0x7a, 0x78, 0x90, 0x41, 0x33, 0x01, 0x39, 0xb5, 0x72, 0xc1, 0x93, 0x54, 0x9d, 0x4c, 0x44, 0x56, +0x67, 0x4a, 0x52, 0x09, 0x80, 0x68, 0x44, 0x35, 0xca, 0x2a, 0xa7, 0x05, 0xe6, 0xc0, 0x5a, 0x59, +0x67, 0x80, 0x1f, 0xff, 0x1a, 0x1e, 0x1c, 0x8b, 0x8d, 0x37, 0x58, 0xd6, 0x56, 0xc1, 0x67, 0xa5, +0x46, 0x49, 0x64, 0x01, 0x83, 0x4c, 0x36, 0x33, 0x12, 0x7c, 0x65, 0x15, 0x67, 0x10, 0x6e, 0x6c, +0x60, 0x49, 0x97, 0x29, 0xab, 0x67, 0x88, 0x70, 0x1f, 0x05, 0x4b, 0x27, 0x4b, 0x59, 0x67, 0x37, +0x16, 0x44, 0xb7, 0xac, 0x12, 0x3f, 0x48, 0x16, 0x5f, 0xca, 0x2a, 0x67, 0x65, 0x9f, 0x00, 0xf6, +0x62, 0x64, 0x3f, 0xc8, 0xbb, 0x00, 0x76, 0x32, 0x34, 0x30, 0x88, 0xd9, 0x78, 0x4f, 0x2c, 0x2c, +0xa7, 0x80, 0x38, 0x1f, 0x05, 0xcb, 0xb7, 0x17, 0x59, 0x67, 0x36, 0x2c, 0x88, 0x1c, 0xd7, 0x88, +0x87, 0x06, 0x12, 0x34, 0x0d, 0x0c, 0xe7, 0x93, 0xbf, 0xbf, 0x64, 0x6c, 0x78, 0x70, 0xe0, 0xe0, +0x65, 0x10, 0x33, 0x09, 0x20, 0xd6, 0x58, 0x82, 0x8f, 0xca, 0x2a, 0x67, 0x25, 0xac, 0x5f, 0x09, +0xd5, 0x18, 0xa1, 0xdc, 0xb0, 0x4f, 0x0f, 0x90, 0xd0, 0x6d, 0x8f, 0x41, 0xbc, 0x7f, 0x21, 0x21, +0x37, 0x7f, 0x92, 0x2d, 0x3f, 0x59, 0x10, 0xff, 0x0f, 0x57, 0x85, 0xaf, 0x29, 0x1e, 0x54, 0xf0, +0xe8, 0x65, 0xc3, 0x8f, 0x3f, 0x21, 0xb8, 0xf4, 0xcf, 0x0b, 0x22, 0x07, 0x1e, 0x03, 0x5f, 0xc8, +0x20, 0x33, 0x25, 0x8b, 0x41, 0x0b, 0xfd, 0x18, 0x59, 0x63, 0x70, 0xcb, 0x0f, 0xaf, 0x2a, 0x83, +0x33, 0xc8, 0x18, 0x18, 0xff, 0x84, 0xd9, 0x12, 0x2f, 0x19, 0xc4, 0x33, 0x6d, 0x15, 0xd4, 0x68, +0x61, 0xff, 0x61, 0x9c, 0x49, 0x1f, 0x30, 0x88, 0x33, 0x9c, 0x00, 0x0c, 0x7e, 0x21, 0x45, 0x27, +0x0c, 0x22, 0x33, 0xe2, 0xb0, 0xaf, 0x0b, 0x81, 0x47, 0x91, 0x90, 0xc6, 0x29, 0xc2, 0x7f, 0x67, +0xe2, 0x2d, 0x2f, 0x2c, 0x09, 0x67, 0x95, 0x41, 0x33, 0x0e, 0x69, 0x8f, 0xfe, 0x06, 0x71, 0x33, +0x62, 0x55, 0x03, 0x2b, 0xf7, 0x06, 0x1c, 0x4f, 0x8d, 0x62, 0x59, 0x3f, 0xaa, 0x0c, 0x33, 0xc2, +0xdc, 0x2f, 0xdf, 0x62, 0x52, 0x8f, 0x2d, 0x29, 0xc7, 0xb7, 0xec, 0xcf, 0x0f, 0x0d, 0x8d, 0x2c, +0xef, 0xcd, 0x9a, 0xef, 0xef, 0x81, 0xe2, 0x4f, 0xc7, 0x20, 0x26, 0xf6, 0xd8, 0xca, 0x33, 0x5f, +0x29, 0x22, 0xe7, 0x78, 0x30, 0x0f, 0x08, 0x83, 0x33, 0x15, 0xb1, 0x86, 0x80, 0x07, 0x0f, 0x65, +0x10, 0x33, 0x98, 0x0b, 0x5f, 0x00, 0x96, 0x56, 0x43, 0x3c, 0x12, 0x00, 0xfc, 0x51, 0x10, 0x88, +0x85, 0x71, 0x28, 0x30, 0x33, 0xa4, 0xec, 0x18, 0x37, 0x04, 0x1e, 0xff, 0x7f, 0x04, 0xb7, 0x3a, +0x3f, 0x96, 0xb0, 0x7f, 0x05, 0x13, 0x2f, 0x45, 0x59, 0x67, 0x68, 0x14, 0x55, 0x60, 0x6d, 0xcc, +0x91, 0x9f, 0xc0, 0xb2, 0x0a, 0x67, 0x18, 0x30, 0xf5, 0xf0, 0x22, 0xa4, 0x84, 0x55, 0x67, 0xcb, +0x80, 0xf1, 0xc0, 0x80, 0x7c, 0xef, 0xab, 0xe0, 0x7c, 0x67, 0x70, 0x21, 0x5e, 0x40, 0x82, 0x31, +0x65, 0x40, 0xe9, 0x41, 0xbc, 0x1b, 0x82, 0x65, 0x8f, 0x2c, 0xac, 0x67, 0x1b, 0x06, 0xe3, 0x0d, +0x19, 0x10, 0xe1, 0x55, 0x70, 0x3c, 0x20, 0x94, 0x67, 0x62, 0x33, 0xdb, 0x37, 0x2e, 0x03, 0xd9, +0x78, 0x2c, 0x03, 0xd7, 0x96, 0x10, 0x9b, 0x30, 0x20, 0x6d, 0x56, 0xc1, 0x67, 0x80, 0x15, 0x80, +0xcb, 0xcf, 0x3c, 0x40, 0xc0, 0xcd, 0x6f, 0x67, 0xcc, 0x78, 0x08, 0x3c, 0x38, 0x70, 0xa2, 0xd0, +0xf2, 0x36, 0x3f, 0x8d, 0x0c, 0x33, 0x87, 0x19, 0x47, 0x4f, 0x59, 0x05, 0x67, 0x84, 0x41, 0x33, +0x00, 0x94, 0xcd, 0x82, 0xb6, 0x45, 0x82, 0xa1, 0x0d, 0xca, 0x5d, 0x0c, 0x58, 0xb7, 0x61, 0xb6, +0xfb, 0x4f, 0x86, 0x2d, 0x37, 0x62, 0x13, 0xbf, 0x0d, 0x3b, 0x03, 0xb1, 0x66, 0x7d, 0x86, 0x25, +0x37, 0x96, 0xe0, 0xd5, 0x95, 0x92, 0x20, 0x93, 0x88, 0xc7, 0x13, 0xaa, 0x30, 0x33, 0x02, 0x49, +0x56, 0xf0, 0xed, 0x9d, 0x12, 0x06, 0xcd, 0x20, 0x5a, 0x99, 0x86, 0xc8, 0x33, 0x18, 0xb6, 0x30, +0x9f, 0x10, 0x31, 0x61, 0x09, 0x15, 0x06, 0x33, 0x0c, 0x58, 0x79, 0x06, 0x04, 0x77, 0x10, 0x07, +0x76, 0x01, 0x65, 0x33, 0xc1, 0x80, 0x65, 0x32, 0x88, 0x76, 0x33, 0x19, 0x10, 0x61, 0x10, 0x2f, +0x0d, 0x20, 0x61, 0x33, 0xe0, 0x32, 0x5d, 0x76, 0x91, 0x30, 0x5b, 0x45, 0x06, 0x33, 0x19, 0xa4, +0x1d, 0xfe, 0x19, 0xc4, 0x33, 0x88, 0x14, 0xb1, 0xa4, 0xe5, 0x32, 0xa0, 0x05, 0x49, 0x0c, 0xe2, +0x7c, 0x33, 0x40, 0x8a, 0x20, 0x60, 0x3f, 0x90, 0x30, 0x3d, 0x4b, 0x18, 0x3b, 0x0b, 0x16, 0xd6, +0x51, 0x66, 0xcd, 0xd1, 0x51, 0x2e, 0x03, 0x35, 0xe6, 0xc8, 0x20, 0x33, 0x65, 0x40, 0x31, 0x78, +0xc0, 0xf0, 0x2f, 0x02, 0x83, 0x33, 0x14, 0x11, 0x88, 0x97, 0x13, 0x0c, 0x38, 0x04, 0x32, 0x33, +0x14, 0x06, 0x23, 0x0c, 0xf8, 0x30, 0x1c, 0x6c, 0x38, 0x1d, 0x10, 0x2b, 0x01, 0x60, 0x33, 0xc0, +0x8c, 0xf5, 0x63, 0x65, 0x0f, 0x21, 0x80, 0x30, 0x17, 0xcb, 0x80, 0x0b, 0xac, 0x82, 0xf0, 0x67, +0x08, 0x02, 0x70, 0x10, 0x09, 0xc9, 0x2a, 0x87, 0xb1, 0x07, 0x61, 0x05, 0x87, 0x5c, 0xb5, 0xac, +0xab, 0xe0, 0x30, 0x70, 0xdc, 0x67, 0x0a, 0x06, 0x63, 0x18, 0x4d, 0x73, 0xc0, 0x55, 0x30, 0x7c, +0xfe, 0x83, 0x67, 0x0c, 0x18, 0xfe, 0x86, 0x1c, 0x70, 0xc2, 0xfe, 0x68, 0x41, 0x0f, 0xc4, 0x2a, +0xe1, 0x60, 0x15, 0x67, 0x67, 0xe8, 0x0c, 0xd8, 0x21, 0x07, 0xc6, 0x68, 0x06, 0x6c, 0xa5, 0x3c, +0xb2, 0x0a, 0x67, 0xef, 0x16, 0x07, 0xc2, 0xc4, 0x1f, 0xa3, 0x02, 0x88, 0x8d, 0x60, 0x17, 0x37, +0x7e, 0xc2, 0x0b, 0xdc, 0x17, 0x86, 0xfc, 0xdb, 0x00, 0x5e, 0x10, 0x08, 0xb2, 0x0a, 0x67, 0x78, +0x14, 0x63, 0xed, 0xb1, 0x2d, 0x23, 0x61, 0xf2, 0x2e, 0x1b, 0x88, 0x68, 0xd9, 0x3c, 0x78, 0xc3, +0xe8, 0xf0, 0x30, 0x3e, 0x4e, 0x31, 0x6b, 0x04, 0xc1, 0x50, 0x06, 0x33, 0x1e, 0xbd, 0xad, 0x27, +0x1e, 0xcd, 0x25, 0x21, 0xe2, 0xcd, 0xc7, 0x5f, 0x99, 0x01, 0xcf, 0xbd, 0x8b, 0xb9, 0x1f, 0xfd, +0x07, 0x7c, 0x74, 0x7c, 0xc2, 0x05, 0xc2, 0xc5, 0x1e, 0x67, 0x1f, 0xd9, 0xac, 0x27, 0xe7, 0xa5, +0x10, 0x86, 0x2f, 0x05, 0x60, 0x33, 0x40, 0xb8, 0xbf, 0x3c, 0xe1, 0x5b, 0x05, 0x30, 0xe0, 0x95, +0x41, 0x33, 0xf2, 0x2c, 0xb7, 0x18, 0x18, 0x0c, 0x62, 0x33, 0x43, 0x88, 0xf9, 0xc9, 0x87, 0x11, +0xc6, 0x7c, 0x32, 0x88, 0x33, 0x12, 0xa1, 0xc8, 0x98, 0xd0, 0x3e, 0x9f, 0x30, 0x83, 0x33, 0xc4, +0x60, 0xcd, 0xfc, 0x3f, 0x18, 0x33, 0x00, 0x3b, 0x19, 0x1a, 0x78, 0xc2, 0xc4, 0xd8, 0xd8, 0x18, +0x11, 0x0b, 0xa0, 0x42, 0x06, 0x33, 0x38, 0x1c, 0xc7, 0x79, 0x28, 0x83, 0x33, 0x4e, 0x6a, 0x7e, +0x0d, 0x38, 0x18, 0x2c, 0xd1, 0x7c, 0x28, 0x83, 0x33, 0xcc, 0x5a, 0x17, 0x6f, 0xbd, 0x5f, 0x56, +0xe6, 0xc6, 0x11, 0x13, 0x86, 0x07, 0x71, 0x11, 0x0c, 0xff, 0xd1, 0x6e, 0x6b, 0x1f, 0xaa, 0xfc, +0x39, 0x32, 0x88, 0x0c, 0x23, 0x63, 0x7b, 0xce, 0xf0, 0xe0, 0xb8, 0x63, 0x88, 0x19, 0xc4, 0x33, +0xf1, 0x5d, 0x18, 0x88, 0x0e, 0x0c, 0xa2, 0x07, 0x33, 0x58, 0x84, 0x5f, 0xf1, 0x58, 0x67, 0x62, +0x61, 0x4d, 0x08, 0x0c, 0x33, 0x6f, 0x42, 0xb1, 0x4f, 0xb9, 0x19, 0xbf, 0x1c, 0xb6, 0xf6, 0xa0, +0xce, 0x07, 0x97, 0xd8, 0x06, 0x61, 0x33, 0xc9, 0x53, 0xe9, 0x74, 0x50, 0x7a, 0x72, 0x55, 0xd1, +0x72, 0xc8, 0x88, 0x9b, 0x49, 0x8a, 0x01, 0x50, 0x85, 0x24, 0x22, 0x06, 0x83, 0x51, 0x0f, 0x33, +0x55, 0x19, 0x9b, 0xf1, 0x68, 0x5f, 0x40, 0x06, 0x33, 0x36, 0xa1, 0x6a, 0xaf, 0x98, 0x5b, 0x0c, +0x2f, 0x88, 0x4a, 0xa1, 0xc0, 0x9b, 0x30, 0x82, 0x18, 0x53, 0x11, 0xb5, 0x2f, 0x95, 0x9b, 0x7f, +0x09, 0x54, 0xdb, 0xab, 0x60, 0x67, 0x7a, 0x0b, 0xdf, 0x4b, 0xa2, 0xfb, 0x65, 0x10, 0x33, 0x57, +0x7c, 0x08, 0x1c, 0x36, 0x88, 0x2c, 0x22, 0x7d, 0x46, 0xd4, 0x9b, 0x0b, 0x15, 0x34, 0x1b, 0x99, +0x8f, 0x12, 0x6e, 0x99, 0xbf, 0xcc, 0x59, 0x54, 0x9b, 0x54, 0x6f, 0xcc, 0x1b, 0x19, 0xab, 0x00, +0x44, 0x2d, 0x6e, 0x65, 0x9b, 0xcc, 0x5e, 0x54, 0xbb, 0x06, 0x71, 0x33, 0x56, 0x05, 0xb3, 0x0a, +0x67, 0x20, 0x22, 0xaa, 0xc8, 0x33, 0x0a, 0xda, 0xeb, 0x52, 0xc8, 0x33, 0x3f, 0xaf, 0x60, 0x33, +0x60, 0x10, 0x33, 0x2c, 0x01, 0x00, 0x28, 0x23, 0xc2, 0x2a, 0x67, 0x59, 0x80, 0xbf, 0x2a, 0x08, +0xa1, 0xc2, 0x67, 0x4a, 0x6a, 0x55, 0xdf, 0x92, 0x5c, 0x12, 0xdf, 0x56, 0xc1, 0x67, 0xd9, 0x52, +0x0c, 0xff, 0x0d, 0x6b, 0x7e, 0x2f, 0x25, 0x3d, 0xd1, 0xf8, 0xef, 0xac, 0x82, 0x67, 0xc4, 0x28, +0x21, 0x73, 0x41, 0xbf, 0xc2, 0x72, 0x74, 0x9f, 0x57, 0x41, 0x67, 0x15, 0xc8, 0x18, 0xa6, 0x8c, +0x02, 0x6c, 0x55, 0x2a, 0x84, 0x37, 0xbb, 0x77, 0xec, 0xb8, 0xae, 0xc4, 0xb1, 0x2c, 0xef, 0x45, +0x06, 0x33, 0x04, 0x4b, 0x00, 0x65, 0x15, 0x67, 0x55, 0x41, 0x31, 0xa3, 0xe9, 0xa8, 0x07, 0x33, +0x8a, 0x8c, 0x9b, 0x08, 0x37, 0x26, 0x8c, 0x30, 0x33, 0x48, 0x06, 0xe3, 0x16, 0x23, 0x51, 0x29, +0x88, 0x5a, 0x21, 0xc0, 0x9b, 0x97, 0x01, 0xd5, 0x3c, 0x64, 0x10, 0x33, 0x35, 0x4b, 0x6f, 0x96, +0x40, 0x73, 0xb2, 0x0a, 0x67, 0x64, 0xc0, 0xcb, 0xc1, 0xa3, 0x5a, 0x56, 0x56, 0x67, 0x12, 0xa8, +0x81, 0x46, 0xd4, 0x9b, 0x4b, 0x05, 0x2d, 0x5b, 0x98, 0x7d, 0x10, 0x6e, 0x98, 0xa7, 0xb2, 0x96, +0x01, 0xb4, 0x2c, 0x03, 0xb3, 0x52, 0x06, 0xb2, 0x30, 0xa2, 0x9b, 0x19, 0x30, 0xad, 0x06, 0x71, +0x78, 0x33, 0x12, 0x01, 0x33, 0x03, 0x97, 0x32, 0x88, 0x33, 0x90, 0x00, 0x63, 0x18, 0x79, 0x67, +0x15, 0x2c, 0x83, 0x98, 0x73, 0x33, 0x0d, 0x28, 0x24, 0x58, 0x5e, 0x9c, 0xc9, 0x60, 0x15, 0x67, +0x60, 0x50, 0x38, 0x33, 0x49, 0xc2, 0x2a, 0x67, 0x59, 0x03, 0x7b, 0xb7, 0xa4, 0x63, 0x10, 0xb0, +0xac, 0x0b, 0x85, 0x55, 0x67, 0xc3, 0x80, 0x37, 0x81, 0x01, 0x35, 0x56, 0xc1, 0xe6, 0x67, 0x20, +0x10, 0xd9, 0x32, 0x2d, 0xa7, 0x01, 0xa6, 0x86, 0xc1, 0x85, 0x2a, 0x18, 0x55, 0x56, 0x67, 0xc0, +0x80, 0x21, 0x1e, 0xb0, 0x20, 0x2c, 0x03, 0x1f, 0x90, 0x41, 0x33, 0x03, 0x12, 0x0d, 0x55, 0x30, +0x54, 0x80, 0x67, 0x20, 0x06, 0x44, 0xcd, 0x33, 0x17, 0x65, 0x9b, 0x7e, 0x30, 0x88, 0xc3, 0x33, +0xcc, 0x95, 0xe1, 0x51, 0x19, 0xc4, 0x4b, 0x8c, 0xa8, 0x9b, 0x51, 0x08, 0x10, 0x83, 0x75, 0x3c, +0x2e, 0x64, 0x33, 0x3f, 0x5e, 0x51, 0x3b, 0xb0, 0x0a, 0x67, 0xcc, 0x5d, 0x4f, 0x7e, 0xc0, 0xce, +0x1e, 0x8c, 0x4e, 0x1e, 0x33, 0x00, 0x82, 0x87, 0x93, 0x78, 0x28, 0xac, 0x67, 0xc5, 0x5c, 0x41, +0x47, 0x51, 0xcc, 0x07, 0x5f, 0xc7, 0xc0, 0xaf, 0xa1, 0x0e, 0xdb, 0xc0, 0x6d, 0xb5, 0xf8, 0x30, +0x15, 0x4c, 0x92, 0xff, 0x64, 0x67, 0x70, 0xd8, 0x07, 0x03, 0x03, 0x73, 0x63, 0x30, 0x88, 0x3e, +0x33, 0x41, 0x28, 0x08, 0x56, 0x67, 0x22, 0x83, 0x33, 0xbe, 0x87, 0x7c, 0x82, 0x7c, 0x71, 0x7c, +0x62, 0x8e, 0xd5, 0xd1, 0xca, 0x20, 0x33, 0x90, 0x8d, 0x00, 0xac, 0x82, 0x67, 0x16, 0x22, 0x5f, +0x2a, 0x18, 0x85, 0xc2, 0x67, 0xc2, 0xd0, 0xf1, 0xc6, 0xef, 0x09, 0x05, 0xe9, 0xef, 0x8c, 0xa8, +0x9b, 0x70, 0x31, 0x99, 0x58, 0xbc, 0x98, 0x93, 0x55, 0x30, 0xe6, 0x23, 0x84, 0x67, 0xc1, 0xe4, +0xc7, 0x4f, 0xcc, 0x78, 0x98, 0xc5, 0x00, 0xca, 0x2a, 0x67, 0x58, 0xc2, 0x00, 0xc5, 0xbf, 0x56, +0xbc, 0xc0, 0x40, 0x80, 0x83, 0x88, 0xea, 0x33, 0x16, 0x22, 0x00, 0x2a, 0x48, 0x3c, 0xca, 0x67, +0x1d, 0xbf, 0xc9, 0x80, 0x59, 0xa2, 0xe0, 0x05, 0x99, 0x8a, 0xc8, 0xcf, 0x50, 0x49, 0x24, 0x41, +0x14, 0x8a, 0xa0, 0x04, 0xbf, 0xc2, 0xa2, 0xcf, 0xc4, 0x0a, 0x54, 0x18, 0x33, 0x8f, 0xa8, 0x9b, +0x02, 0x21, 0x30, 0x0a, 0xc7, 0x54, 0x30, 0x88, 0x85, 0x87, 0xa8, 0x32, 0x33, 0x46, 0xd4, 0x9b, +0x40, 0x56, 0x84, 0xa2, 0x49, 0x15, 0x5f, 0xaa, 0x08, 0x41, 0xcc, 0x71, 0x18, 0x91, 0x33, 0x43, +0x82, 0x17, 0x18, 0x51, 0x9b, 0x16, 0x04, 0xe2, 0xcc, 0x00, 0xad, 0x8c, 0xd3, 0x61, 0x44, 0x9b, +0x20, 0x52, 0xb1, 0x0c, 0xbf, 0x65, 0x00, 0x1f, 0x23, 0x6a, 0x9b, 0x0d, 0x02, 0x23, 0xca, 0x00, +0x9b, 0x80, 0x00, 0x47, 0x89, 0xa1, 0x8b, 0x02, 0xcf, 0x03, 0x02, 0x61, 0x10, 0x33, 0xa2, 0x02, +0x80, 0x38, 0x9b, 0x28, 0x58, 0x05, 0xcb, 0xfb, 0x08, 0x49, 0xa3, 0x22, 0x83, 0x33, 0x44, 0x25, +0x64, 0x64, 0x9b, 0xaa, 0x00, 0x61, 0x40, 0x65, 0x33, 0x20, 0x63, 0x61, 0x10, 0x33, 0x20, 0x46, +0x54, 0x30, 0xc1, 0x54, 0x46, 0x9b, 0x03, 0x02, 0x35, 0x01, 0x2b, 0x23, 0xea, 0x34, 0x9b, 0x31, +0x08, 0x58, 0x52, 0x65, 0x12, 0x80, 0x75, 0x11, 0x15, 0x4b, 0x95, 0x9b, 0x00, 0x46, 0x94, 0x9b, +0x40, 0x10, 0x42, 0x0e, 0x00, 0x00, 0x10, 0x09, 0x0a, 0x61, 0x33, 0xc2, 0x88, 0x9b, 0x02, 0x11, +0x63, 0x81, 0x08, 0xc3, 0x41, 0x04, 0x0a, 0x95, 0x33, 0xc0, 0x88, 0x9b, 0x14, 0xaa, 0x74, 0x22, +0x23, 0x20, 0x26, 0x1d, 0x31, 0xc2, 0x33, 0x82, 0x00, 0xbf, 0x30, 0xa2, 0x9b, 0x11, 0x02, 0x62, +0x64, 0x92, 0x21, 0x0c, 0x33, 0x20, 0x14, 0x2b, 0xa9, 0x82, 0x77, 0x44, 0x05, 0x06, 0x60, 0x9b, +0x11, 0xe5, 0x00, 0x53, 0x90, 0x9b, 0x51, 0x30, 0x88, 0xe5, 0x33, 0x3c, 0x19, 0x5a, 0x39, 0xbf, +0x59, 0x14, 0xcf, 0x59, 0x11, 0xa8, 0x00, 0x25, 0x09, 0x42, 0x05, 0xc0, 0x20, 0x33, 0x10, 0x2a, +0x64, 0x51, 0xcf, 0x50, 0x41, 0x0c, 0x22, 0x33, 0x04, 0xaa, 0x58, 0x14, 0xcf, 0x01, 0x00, 0x83, +0x18, 0x33, 0xa1, 0x00, 0x16, 0x05, 0xcf, 0x43, 0x40, 0x0d, 0xdb, 0xff, 0x0a, 0x54, 0x68, 0x69, +0x73, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x04, 0x69, 0x7f, 0xfb, 0x6c, 0x65, 0x20, 0x68, 0x61, 0x0d, +0x62, 0x65, 0x65, 0x6e, 0x20, 0x63, 0xdb, 0xfe, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x02, +0x69, 0x06, 0xfd, 0x9b, 0x13, 0x79, 0x20, 0x43, 0x50, 0x49, 0x61, 0x64, 0x6f, 0xbf, 0x09, 0x56, +0x31, 0x2e, 0x32, 0x30, 0x37, 0x43, 0x6f, 0x70, 0x7f, 0xf9, 0x79, 0x72, 0x69, 0x67, 0x68, 0x28, +0x43, 0x29, 0x20, 0x31, 0x39, 0xbf, 0xee, 0x39, 0x33, 0x2d, 0x04, 0x36, 0x28, 0x6b, 0x6f, 0xfe, +0xdb, 0x73, 0x74, 0x54, 0x40, 0x61, 0x63, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0xbb, 0xdb, 0x1f, 0x4b, +0x0f, 0x61, 0x20, 0x4b, 0x15, 0x07, 0x1b, 0x29, 0x71, 0x70, 0x72, 0xbb, 0xff, 0x6f, 0x67, 0x72, +0x61, 0x6d, 0x20, 0x6d, 0x61, 0x79, 0x6f, 0x20, 0x75, 0xd6, 0xba, 0x73, 0x63, 0x66, 0x72, 0x09, +0x6b, 0xed, 0x6f, 0x66, 0x7a, 0x84, 0x36, 0xdf, 0x5a, 0x09, 0x7e, 0x20, 0x79, 0x6f, 0x75, 0xd6, +0xb6, 0x72, 0x11, 0x77, 0x8d, 0x69, 0x00, 0xfc, 0x73, 0x6b, 0x2e, 0x0d, 0x0a, 0x00, 0x00, 0x00, +0x00, 0x00, 0x12, 0xff, 0xa4, 0xe8, 0x3a, 0x00, 0x72, 0xfa, 0x41, 0xe8, 0x2f, 0x00, 0xe3, 0x3b, +0x73, 0xf9, 0x83, 0xe9, 0x03, 0x72, 0x06, 0x88, 0xcc, 0xac, 0xf7, 0xd0, 0x95, 0x31, 0xc9, 0xe8, +0x1b, 0x00, 0x11, 0xc9, 0x75, 0x08, 0x41, 0xe8, 0x13, 0x00, 0x73, 0xfb, 0x41, 0x41, 0x81, 0xfd, +0x00, 0xf3, 0x83, 0xd1, 0x01, 0x8d, 0x03, 0x96, 0xf3, 0xa4, 0x96, 0xeb, 0xc8, 0xe8, 0x02, 0x00, +0x11, 0xc9, 0x01, 0xdb, 0x75, 0x04, 0xad, 0x11, 0xc0, 0x93, 0xc3, 0x5e, 0xb9, 0x01, 0x00, 0xac, +0x2c, 0xe8, 0x3c, 0x01, 0x77, 0xf9, 0x8b, 0x1c, 0x86, 0xdf, 0x29, 0xf3, 0x89, 0x1c, 0xad, 0xe2, +0xee, 0xc3 }; + +Bit8u font_ega3_cpx[5455] = { +0x81, 0xfc, 0xce, 0xe7, 0x77, 0x02, 0xcd, 0x20, 0xb9, 0x4f, 0x15, 0xbe, 0x4f, 0x16, 0xbf, 0x6e, +0xe7, 0xbb, 0x00, 0x80, 0xfd, 0xf3, 0xa4, 0xfc, 0x87, 0xf7, 0x83, 0xee, 0xc6, 0x19, 0xed, 0x57, +0x57, 0xe9, 0xed, 0xe5, 0x55, 0x50, 0x58, 0x21, 0x0b, 0x01, 0x04, 0x08, 0x10, 0x40, 0x37, 0xe4, +0x59, 0xc7, 0x7f, 0x53, 0x00, 0xe6, 0xb7, 0x14, 0x06, 0x45, 0xbb, 0xfc, 0xff, 0x46, 0x4f, 0x4e, +0x54, 0x20, 0x00, 0x00, 0x01, 0x6e, 0x39, 0x01, 0x17, 0x06, 0xfd, 0xfd, 0x06, 0x00, 0x1c, 0x00, +0x4d, 0x26, 0x0e, 0x45, 0x47, 0x41, 0xc9, 0xcd, 0x1e, 0x20, 0x03, 0x03, 0xb7, 0xd8, 0x35, 0x24, +0x0c, 0x12, 0x26, 0xb2, 0xd8, 0x10, 0x08, 0x0a, 0x00, 0xed, 0xbf, 0x7e, 0x81, 0xa5, 0x81, 0x81, +0xbd, 0x99, 0x03, 0x7f, 0xb0, 0x7e, 0x0f, 0xff, 0xdb, 0xff, 0xff, 0xc3, 0xe7, 0xfc, 0xce, 0xff, +0xff, 0x00, 0x6c, 0xfe, 0x87, 0xdd, 0x7c, 0x38, 0x10, 0x30, 0x10, 0x1f, 0xd8, 0x38, 0x7c, 0x0e, +0x18, 0x3c, 0x3c, 0xd6, 0xb6, 0xe7, 0x00, 0x18, 0x06, 0x0f, 0xcc, 0x4d, 0x7e, 0x3b, 0x0f, 0x76, +0xb6, 0x22, 0x18, 0x09, 0x3b, 0x76, 0xff, 0x00, 0xe7, 0xc3, 0x5f, 0xc7, 0xde, 0x00, 0x1f, 0x3c, +0x66, 0x5f, 0xf2, 0x42, 0x42, 0x66, 0x3c, 0xc3, 0x99, 0xbd, 0x3f, 0xe4, 0xbd, 0x99, 0xc3, 0x1e, +0x0e, 0x1a, 0x32, 0x7b, 0xdd, 0x78, 0xcc, 0x00, 0x78, 0x20, 0x2d, 0xd7, 0xdc, 0x00, 0x4f, 0x61, +0xf7, 0x33, 0x0f, 0x3f, 0x33, 0x3f, 0x30, 0x00, 0x1f, 0x79, 0x70, 0xf0, 0xe0, 0x00, 0x7f, 0x63, +0x7f, 0x63, 0xb3, 0x37, 0x67, 0xe7, 0xe6, 0xc0, 0x7c, 0xb0, 0xdb, 0x18, 0xdb, 0xa0, 0x3c, 0xdb, +0x2e, 0xb7, 0xff, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8, 0x2d, 0xc0, 0x80, 0xff, 0x63, 0xbf, +0x02, 0x06, 0x0e, 0x1e, 0x3e, 0xfe, 0x3e, 0x1e, 0x0e, 0x2d, 0xc9, 0x06, 0x02, 0x2b, 0xef, 0x6c, +0x5e, 0x3c, 0x00, 0x73, 0x93, 0x66, 0x07, 0x5f, 0xdc, 0x06, 0xdb, 0x00, 0x7b, 0x1b, 0x7f, 0xf3, +0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x80, 0xfc, 0x6c, 0x38, 0x0c, 0xc6, 0x7c, 0x00, +0xc8, 0xcc, 0xfe, 0x4f, 0x0d, 0x6c, 0x7e, 0x0f, 0x17, 0xec, 0x00, 0x0f, 0x00, 0xdf, 0xb2, 0x70, +0x11, 0x0c, 0x2e, 0xd9, 0xfe, 0x0c, 0x0c, 0x00, 0x80, 0xfc, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, +0xcc, 0xca, 0xc0, 0x5c, 0x2e, 0x27, 0xa1, 0x28, 0x6c, 0x28, 0x0a, 0xcb, 0x0e, 0x9f, 0xf6, 0x16, +0xa0, 0x7c, 0x7d, 0x8a, 0x61, 0x4b, 0x0e, 0x38, 0xaf, 0x17, 0xd8, 0x00, 0x18, 0xec, 0x95, 0x3c, +0x8c, 0x8f, 0x64, 0xdd, 0xe9, 0x24, 0x20, 0x31, 0x37, 0x6c, 0x5e, 0x03, 0xdf, 0x66, 0xad, 0xf1, +0xc2, 0xc0, 0x7c, 0x06, 0xc3, 0xda, 0x06, 0x86, 0xef, 0xc1, 0xe4, 0xdb, 0xc2, 0xc6, 0xae, 0x30, +0x60, 0xc6, 0x86, 0x85, 0xc2, 0x0e, 0x0c, 0x58, 0xc3, 0x76, 0xdc, 0xaf, 0x76, 0xbd, 0xb0, 0x2d, +0x00, 0x60, 0x4e, 0x31, 0x37, 0x2b, 0x00, 0x37, 0x6b, 0xe5, 0x0f, 0x08, 0xb2, 0x31, 0x00, 0x18, +0xe2, 0xc2, 0xc2, 0xde, 0xff, 0xe5, 0x30, 0xb0, 0xa2, 0xc0, 0x96, 0xed, 0x14, 0x0d, 0xd8, 0x31, +0xfe, 0xb2, 0x95, 0xd7, 0x31, 0xbf, 0xc2, 0xe2, 0x9f, 0xc0, 0x80, 0x1f, 0x26, 0xae, 0xd6, 0xd6, +0xc1, 0x0e, 0xb2, 0x27, 0x0b, 0xc2, 0x38, 0x78, 0x81, 0x2e, 0x9e, 0x3c, 0x7c, 0xc6, 0xc6, 0xfe, +0xdb, 0xc9, 0x0f, 0x06, 0x3c, 0x02, 0x06, 0x7f, 0x08, 0xdf, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0x13, +0xba, 0xfe, 0xb0, 0x1e, 0x8d, 0xc0, 0x9a, 0xfe, 0xfc, 0x1f, 0x72, 0x77, 0x38, 0x60, 0x0f, 0xc6, +0xc6, 0xc6, 0xcc, 0x1d, 0xfe, 0x3f, 0xf3, 0x6e, 0xd8, 0x4f, 0x1a, 0x2f, 0x60, 0x1f, 0x0b, 0x61, +0xbb, 0x7e, 0x3f, 0x0c, 0x78, 0xba, 0x61, 0x6f, 0x04, 0x0f, 0x6c, 0x72, 0x30, 0x9e, 0x52, 0x43, +0x35, 0x06, 0xc2, 0xd9, 0x5b, 0x02, 0x00, 0x5e, 0x2c, 0x1b, 0x23, 0x84, 0xc9, 0x5f, 0x0c, 0xdf, +0x76, 0xb6, 0x10, 0xde, 0x00, 0x8c, 0xc2, 0xdc, 0xc4, 0x2e, 0x67, 0x3b, 0x6c, 0x90, 0xfe, 0x8d, +0x67, 0x0f, 0xfc, 0x66, 0xf1, 0x90, 0x9e, 0x7c, 0xfc, 0x6f, 0xba, 0xc2, 0xef, 0x00, 0xc2, 0x3e, +0x9d, 0xa1, 0x10, 0xf8, 0x6c, 0x67, 0x4f, 0x6c, 0xf8, 0x0f, 0xfe, 0x90, 0xff, 0x66, 0x62, 0x68, +0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0xd8, 0x96, 0x00, 0xf0, 0x3f, 0xc9, 0x0f, 0xde, 0xc6, 0xc6, +0x66, 0x3a, 0xec, 0xbd, 0x69, 0x6e, 0x6f, 0x4d, 0x38, 0x3c, 0x7d, 0xc6, 0x64, 0x30, 0x1e, 0x0d, +0x2e, 0x29, 0xef, 0xe6, 0xd6, 0xed, 0x6a, 0x78, 0x78, 0x74, 0xe6, 0x0f, 0x16, 0x7b, 0xf0, 0x60, +0x00, 0x6f, 0xf2, 0x6f, 0x4f, 0xee, 0xfe, 0xfe, 0xd6, 0x7e, 0x5b, 0x0f, 0xe6, 0xf6, 0xfe, 0xde, +0xce, 0x0f, 0x4b, 0x6f, 0xc6, 0xb3, 0x25, 0xdf, 0x84, 0x7d, 0x41, 0xf0, 0x1f, 0x92, 0xfc, 0xd6, +0xde, 0x7c, 0x0c, 0x0e, 0x25, 0xfb, 0xe3, 0xe6, 0x1f, 0x56, 0x28, 0xe2, 0x50, 0x3f, 0x61, 0x4f, +0x7e, 0x7e, 0x5a, 0xaf, 0x42, 0x36, 0xc6, 0x5f, 0xe4, 0xc1, 0x0f, 0x6c, 0x38, 0x10, 0xc8, 0xbf, +0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0xcd, 0x74, 0x6c, 0x8e, 0x61, 0xac, 0x61, 0x9f, 0xce, 0x61, +0xd9, 0x4f, 0x1b, 0xe4, 0x63, 0x86, 0x7f, 0xc2, 0x82, 0x3d, 0x3c, 0x30, 0x00, 0x5f, 0xc1, 0x1f, +0xc1, 0x70, 0x4e, 0xd6, 0x38, 0x1c, 0xaf, 0x3c, 0x0c, 0x8c, 0xc1, 0x00, 0x3c, 0xdc, 0x11, 0x52, +0xe6, 0x9d, 0xa6, 0x6c, 0xff, 0x7d, 0x80, 0x18, 0x78, 0x0c, 0x7c, 0xc2, 0x25, 0xaf, 0xe0, 0x19, +0x2c, 0xc2, 0x78, 0xe2, 0xcf, 0x63, 0xc2, 0x02, 0x00, 0x77, 0x98, 0xdf, 0x1c, 0x69, 0x65, 0x25, +0x00, 0x2f, 0x90, 0xb1, 0x1f, 0xfe, 0x78, 0x1f, 0x36, 0x32, 0x30, 0x78, 0xaf, 0xbe, 0xcb, 0xcf, +0x76, 0x2e, 0xcc, 0x3b, 0x14, 0x5f, 0xd2, 0x5f, 0xc6, 0xf3, 0x6c, 0x76, 0xe6, 0xdc, 0x20, 0x4c, +0x38, 0x4f, 0x6d, 0x69, 0x09, 0x00, 0xdb, 0x19, 0x62, 0x00, 0x17, 0xce, 0x98, 0x2f, 0x00, 0xe6, +0x92, 0x33, 0x2f, 0x38, 0x46, 0x17, 0x00, 0xec, 0x00, 0xc9, 0xba, 0x00, 0xc6, 0x0f, 0xd9, 0x8c, +0xdc, 0xa1, 0x9f, 0x2d, 0x61, 0x9f, 0x3e, 0x96, 0x1f, 0x04, 0xf0, 0xd2, 0xc2, 0x9f, 0xd2, 0xa3, +0x1d, 0xdc, 0x9f, 0x1f, 0x09, 0x2c, 0xe4, 0x2e, 0x81, 0xdf, 0x10, 0xf6, 0xdb, 0xd9, 0xfc, 0xde, +0x36, 0x1c, 0x1f, 0xc2, 0x4b, 0x3d, 0x0f, 0x30, 0x06, 0x00, 0x08, 0x58, 0x0f, 0x96, 0xf0, 0x00, +0x9a, 0x66, 0xea, 0x1b, 0x38, 0x75, 0x2f, 0xba, 0x16, 0x04, 0x0c, 0xe0, 0x90, 0x52, 0xcc, 0x39, +0x7b, 0x4f, 0xfe, 0xef, 0x0e, 0xac, 0xa7, 0x70, 0x0e, 0xf7, 0x61, 0x90, 0x3f, 0x7b, 0x2f, 0x1b, +0x23, 0x24, 0x08, 0x5f, 0xc9, 0xdc, 0xdf, 0x91, 0x06, 0xe2, 0xf4, 0x61, 0x4f, 0x1e, 0x36, 0x66, +0xf9, 0x84, 0xef, 0xfe, 0x62, 0x60, 0x60, 0x25, 0x2d, 0xff, 0x92, 0x69, 0xcf, 0x71, 0x4b, 0x76, +0xf0, 0x3f, 0x00, 0x2d, 0x31, 0xa7, 0x81, 0x1b, 0x20, 0xff, 0xe9, 0x6b, 0x70, 0x54, 0x54, 0x70, +0x03, 0x04, 0x5a, 0x07, 0x3f, 0x77, 0x0b, 0x78, 0xce, 0xde, 0xf6, 0x73, 0xb3, 0xe6, 0x7f, 0x14, +0x0f, 0x48, 0x09, 0xef, 0x1d, 0xce, 0x6c, 0xef, 0xd2, 0x85, 0x6f, 0xc6, 0xef, 0xac, 0x10, 0x4f, +0x14, 0xd2, 0xef, 0x58, 0xb3, 0x1b, 0xdf, 0x52, 0x5b, 0xe0, 0xff, 0xb1, 0x12, 0xdf, 0x13, 0x49, +0xdf, 0x7e, 0xc7, 0x65, 0xbf, 0x7c, 0x6b, 0xe4, 0xa5, 0xcf, 0x7c, 0x10, 0x38, 0x64, 0x0b, 0x6e, +0xec, 0xd0, 0xff, 0x84, 0x3f, 0xc8, 0xb6, 0x00, 0x00, 0x76, 0xc8, 0xd6, 0xfe, 0x0f, 0xc1, 0x42, +0x2f, 0x6e, 0xe9, 0xf8, 0xb0, 0xb0, 0xea, 0x36, 0x00, 0x0e, 0x58, 0x4f, 0xf6, 0xde, 0xcb, 0xea, +0x00, 0xf6, 0xff, 0x18, 0x08, 0x9f, 0x4b, 0x6e, 0x5f, 0x26, 0x3e, 0x26, 0x7b, 0xba, 0xcc, 0x4f, +0xf6, 0xcc, 0xcf, 0x7a, 0x04, 0xda, 0x40, 0x7a, 0xb0, 0xce, 0xef, 0x18, 0xbc, 0x06, 0x7c, 0xaf, +0x4e, 0x58, 0x22, 0x7c, 0x18, 0xc9, 0x5f, 0x22, 0x12, 0xd2, 0x62, 0x0f, 0x3d, 0x1c, 0x92, 0xff, +0xc3, 0xe4, 0x25, 0x5f, 0xfe, 0xc0, 0xf0, 0xb1, 0x02, 0x7c, 0xcc, 0x92, 0xff, 0xa2, 0x01, 0x6b, +0x01, 0x1f, 0x2c, 0x08, 0xf1, 0x0f, 0x16, 0xf2, 0xc6, 0x7c, 0x26, 0x3d, 0x02, 0xef, 0x59, 0xc8, +0x6f, 0x0f, 0xd2, 0x63, 0x02, 0xef, 0x30, 0x06, 0x01, 0x14, 0x52, 0xef, 0x9e, 0xbd, 0x1c, 0x1f, +0x11, 0x44, 0xf2, 0xc2, 0x01, 0x55, 0xaa, 0x90, 0x17, 0xdd, 0x77, 0x02, 0xbb, 0x18, 0x00, 0x85, +0xec, 0xf8, 0x0d, 0x67, 0x93, 0x0f, 0x36, 0x00, 0xf6, 0x58, 0x90, 0x36, 0x80, 0x25, 0x6c, 0x0f, +0xe7, 0x91, 0x2f, 0xf6, 0x06, 0x4b, 0x60, 0x00, 0x3d, 0x42, 0x36, 0x1f, 0x64, 0xd1, 0x2f, 0xee, +0x59, 0xb0, 0x11, 0x0f, 0x35, 0x2c, 0x8f, 0xd9, 0x90, 0x00, 0xf8, 0xbf, 0x84, 0x0d, 0x1f, 0x2f, +0x43, 0xf2, 0x18, 0x18, 0xff, 0xff, 0x6b, 0x24, 0x72, 0x6b, 0x0b, 0x1f, 0x3f, 0x64, 0x23, 0x2d, +0x90, 0x30, 0x1f, 0x0f, 0x4f, 0xd8, 0x37, 0xbf, 0x37, 0x30, 0x3f, 0x2a, 0x61, 0x6d, 0x17, 0x56, +0xbf, 0x1f, 0xf7, 0xb0, 0x65, 0x5f, 0x6d, 0x85, 0x6c, 0xf7, 0x3f, 0xcd, 0x92, 0x2f, 0x1f, 0xcd, +0x96, 0x2f, 0x3f, 0xc1, 0x96, 0x2f, 0xdd, 0x85, 0x84, 0xff, 0x2f, 0xd9, 0x91, 0x5f, 0xff, 0xdf, +0x48, 0x18, 0x86, 0x2c, 0x59, 0xaf, 0xdf, 0x12, 0x36, 0x3f, 0x17, 0xf6, 0xef, 0x3f, 0x3f, 0x2c, +0x24, 0x4f, 0x82, 0x90, 0x2d, 0x30, 0x12, 0x5f, 0xb2, 0x91, 0xaf, 0x4f, 0x85, 0x6c, 0xff, 0x00, +0x48, 0x08, 0xaf, 0x90, 0x36, 0x24, 0x1e, 0xcf, 0x03, 0x97, 0x0f, 0x94, 0x90, 0x90, 0xaf, 0xc4, +0x8b, 0x87, 0x30, 0x98, 0xbf, 0xff, 0x91, 0xad, 0x1f, 0x38, 0x81, 0x01, 0x3c, 0x90, 0x32, 0x9f, +0x93, 0x27, 0x02, 0x38, 0x10, 0x0c, 0xca, 0x7c, 0x10, 0xcf, 0x59, 0x83, 0xcf, 0x7a, 0xb3, 0x0f, +0x3d, 0xd6, 0x32, 0xaf, 0xff, 0xcb, 0x12, 0x0f, 0x81, 0x64, 0x2f, 0x02, 0xcc, 0x80, 0x01, 0x8f, +0x26, 0xb0, 0x01, 0x09, 0xbc, 0xff, 0x02, 0x09, 0x2b, 0x9f, 0x20, 0x5d, 0x5f, 0x3e, 0x23, 0x70, +0xcc, 0x01, 0xcc, 0x81, 0x65, 0xcf, 0x01, 0x32, 0x1a, 0xce, 0xaf, 0x98, 0x30, 0x3f, 0xdc, 0xb2, +0xbf, 0x0f, 0x65, 0xd0, 0xf5, 0xcf, 0x60, 0x2e, 0x12, 0x1f, 0x23, 0xa3, 0xaf, 0x2c, 0x66, 0x3f, +0xbf, 0x05, 0xb7, 0x0f, 0x08, 0x46, 0x46, 0x2f, 0x16, 0x13, 0x7f, 0x3f, 0x32, 0x58, 0x1f, 0x2c, +0xde, 0x6f, 0x3f, 0xf4, 0x25, 0x0f, 0xfe, 0x6d, 0x64, 0x4f, 0x1f, 0xd8, 0x90, 0xfc, 0x4d, 0x23, +0xa3, 0x1f, 0xb0, 0x78, 0x5f, 0x2f, 0x33, 0x97, 0xee, 0x00, 0x06, 0x90, 0x00, 0x0e, 0xc1, 0x0b, +0x05, 0x1c, 0x61, 0x03, 0x7e, 0x07, 0x16, 0x01, 0x7e, 0x80, 0x04, 0xff, 0x93, 0x20, 0xfd, 0x95, +0x04, 0xfb, 0x4a, 0x82, 0xf9, 0x38, 0x41, 0xf7, 0x8c, 0x24, 0xf5, 0x58, 0x12, 0xf3, 0x8c, 0x24, +0xf1, 0x5d, 0x12, 0xef, 0x78, 0x24, 0x98, 0x27, 0xec, 0x4e, 0xb0, 0xeb, 0x2c, 0x09, 0xea, 0x82, +0x13, 0xe9, 0x49, 0x70, 0xe8, 0xe7, 0x98, 0x4a, 0x24, 0x82, 0x12, 0xe5, 0x04, 0x4b, 0xe4, 0x70, +0xaa, 0xe3, 0x32, 0x48, 0x49, 0xe1, 0x24, 0x24, 0xde, 0x18, 0x12, 0xdd, 0x30, 0x24, 0xdb, 0x1c, +0x49, 0xda, 0x00, 0x92, 0xa0, 0xd7, 0xac, 0x37, 0x0d, 0x01, 0x49, 0xb0, 0xd2, 0x27, 0x08, 0xd1, +0x84, 0x04, 0xcf, 0x93, 0x20, 0xcd, 0x95, 0x04, 0xcb, 0x4c, 0x82, 0xc9, 0x54, 0x12, 0xc7, 0x45, +0x82, 0xc3, 0x93, 0xc0, 0x76, 0xc1, 0x84, 0x04, 0xbe, 0x93, 0x20, 0xbd, 0x96, 0x04, 0xbc, 0xd0, +0x09, 0xbb, 0x92, 0xe0, 0x5a, 0xb9, 0x92, 0xe0, 0x76, 0x5f, 0x48, 0x90, 0xb5, 0x04, 0x2d, 0xc8, +0xb2, 0x80, 0xb3, 0x20, 0x38, 0x41, 0xb0, 0x81, 0x24, 0xae, 0x30, 0x60, 0x4b, 0xfe, 0x16, 0x48, +0xa8, 0x2b, 0x09, 0xa5, 0x60, 0x52, 0x44, 0xe0, 0x92, 0xa3, 0x7e, 0x11, 0x90, 0xa1, 0xcb, 0xe8, +0xf0, 0x5f, 0x09, 0x0e, 0xa3, 0x9d, 0x09, 0x2e, 0x1e, 0x9b, 0x78, 0x01, 0x1b, 0xb7, 0x24, 0x99, +0x0d, 0x76, 0x82, 0x97, 0xd4, 0x90, 0x60, 0x95, 0x24, 0x38, 0x7c, 0x93, 0x49, 0xb0, 0x92, 0x93, +0x20, 0x80, 0x95, 0x04, 0x8e, 0x04, 0xb1, 0xb3, 0x92, 0xc0, 0x71, 0x8b, 0x48, 0xb0, 0x88, 0x24, +0x48, 0x87, 0x09, 0x5e, 0x3c, 0x84, 0x02, 0x29, 0xd3, 0x90, 0x4a, 0x81, 0x24, 0x98, 0xfc, 0x7f, +0x21, 0xb0, 0xce, 0x70, 0x82, 0x7d, 0xb2, 0x4e, 0x7c, 0xcb, 0xb2, 0xd7, 0xaa, 0x0d, 0xe0, 0xc0, +0xd5, 0xf5, 0x92, 0x77, 0x66, 0x3a, 0x6b, 0x21, 0x25, 0xc3, 0x82, 0x09, 0x3c, 0xea, 0x40, 0x71, +0x78, 0x52, 0x4b, 0x7f, 0x7e, 0x12, 0x4c, 0xf0, 0x6c, 0x1d, 0x5a, 0x78, 0x60, 0x49, 0x7a, 0xd9, +0x92, 0x69, 0xd1, 0x26, 0xac, 0xb6, 0xfc, 0x25, 0xa4, 0x64, 0x9c, 0xe0, 0x1b, 0x62, 0x07, 0x12, +0x61, 0xe6, 0x96, 0x04, 0x5f, 0x53, 0xc3, 0x37, 0x7d, 0xc0, 0xb2, 0x99, 0x82, 0x85, 0x0a, 0x41, +0x42, 0x58, 0x33, 0x22, 0x57, 0xd7, 0x95, 0x62, 0x0d, 0x1c, 0x90, 0xe0, 0x66, 0x53, 0x6d, 0x36, +0x45, 0xf7, 0x2c, 0x81, 0x8c, 0x30, 0x1c, 0x12, 0x4f, 0x3c, 0x56, 0x12, 0x4c, 0x06, 0x09, 0x4b, +0x3c, 0x20, 0x09, 0x49, 0x90, 0x60, 0xff, 0x45, 0x48, 0x0c, 0x83, 0x20, 0xc1, 0x76, 0x41, 0x12, +0x6f, 0xb5, 0x5f, 0xc1, 0x4b, 0xc3, 0xd9, 0x25, 0x3d, 0x76, 0x1b, 0x48, 0x72, 0xfe, 0x82, 0x25, +0x39, 0x7c, 0x60, 0x40, 0x38, 0x76, 0x04, 0x31, 0x96, 0xc1, 0x80, 0x35, 0xe6, 0x70, 0x20, 0x33, +0x3c, 0x60, 0x49, 0x31, 0x90, 0x90, 0x2f, 0xc5, 0x86, 0xbf, 0x26, 0x90, 0xe0, 0x29, 0x2b, 0x61, +0x91, 0x09, 0x42, 0x6a, 0x37, 0x26, 0x6c, 0x7c, 0x1b, 0x7c, 0x96, 0x1d, 0xc1, 0x8b, 0x03, 0x09, +0x21, 0xf2, 0xb2, 0xf0, 0x37, 0x70, 0x1c, 0x93, 0x60, 0x1d, 0x96, 0x04, 0x1c, 0x09, 0x09, 0x1a, +0x6c, 0x09, 0xbf, 0x0d, 0x20, 0xc1, 0x16, 0x16, 0x2e, 0x19, 0x44, 0x2c, 0x02, 0x72, 0x24, 0x18, +0x7c, 0x11, 0xe0, 0x91, 0x83, 0xe0, 0x92, 0x0f, 0x0e, 0x90, 0x90, 0x0d, 0x1c, 0x48, 0x0b, 0x70, +0x04, 0x12, 0x09, 0xc1, 0xa4, 0x66, 0x2a, 0x21, 0x05, 0x00, 0xc1, 0xe0, 0x4a, 0x9a, 0x52, 0x7f, +0x61, 0xc0, 0xff, 0xe0, 0xbd, 0xed, 0x37, 0xd2, 0x32, 0xfc, 0x7f, 0xd0, 0x42, 0xcc, 0xac, 0x19, +0xf8, 0x97, 0x06, 0xac, 0xe5, 0x0c, 0x48, 0xf3, 0x25, 0x25, 0x71, 0x98, 0x6c, 0x61, 0xc6, 0x25, +0x0c, 0xed, 0x69, 0x25, 0xc5, 0x71, 0x01, 0x21, 0x90, 0x86, 0xe7, 0x7f, 0x72, 0x2d, 0x43, 0xb0, +0x42, 0x63, 0x28, 0x19, 0xde, 0x80, 0x43, 0xda, 0x38, 0x01, 0xc9, 0xdb, 0x03, 0x86, 0xda, 0xd8, +0x01, 0x09, 0x03, 0x86, 0xd7, 0xd4, 0x24, 0xa4, 0x00, 0x13, 0x06, 0xd2, 0xf0, 0x32, 0xe0, 0xf0, +0xb0, 0xbc, 0xd0, 0x61, 0x40, 0xce, 0x82, 0x2b, 0x5f, 0x79, 0x0c, 0x58, 0xcb, 0x80, 0xd9, 0x8b, +0xa0, 0xf9, 0xc9, 0xf6, 0xcc, 0x3a, 0x30, 0xc7, 0xce, 0x10, 0x40, 0x71, 0x8c, 0x19, 0xc3, 0xbb, +0x0c, 0xb8, 0xfc, 0xc0, 0x07, 0x0c, 0xbf, 0x65, 0xc0, 0xf0, 0x4d, 0xf4, 0x80, 0xbc, 0xb1, 0x94, +0x7f, 0xb8, 0x92, 0x0a, 0xc1, 0x1d, 0x92, 0xdb, 0x1b, 0x1c, 0x06, 0x65, 0xc0, 0xa4, 0x65, 0x87, +0xc2, 0x0d, 0x49, 0x87, 0xc2, 0x71, 0x36, 0x6c, 0x61, 0x0d, 0x60, 0x48, 0xc2, 0x63, 0x19, 0xac, +0x75, 0x25, 0x2d, 0x71, 0xb0, 0x60, 0xc6, 0x64, 0x40, 0xa3, 0x0c, 0x08, 0x9f, 0x80, 0xab, 0xf8, +0xc0, 0xca, 0x9b, 0x6f, 0x61, 0x99, 0x70, 0x0c, 0x38, 0x95, 0x06, 0xac, 0x93, 0x80, 0x41, 0xc0, +0xca, 0x8f, 0x0c, 0x78, 0x8d, 0x8b, 0x06, 0xa4, 0x89, 0x03, 0x56, 0x87, 0x80, 0x21, 0x1f, 0xb0, +0xc2, 0x83, 0x08, 0x19, 0x51, 0xac, 0x0c, 0x7d, 0x52, 0x06, 0x7b, 0x64, 0x03, 0x77, 0x1f, 0x01, +0x23, 0x0c, 0x98, 0x75, 0x73, 0x07, 0xac, 0x71, 0xc2, 0x80, 0x6f, 0x1e, 0x30, 0x6d, 0x29, 0x03, +0x6b, 0x96, 0x01, 0x69, 0x23, 0x03, 0x67, 0x95, 0x01, 0x65, 0x06, 0xb8, 0x1b, 0x61, 0xc0, 0x15, +0x3f, 0x1b, 0x61, 0x5d, 0xd1, 0x61, 0xc0, 0x59, 0x06, 0x4c, 0xff, 0x55, 0xc0, 0x15, 0xf8, 0x08, +0x60, 0x51, 0x29, 0x0c, 0x4d, 0xa4, 0x03, 0x4f, 0x55, 0x81, 0xb6, 0x0d, 0xc1, 0x96, 0x85, 0x79, +0x2c, 0x03, 0x47, 0x46, 0x18, 0x1f, 0xd6, 0xc2, 0x1b, 0x61, 0x24, 0x30, 0x3c, 0xcb, 0x19, 0x30, +0xfc, 0x3d, 0xc0, 0x6b, 0x61, 0x60, 0x84, 0xf5, 0xc0, 0x30, 0x38, 0x2b, 0x61, 0x36, 0x5f, 0x92, +0x2d, 0x0d, 0x58, 0xc9, 0x29, 0x61, 0x40, 0xb2, 0x7d, 0x30, 0x61, 0x2e, 0xf0, 0x1c, 0x18, 0x2c, +0xfc, 0xb3, 0x06, 0x2a, 0x89, 0xae, 0x59, 0x62, 0x61, 0xc0, 0x80, 0xcc, 0x27, 0x42, 0xe8, 0xce, +0x59, 0xac, 0xc3, 0x17, 0x27, 0xa0, 0xbd, 0x30, 0x1c, 0xd6, 0x5c, 0x48, 0xf5, 0x10, 0x08, 0xcd, +0x1b, 0x59, 0xc4, 0x5b, 0x37, 0xd6, 0x96, 0xa7, 0x0d, 0xe6, 0x0b, 0x8b, 0xe9, 0x89, 0x09, 0x4f, +0x37, 0x85, 0xc5, 0xe9, 0x49, 0xbc, 0x37, 0x37, 0xd1, 0x6e, 0x0d, 0xfe, 0x00, 0x2c, 0x64, 0xc0, +0x1b, 0x8b, 0x17, 0x43, 0xdb, 0x78, 0x0b, 0x53, 0xc0, 0x92, 0x29, 0x80, 0x61, 0x09, 0xe4, 0xc8, +0x05, 0x08, 0x0e, 0xb0, 0xfc, 0xc0, 0x01, 0xfb, 0x06, 0x30, 0xf6, 0xf5, 0x4c, 0x80, 0x6c, 0xee, +0x0b, 0x02, 0xe9, 0x06, 0xe6, 0x60, 0x38, 0x83, 0x0d, 0x1c, 0xbe, 0x0f, 0xfe, 0xb7, 0x60, 0x02, +0xd7, 0x40, 0x10, 0xd1, 0x80, 0x20, 0xcb, 0xf0, 0x41, 0xc5, 0x0f, 0x07, 0x0f, 0x7d, 0x01, 0x0c, +0xbf, 0xba, 0x03, 0x04, 0xb4, 0x50, 0x80, 0xb3, 0xc0, 0x0f, 0xae, 0x67, 0xe6, 0xc0, 0x06, 0x30, +0xa7, 0xa8, 0x75, 0x80, 0x80, 0xa1, 0x03, 0x2c, 0xef, 0x02, 0x9b, 0x38, 0xc0, 0x02, 0x42, 0x00, +0x06, 0x33, 0x06, 0x98, 0x8f, 0x8a, 0xdd, 0x00, 0x89, 0x00, 0x3e, 0x61, 0xde, 0xdb, 0x49, 0x3c, +0x86, 0xfd, 0xd0, 0xc0, 0xf7, 0x27, 0x26, 0xff, 0x9d, 0x26, 0x72, 0x35, 0x12, 0xe0, 0x0f, 0x65, +0x38, 0x40, 0x5f, 0xb8, 0x04, 0x59, 0x24, 0x03, 0x14, 0xed, 0x12, 0xf0, 0x80, 0x9f, 0xf0, 0x1e, +0x72, 0x2e, 0x1b, 0x08, 0x3d, 0x46, 0xf0, 0xda, 0x72, 0x25, 0xa3, 0x09, 0x31, 0x57, 0x94, 0xf8, +0x18, 0x3e, 0x60, 0xc0, 0x68, 0x28, 0x90, 0x9c, 0xcc, 0x80, 0x07, 0x23, 0x38, 0xb2, 0x7a, 0x1e, +0x76, 0xcc, 0x8b, 0x55, 0x3e, 0x74, 0x22, 0x40, 0x0d, 0x09, 0xf0, 0x13, 0x06, 0x4b, 0x80, 0x00, +0x84, 0x61, 0x2b, 0x83, 0x2b, 0xb7, 0x18, 0xe8, 0x74, 0x0c, 0xf7, 0xd6, 0xb9, 0x72, 0xfe, 0xdd, +0x3e, 0x88, 0xc2, 0xfd, 0x1c, 0x02, 0x1d, 0xbb, 0x2e, 0xb3, 0x0a, 0xca, 0xef, 0xab, 0x1e, 0xc5, +0xfc, 0x0f, 0x47, 0x57, 0xbf, 0xfc, 0x05, 0x62, 0x85, 0xf3, 0x79, 0xef, 0x3d, 0x4f, 0x02, 0x07, +0x17, 0xab, 0x7e, 0xab, 0x74, 0x37, 0xab, 0x62, 0x77, 0x5e, 0xbd, 0x67, 0x81, 0x95, 0xac, 0x94, +0xbe, 0x7a, 0x8f, 0x8d, 0x7c, 0xdc, 0xac, 0x88, 0x07, 0xde, 0x26, 0x86, 0xc0, 0x78, 0x87, 0x02, +0xbd, 0x01, 0xf6, 0x43, 0x1b, 0xc3, 0x38, 0x57, 0x06, 0xd0, 0x6b, 0xe3, 0xab, 0x69, 0xfe, 0xee, +0x34, 0x1b, 0xfe, 0x07, 0xab, 0xcf, 0xef, 0x1f, 0xce, 0x57, 0x20, 0x90, 0x76, 0xdb, 0x8c, 0xf3, +0x2f, 0x1e, 0x0d, 0x56, 0x45, 0xe6, 0x35, 0x18, 0x7f, 0xf0, 0x2c, 0x66, 0x39, 0xc3, 0x7a, 0x35, +0x2f, 0x02, 0xbd, 0x2e, 0x9e, 0xc4, 0x1b, 0x6f, 0xe4, 0xef, 0x97, 0x0f, 0xce, 0x7c, 0x0e, 0xd7, +0x5e, 0x37, 0x5f, 0xa8, 0xb0, 0x3a, 0x7f, 0x7e, 0x45, 0x1a, 0x46, 0xfd, 0x15, 0x84, 0x56, 0xde, +0x20, 0xf8, 0x00, 0x0c, 0x1e, 0x2f, 0x9b, 0x67, 0xf7, 0xf4, 0x27, 0x0b, 0x32, 0x6f, 0x82, 0x54, +0x3c, 0xdf, 0xd4, 0x01, 0x97, 0x4e, 0xca, 0xd9, 0xd5, 0x3c, 0x18, 0xb8, 0xea, 0x61, 0x71, 0x48, +0xba, 0x86, 0x65, 0x4a, 0xd7, 0x1a, 0x8b, 0xe0, 0x8a, 0xdc, 0x3a, 0xcc, 0xcc, 0x7f, 0x34, 0x24, +0x26, 0x62, 0xf7, 0xe0, 0x7c, 0x97, 0x60, 0xf8, 0xa6, 0xce, 0x47, 0x76, 0x09, 0x4e, 0xb9, 0xf8, +0x2f, 0x92, 0xef, 0xd4, 0xaf, 0xe4, 0x7f, 0xa7, 0x0a, 0x69, 0x84, 0x3d, 0xb8, 0x3c, 0x17, 0x00, +0xe6, 0x5a, 0x46, 0xd6, 0x02, 0x91, 0x74, 0x32, 0x0c, 0x18, 0x6d, 0x36, 0x16, 0x0f, 0x7c, 0x4f, +0x48, 0x4d, 0x1e, 0x56, 0xb5, 0xb3, 0x5f, 0x7e, 0x6d, 0x9d, 0x72, 0xa3, 0x4a, 0xa9, 0x49, 0x49, +0x43, 0x46, 0x0d, 0x56, 0x90, 0x0a, 0x37, 0x2c, 0xc2, 0x00, 0x17, 0x9c, 0x40, 0x5d, 0x7e, 0x4f, +0x35, 0xdf, 0x7e, 0x21, 0x70, 0xa9, 0x53, 0x1f, 0x19, 0xee, 0x0d, 0x0c, 0x12, 0xa9, 0x53, 0x11, +0x07, 0xa9, 0x09, 0x3e, 0x02, 0xc0, 0x35, 0xcf, 0x21, 0x4c, 0x21, 0xff, 0x1e, 0xb9, 0x0f, 0x39, +0x34, 0x3d, 0x7f, 0x0a, 0xc6, 0x81, 0x24, 0xff, 0xb5, 0x71, 0xa8, 0x38, 0x1d, 0x8c, 0x86, 0x9f, +0xc4, 0x30, 0x3b, 0x7c, 0x07, 0x8c, 0x92, 0xf7, 0xc1, 0x2d, 0xe1, 0xc6, 0xf7, 0x4b, 0x88, 0x66, +0xf7, 0xc1, 0x78, 0x0c, 0x6f, 0x2b, 0x62, 0xff, 0x7e, 0x58, 0x31, 0x76, 0xb0, 0x62, 0x6b, 0xcc, +0x60, 0x7c, 0x27, 0xac, 0x24, 0xe7, 0xf6, 0x51, 0x61, 0xfe, 0x65, 0x8c, 0x86, 0x77, 0x71, 0x60, +0x30, 0x0a, 0xc5, 0xa3, 0x67, 0xac, 0x78, 0x36, 0x2e, 0x59, 0x11, 0x26, 0xc3, 0x8a, 0x1e, 0x98, +0x15, 0x16, 0xb0, 0xac, 0x0e, 0x54, 0x9a, 0xf7, 0xe3, 0x33, 0x9a, 0x57, 0x36, 0x1c, 0x0e, 0x47, +0x01, 0x88, 0x3d, 0x87, 0x3c, 0xff, 0xe1, 0x4d, 0xff, 0x1f, 0x00, 0x66, 0x14, 0x18, 0x9a, 0xc5, +0x2f, 0xf8, 0x51, 0x30, 0x0c, 0xfa, 0x82, 0x06, 0x07, 0x3e, 0x41, 0x10, 0xff, 0x10, 0x3a, 0x2f, +0xf4, 0x58, 0xc2, 0xf7, 0x66, 0x4f, 0x01, 0x22, 0x88, 0x01, 0x34, 0x84, 0xd9, 0xa1, 0x21, 0xd4, +0xca, 0x42, 0x2b, 0x9a, 0x43, 0x68, 0xbe, 0x1a, 0x42, 0xb8, 0xd0, 0x10, 0xb2, 0xa1, 0x91, 0xac, +0xa0, 0x09, 0x2d, 0x9a, 0x0d, 0xa1, 0x94, 0x1d, 0x08, 0x8e, 0xf8, 0x0a, 0x08, 0x82, 0x3a, 0x10, +0x7c, 0xff, 0x16, 0x10, 0x70, 0x0f, 0x34, 0x2c, 0x1f, 0x28, 0x20, 0x5e, 0x09, 0x79, 0x52, 0x37, +0x68, 0x42, 0x4c, 0x43, 0x4b, 0x46, 0x40, 0x2d, 0xa1, 0x3a, 0x68, 0x08, 0x34, 0x42, 0x43, 0x2e, +0x28, 0x12, 0x1a, 0x22, 0xc3, 0xdc, 0x0f, 0x6f, 0x02, 0x42, 0x10, 0xb6, 0x84, 0x0a, 0x77, 0xc0, +0x62, 0xfe, 0x2c, 0xde, 0x27, 0xf2, 0x87, 0x0d, 0xd7, 0x1f, 0x02, 0x16, 0xe3, 0x4c, 0xb3, 0xd6, +0x07, 0x17, 0x11, 0xe5, 0xd1, 0x4a, 0xaf, 0xb8, 0x9f, 0x69, 0x24, 0x89, 0xc0, 0x7f, 0x36, 0x19, +0xfc, 0x0f, 0xf4, 0x48, 0x81, 0x33, 0xe0, 0xaf, 0x79, 0x8d, 0x17, 0xaa, 0x80, 0x08, 0x48, 0x67, +0x9b, 0xcd, 0x7f, 0x1f, 0x07, 0x86, 0xc5, 0x91, 0x68, 0x33, 0x7f, 0x00, 0x71, 0xf6, 0x80, 0x3f, +0xf6, 0xce, 0xc2, 0x7f, 0x7a, 0xfc, 0x17, 0x2c, 0x74, 0x07, 0x16, 0x8d, 0x81, 0x6d, 0x78, 0x71, +0x7e, 0x67, 0x39, 0xd8, 0x52, 0xf8, 0x9f, 0x14, 0xc3, 0x9f, 0x5d, 0x19, 0xec, 0xa2, 0x11, 0x18, +0xb0, 0x38, 0x3c, 0x39, 0x8b, 0x57, 0x5e, 0x41, 0x5b, 0x3c, 0x7e, 0xc2, 0x2f, 0x86, 0x06, 0xae, +0xfc, 0x11, 0x98, 0xc9, 0x22, 0x2f, 0x0b, 0x16, 0x29, 0x88, 0x86, 0x40, 0x57, 0xbf, 0xcd, 0x11, +0x2f, 0xfe, 0x86, 0x1c, 0x70, 0xc2, 0x66, 0x99, 0xfe, 0x17, 0xd2, 0x35, 0xce, 0x00, 0x00, 0x83, +0x18, 0x33, 0x03, 0x72, 0x81, 0x4c, 0x04, 0x90, 0x27, 0x69, 0x26, 0x32, 0x82, 0x14, 0x11, 0x0a, +0x06, 0x41, 0x48, 0xc3, 0x48, 0x49, 0xb3, 0x2c, 0x23, 0x83, 0x95, 0x11, 0x93, 0x32, 0x88, 0x33, +0x15, 0xa1, 0x23, 0x98, 0xa5, 0xb3, 0xc4, 0x0a, 0x11, 0x19, 0x33, 0xa4, 0x20, 0x13, 0x14, 0x8c, +0x88, 0x85, 0x03, 0x28, 0x32, 0x33, 0x49, 0x41, 0x63, 0x81, 0x48, 0x63, 0x10, 0x09, 0x48, 0x20, +0x53, 0x24, 0x2b, 0x43, 0x95, 0x15, 0x33, 0xb0, 0x82, 0x23, 0x56, 0x30, 0x13, 0x0a, 0x56, 0x41, +0xc2, 0x03, 0x58, 0x48, 0xf3, 0x21, 0x29, 0xe3, 0x61, 0x10, 0x33, 0xf9, 0x56, 0x00, 0xff, 0x48, +0x0e, 0xf0, 0x85, 0x64, 0x0f, 0x88, 0x84, 0x36, 0x00, 0x30, 0x33, 0x90, 0x06, 0x6c, 0x7f, 0x88, +0xb0, 0x91, 0x96, 0x6c, 0xff, 0xc6, 0xfc, 0x4d, 0x08, 0xe9, 0x1a, 0x02, 0xe7, 0x37, 0x21, 0xa2, +0x0f, 0x90, 0xa2, 0x4b, 0xad, 0xbd, 0x24, 0x48, 0x01, 0x05, 0x25, 0x05, 0xc1, 0x90, 0x2e, 0x2a, +0x18, 0x4a, 0x11, 0xac, 0x24, 0x29, 0xaf, 0xe8, 0x14, 0x99, 0x2b, 0x8c, 0xe0, 0xb0, 0x61, 0x42, +0x00, 0xdb, 0xf3, 0x0f, 0x0c, 0xec, 0x34, 0x3c, 0x46, 0xb0, 0x1c, 0x76, 0xf8, 0x23, 0x58, 0x1b, +0xd8, 0x36, 0xa0, 0x32, 0x9b, 0x30, 0x88, 0x33, 0x08, 0x80, 0x18, 0xb0, 0x9b, 0x2b, 0x08, 0x03, +0x05, 0x29, 0x20, 0x20, 0x15, 0x24, 0xa4, 0x07, 0x91, 0x41, 0x33, 0x0c, 0x08, 0x8b, 0x49, 0xc1, +0x23, 0x83, 0x58, 0x33, 0x04, 0x20, 0x85, 0x14, 0x77, 0x90, 0x82, 0x69, 0x06, 0x31, 0x33, 0x48, +0x15, 0x21, 0x29, 0xbd, 0x20, 0x10, 0x7d, 0x04, 0x22, 0x6f, 0x15, 0xac, 0x0a, 0x86, 0x81, 0xc1, +0xc8, 0x73, 0x60, 0x59, 0x65, 0x8c, 0xac, 0x57, 0x80, 0x15, 0x49, 0xb2, 0x82, 0x3b, 0x59, 0xc1, +0x2d, 0x83, 0x08, 0x33, 0x30, 0x08, 0x60, 0x19, 0x4d, 0x05, 0x32, 0x49, 0x31, 0x99, 0x30, 0x45, +0x06, 0x33, 0x10, 0x57, 0x6c, 0x79, 0x61, 0x17, 0x00, 0x6c, 0x06, 0x24, 0x20, 0x03, 0x42, 0x1e, +0x03, 0xce, 0x1b, 0x40, 0x2a, 0x03, 0x66, 0x19, 0x17, 0x01, 0x2b, 0x30, 0xe0, 0x15, 0x12, 0x03, +0xae, 0x18, 0x0f, 0xc0, 0x21, 0x3c, 0x1c, 0x60, 0x65, 0x0d, 0xc2, 0x3c, 0x0b, 0x2a, 0x0c, 0x33, +0x10, 0x08, 0x60, 0x56, 0xfb, 0x30, 0xac, 0xf3, 0x60, 0x56, 0x59, 0x31, 0xac, 0x63, 0x50, 0x06, +0x33, 0x10, 0xa1, 0x94, 0x58, 0x56, 0x73, 0x22, 0x83, 0x33, 0x26, 0x14, 0x4d, 0xc9, 0x0a, 0x9b, +0x64, 0x10, 0x33, 0x0a, 0x42, 0x10, 0xc1, 0xcb, 0x88, 0x20, 0xcb, 0xc4, 0x10, 0xc3, 0x6c, 0x08, +0x3b, 0x09, 0x02, 0x11, 0x2b, 0x04, 0x62, 0x23, 0x02, 0x11, 0x1b, 0x81, 0x08, 0x13, 0x40, 0x04, +0x20, 0x82, 0x0b, 0x11, 0xc2, 0x33, 0x8b, 0x61, 0xda, 0xd1, 0x61, 0x23, 0x1b, 0x32, 0x88, 0x33, +0x45, 0xa8, 0x50, 0xdc, 0x64, 0x62, 0x78, 0x60, 0x62, 0xb6, 0x8b, 0x6c, 0xef, 0x62, 0xf1, 0x57, +0x55, 0x64, 0xe1, 0x05, 0x4f, 0x16, 0xef, 0xcc, 0x66, 0x01, 0x3e, 0x2c, 0x42, 0x38, 0x78, 0x11, +0x33, 0x17, 0xb2, 0x2c, 0x06, 0x86, 0xc5, 0x0f, 0x1f, 0x51, 0x2c, 0x1b, 0x17, 0xee, 0x88, 0x50, +0xb9, 0x32, 0x88, 0x33, 0x80, 0x3c, 0xb5, 0x72, 0xe0, 0xc9, 0x28, 0x9d, 0x4c, 0x22, 0xab, 0x67, +0x24, 0x29, 0x41, 0x15, 0x0c, 0x62, 0x33, 0xa1, 0x22, 0xbc, 0x05, 0xbf, 0xc8, 0xf8, 0xc8, 0x85, +0x45, 0x43, 0x56, 0x88, 0x9c, 0x0f, 0x44, 0x71, 0x66, 0x82, 0x91, 0x17, 0x88, 0x58, 0xf2, 0x38, +0xc9, 0xc3, 0x97, 0xc6, 0x7c, 0x0d, 0x1b, 0x12, 0xe2, 0x50, 0x3b, 0xaa, 0x0c, 0x33, 0x15, 0xff, +0xcf, 0xcd, 0xef, 0xec, 0xff, 0xdc, 0x8b, 0x0c, 0xc8, 0x27, 0xd1, 0x05, 0x9c, 0xf0, 0x0a, 0x1c, +0x4c, 0x80, 0xb0, 0x67, 0xb2, 0x08, 0x00, 0x01, 0x0c, 0x62, 0x33, 0x01, 0x0a, 0x98, 0x01, 0x21, +0x4b, 0x80, 0x55, 0x34, 0x01, 0xbb, 0x7e, 0x07, 0x06, 0x1d, 0x3c, 0x81, 0x01, 0x1b, 0xc0, 0xb9, +0x0d, 0x2d, 0x96, 0x30, 0x18, 0x10, 0x3c, 0x60, 0x15, 0x91, 0x41, 0x33, 0x0c, 0x58, 0x0d, 0x19, +0x30, 0x0b, 0x34, 0x60, 0x0a, 0x61, 0x15, 0x67, 0x40, 0x50, 0x28, 0x90, 0x41, 0x84, 0x51, 0x84, +0x33, 0xc9, 0xa0, 0x66, 0xc5, 0x17, 0x50, 0x7e, 0x17, 0x83, 0x4c, 0x3c, 0x55, 0xd1, 0x5e, 0x38, +0x07, 0x19, 0xe7, 0x66, 0x2d, 0x21, 0x08, 0x19, 0xc4, 0x7c, 0x33, 0x16, 0x47, 0x8f, 0x1b, 0xd8, +0xc5, 0xfc, 0x19, 0x7c, 0xc2, 0x10, 0xbf, 0x13, 0xc2, 0x7c, 0x3c, 0x65, 0x33, 0xe9, 0x74, 0x50, +0x27, 0x97, 0x57, 0xd1, 0x22, 0x92, 0x72, 0x50, 0x92, 0x5f, 0x50, 0x60, 0x60, 0xf8, 0x18, 0x41, +0x0f, 0x5d, 0xf0, 0xe6, 0x06, 0x06, 0x77, 0xfc, 0xac, 0xa0, 0x60, 0xf6, 0x83, 0xea, 0xec, 0xf9, +0x44, 0x05, 0xa2, 0x78, 0xae, 0xea, 0x45, 0x9c, 0x0c, 0x2c, 0x23, 0x9b, 0x25, 0x10, 0x97, 0x81, +0x20, 0xb7, 0x01, 0x2b, 0x60, 0x20, 0x63, 0x25, 0x27, 0x83, 0x89, 0x20, 0x97, 0x02, 0xd5, 0xfb, +0xa2, 0x56, 0xb0, 0xb2, 0xab, 0x41, 0x12, 0xa3, 0x93, 0x80, 0xc3, 0x59, 0x51, 0xdb, 0xa8, 0x02, +0x17, 0x32, 0xeb, 0xf2, 0xd8, 0xf6, 0x58, 0x5c, 0x5a, 0x00, 0xdc, 0x0c, 0xb2, 0x77, 0x58, 0x0e, +0x0f, 0xe5, 0x5d, 0x00, 0xd8, 0xd8, 0xfc, 0xda, 0xde, 0xb0, 0xdc, 0x0c, 0x0e, 0x09, 0xcb, 0x0f, +0x3e, 0x8c, 0xa0, 0x7c, 0xec, 0x90, 0x3f, 0x0f, 0xea, 0xb0, 0x3f, 0x2d, 0x21, 0x5b, 0x29, 0xea, +0x0c, 0x6b, 0x05, 0x2c, 0x80, 0x91, 0x43, 0xb7, 0xb2, 0x63, 0x00, 0xd9, 0x67, 0xee, 0x6c, 0xfe, +0x10, 0x0c, 0xd4, 0x6c, 0x0f, 0x56, 0x02, 0x7b, 0x32, 0xa2, 0x8b, 0x00, 0x95, 0xa8, 0x84, 0xdb, +0x92, 0x8d, 0xeb, 0xf0, 0x46, 0xd4, 0x9b, 0xa2, 0x56, 0x15, 0xb2, 0xab, 0x90, 0x11, 0xab, 0x44, +0x8d, 0x0c, 0x6a, 0x09, 0xb8, 0x2b, 0x03, 0x7b, 0x49, 0x51, 0x8b, 0x88, 0x0a, 0x54, 0xc8, 0xbb, +0x42, 0x56, 0xcb, 0x32, 0xa2, 0xcb, 0x94, 0x11, 0x3f, 0x0c, 0xa8, 0xfb, 0x45, 0x2d, 0x2a, 0x64, +0x0b, 0x21, 0x29, 0x2b, 0x4a, 0x19, 0x9f, 0xfd, 0xab, 0x05, 0x6c, 0xd8, 0x6c, 0x36, 0xb9, 0x80, +0x0f, 0x0d, 0x23, 0xaa, 0x11, 0x9b, 0xad, 0x02, 0x25, 0x41, 0x9b, 0x2b, 0x6a, 0xab, 0x51, 0x21, +0x1a, 0x49, 0x8b, 0x4b, 0xa0, 0x8b, 0x59, 0x05, 0x67, 0xa8, 0x55, 0xb5, 0xa4, 0xdb, 0x95, 0x40, +0xeb, 0xac, 0x82, 0x67, 0xb5, 0x8a, 0x90, 0x15, 0x5b, 0xb0, 0x8c, 0xff, 0x91, 0x55, 0x67, 0x10, +0x56, 0x21, 0x21, 0x46, 0xce, 0x0f, 0x66, 0x2c, 0x92, 0x32, 0xa8, 0xfb, 0x15, 0xb5, 0xaa, 0x95, +0xfb, 0x8d, 0x24, 0x0b, 0x24, 0x50, 0x0b, 0x8b, 0x28, 0x2f, 0x40, 0x35, 0x6a, 0x84, 0x1b, 0x35, +0x89, 0x2b, 0x95, 0x40, 0x2b, 0xac, 0x82, 0x67, 0xd5, 0xaa, 0x56, 0x12, 0x7b, 0x93, 0x82, 0x63, +0xa7, 0xa0, 0x3c, 0x64, 0x93, 0x60, 0x36, 0x18, 0x54, 0xab, 0xa2, 0x46, 0xd5, 0x32, 0xab, 0x52, +0x12, 0xbb, 0x3c, 0xa2, 0xbb, 0x89, 0xea, 0xcb, 0x51, 0x2b, 0x5a, 0x19, 0xcb, 0x75, 0xa2, 0xdb, +0x85, 0x11, 0xdb, 0x2b, 0x6b, 0xef, 0x19, 0x54, 0xcb, 0x8b, 0x6a, 0xdb, 0x54, 0x2b, 0xaa, 0x49, +0x2b, 0x23, 0x84, 0x3b, 0x19, 0x51, 0xab, 0xa2, 0x0a, 0x44, 0x48, 0xbb, 0x0a, 0x09, 0x63, 0x4a, +0x82, 0x20, 0x06, 0xd0, 0xcc, 0x8b, 0x6a, 0x0b, 0x54, 0x2b, 0x5a, 0x49, 0x5b, 0x4d, 0xa8, 0x6b, +0xaa, 0x85, 0xbf, 0x01, 0x2c, 0x6b, 0xa4, 0xa8, 0xfe, 0x3b, 0x51, 0xad, 0x6a, 0x65, 0x4b, 0x21, +0x29, 0x9b, 0xea, 0x65, 0x3f, 0x07, 0x07, 0x2b, 0x29, 0xdb, 0x58, 0x54, 0xeb, 0x02, 0x58, 0x38, +0x13, 0x1b, 0x28, 0x83, 0x33, 0x04, 0x22, 0x48, 0x12, 0x04, 0x04, 0x27, 0x03, 0x09, 0x96, 0x02, +0x01, 0x03, 0x26, 0xf0, 0xff, 0x82, 0x03, 0xf0, 0x8c, 0x0c, 0x71, 0x64, 0x10, 0x8d, 0x2c, 0x60, +0x3d, 0x16, 0xb0, 0x59, 0x51, 0x67, 0x48, 0x49, 0xc1, 0x4b, 0x28, 0x81, 0x59, 0x51, 0x69, 0x0b, +0x18, 0x75, 0xc0, 0x08, 0xa2, 0x66, 0xeb, 0x85, 0xb0, 0x93, 0x65, 0x50, 0x61, 0xcb, 0x80, 0xe5, +0xc0, 0x80, 0xdc, 0xe3, 0x30, 0xe0, 0xdc, 0xe1, 0x0c, 0x38, 0xdc, 0xdf, 0x12, 0x0e, 0xdc, 0x17, +0x03, 0xce, 0xdb, 0x80, 0x03, 0xe6, 0x53, 0xcb, 0xd9, 0xc8, 0xc3, 0x80, 0xd7, 0x82, 0x53, 0xd6, +0x10, 0x12, 0x01, 0x46, 0x42, 0x1d, 0x30, 0x03, 0xc4, 0xbd, 0x19, 0xc0, 0x0a, 0x80, 0x9a, 0x0d, +0x54, 0xca, 0x1f, 0x5a, 0x46, 0x8d, 0xc8, 0x80, 0x73, 0x46, 0xd4, 0xe1, 0x88, 0x5a, 0xc0, 0xc8, +0x9b, 0x94, 0x79, 0xc3, 0x57, 0x46, 0xa9, 0xfe, 0x90, 0x01, 0xbe, 0xa4, 0xa8, 0x5f, 0x9a, 0x85, +0x0d, 0xc8, 0x88, 0xb7, 0x56, 0xd4, 0x85, 0x88, 0x5a, 0xc2, 0xc8, 0xc5, 0xf7, 0xa0, 0x42, 0x35, +0x90, 0x6f, 0x96, 0x14, 0xdd, 0x92, 0xa2, 0x19, 0x90, 0x31, 0x4b, 0xc8, 0x80, 0xa8, 0x7a, 0xc0, +0xa6, 0xc0, 0x88, 0x9b, 0x50, 0x21, 0x1a, 0x49, 0xfb, 0xcb, 0x8a, 0x69, 0x49, 0x51, 0x6d, 0x0c, +0x48, 0x35, 0x55, 0x10, 0x1a, 0x94, 0x67, 0x4b, 0x8a, 0xb3, 0x89, 0x01, 0x89, 0x55, 0x10, 0x16, +0x90, 0x67, 0xb0, 0xa2, 0x23, 0x96, 0x91, 0x9f, 0xb0, 0x0a, 0x67, 0xd8, 0xaa, 0xfd, 0x30, 0x20, +0x66, 0xea, 0x31, 0x40, 0x2b, 0x83, 0x6f, 0x59, 0x51, 0xaf, 0x0e, 0x08, 0x5f, 0x8a, 0x3a, 0xc0, +0xca, 0xbd, 0xa2, 0x66, 0x5b, 0x0c, 0xb0, 0xcb, 0xa8, 0x07, 0x57, 0xac, 0xac, 0xd9, 0x64, 0x15, +0x67, 0x03, 0x42, 0x4b, 0x51, 0x03, 0x0b, 0x09, 0xad, 0x30, 0x66, 0x0b, 0x18, 0xb0, 0x03, 0x63, +0xcc, 0xce, 0x95, 0x55, 0x75, 0xc1, 0x80, 0x41, 0x84, 0xaa, 0xf0, 0x9b, 0x06, 0xac, 0x3d, 0x11, +0x35, 0xc2, 0xaa, 0x95, 0xc5, 0x85, 0x24, 0x33, 0x2f, 0x59, 0xf7, 0x2b, 0x5a, 0x59, 0x51, 0xcb, +0xa0, 0x45, 0x59, 0x54, 0x13, 0x83, 0x6a, 0x99, 0x72, 0x23, 0x8b, 0x44, 0x4d, 0xfd, 0x6a, 0x65, +0xa9, 0x2c, 0x89, 0x17, 0x91, 0x40, 0x7d, 0xc8, 0x80, 0x24, 0x65, 0xc0, 0x22, 0xc8, 0x80, 0x20, +0x06, 0xd5, 0xc3, 0x0c, 0x58, 0x1d, 0x6a, 0xd9, 0xa7, 0x2b, 0x89, 0xb1, 0xa4, 0xa8, 0xfe, 0x27, +0x51, 0xad, 0xa8, 0x25, 0x95, 0x8d, 0xa4, 0x7b, 0x51, 0xe7, 0x37, 0x58, 0x49, 0xb3, 0x90, 0x0c, +0x0d, 0x26, 0x01, 0x4b, 0x41, 0x4c, 0x10, 0x80, 0x33, 0x05, 0x02, 0x9f, 0xd0, 0x58, 0xfe, 0x0c, +0xa1, 0xcf, 0xe5, 0x07, 0x6c, 0xd3, 0xf6, 0xa2, 0x7e, 0x9c, 0x07, 0x5e, 0x8b, 0xe7, 0x00, 0xb0, +0x08, 0xff, 0x0a, 0x5a, 0x06, 0x04, 0x31, 0xcf, 0xa8, 0x60, 0xcb, 0x51, 0x4b, 0xde, 0xa8, 0x48, +0x43, 0x45, 0x4d, 0xce, 0xa3, 0x21, 0xa3, 0xa5, 0x19, 0xc1, 0xeb, 0x8c, 0x60, 0xfb, 0xa3, 0x36, +0x69, 0xa0, 0xa8, 0x96, 0x9e, 0x34, 0xac, 0xc3, 0x16, 0x7f, 0x97, 0x5e, 0x5b, 0xde, 0x15, 0x9a, +0xd1, 0x58, 0xa9, 0xb9, 0x3f, 0x8b, 0xfe, 0xdb, 0xde, 0x05, 0xb0, 0x19, 0x9d, 0xa0, 0xc6, 0x5a, +0x1f, 0x9f, 0x66, 0x11, 0x65, 0xfc, 0xed, 0xfc, 0x07, 0xc6, 0xcc, 0xf8, 0xf8, 0xcc, 0xc6, 0x82, +0x14, 0x3b, 0x41, 0x0a, 0x4b, 0x0d, 0x12, 0x2e, 0x38, 0xd4, 0x8b, 0x06, 0x07, 0x6a, 0x16, 0x0b, +0xd4, 0x12, 0x2e, 0xa3, 0x17, 0x3b, 0x49, 0xf5, 0x91, 0x48, 0x3c, 0x86, 0x11, 0x9b, 0x90, 0xa2, +0xa3, 0x46, 0x54, 0xa3, 0x29, 0x6a, 0xab, 0xa2, 0x0e, 0x00, 0x7b, 0x91, 0x0b, 0x05, 0x07, 0x46, +0xd4, 0xab, 0x8a, 0x1a, 0x11, 0x75, 0xb3, 0xa2, 0x96, 0xb3, 0x50, 0x93, 0xbb, 0x6a, 0x58, 0xcb, +0x35, 0x29, 0x53, 0x86, 0x11, 0xe3, 0x27, 0xf1, 0x05, 0x0d, 0x33, 0x1b, 0x05, 0x33, 0x33, 0xca, +0x7d, 0x97, 0x66, 0x09, 0x02, 0x23, 0x9b, 0x10, 0x15, 0xa2, 0x86, 0x1b, 0x42, 0x93, 0xa3, 0xb8, +0x24, 0x1a, 0xf6, 0x55, 0x10, 0x28, 0x94, 0x67, 0xb3, 0x49, 0x94, 0x7c, 0x06, 0x59, 0x05, 0x67, +0xa8, 0x10, 0x34, 0xa4, 0x7b, 0x82, 0x49, 0xde, 0x88, 0xac, 0x67, 0x84, 0x5e, 0x91, 0x27, 0x53, +0xd4, 0xc3, 0xac, 0xa8, 0xcb, 0x14, 0x95, 0x10, 0x9a, 0xcb, 0x11, 0x86, 0xd0, 0x0a, 0x2d, 0x89, +0x6e, 0xa2, 0x08, 0x60, 0x16, 0x4b, 0x5e, 0xaf, 0xab, 0x20, 0x67, 0x51, 0x28, 0xa8, 0x25, 0x6e, +0x61, 0x8f, 0x13, 0x1b, 0xac, 0xa8, 0xa3, 0x11, 0xb5, 0xf5, 0xe2, 0xa3, 0x2b, 0x81, 0x11, 0xab, +0xf5, 0xa0, 0xf6, 0x96, 0x11, 0xb3, 0x11, 0xf5, 0x05, 0x8b, 0x80, 0xbb, 0x9d, 0x45, 0x2d, 0xa8, +0x62, 0xb3, 0x66, 0x13, 0xbb, 0x4f, 0x12, 0xa8, 0xeb, 0x46, 0xd4, 0xa3, 0xb3, 0x08, 0x6f, 0x10, +0x88, 0x7c, 0xcb, 0xf2, 0x45, 0x5c, 0x7e, 0x06, 0x5d, 0xf6, 0x86, 0x8a, 0x5a, 0x19, 0xf4, 0xfb, +0x76, 0xcc, 0x62, 0x35, 0x6a, 0x59, 0x3d, 0x1d, 0x23, 0xeb, 0xf8, 0x0c, 0x8b, 0xd7, 0x06, 0x0c, +0xfa, 0x1c, 0x61, 0x11, 0x32, 0x55, 0xb0, 0x9f, 0x1a, 0x02, 0xc3, 0x49, 0xa8, 0xdb, 0x59, 0x05, +0x67, 0x40, 0x0e, 0x1d, 0xbf, 0xf2, 0x64, 0x62, 0x05, 0x99, 0x52, 0x44, 0x0a, 0x4a, 0x21, 0x0b, +0x50, 0x45, 0x00, 0x90, 0x14, 0xa1, 0xc1, 0x39, 0x13, 0x50, 0x56, 0x67, 0x09, 0x44, 0x00, 0x08, +0x94, 0x84, 0x22, 0x11, 0x30, 0x2f, 0xb7, 0xc0, 0x2a, 0x67, 0x01, 0x08, 0x45, 0x21, 0x40, 0x42, +0x11, 0x02, 0x48, 0x12, 0xa3, 0x21, 0x83, 0x33, 0x0c, 0xc8, 0x51, 0xe5, 0x68, 0x0a, 0x9e, 0x39, +0xbf, 0x22, 0xb2, 0x67, 0x50, 0xb2, 0x49, 0x50, 0xa2, 0x02, 0x41, 0x85, 0xc1, 0x39, 0xbb, 0x50, +0x56, 0x67, 0x12, 0x45, 0xbc, 0xa0, 0x17, 0xab, 0xc0, 0x67, 0x02, 0x02, 0x51, 0xa1, 0x20, 0x08, +0x2b, 0x0a, 0xab, 0x67, 0x7f, 0xa8, 0x0d, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x7f, 0xfb, 0x20, 0x66, +0x6f, 0x6e, 0x74, 0x04, 0x69, 0x6c, 0x65, 0x20, 0x68, 0x61, 0xff, 0x6f, 0x0d, 0x62, 0x65, 0x65, +0x6e, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0xdb, 0x64, 0x2f, 0x02, 0x69, 0x06, 0x13, +0xb7, 0x7f, 0x79, 0x20, 0x43, 0x50, 0x49, 0x61, 0x64, 0x09, 0x56, 0x31, 0xff, 0xed, 0x2e, 0x32, +0x30, 0x37, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0xfd, 0x2f, 0x28, 0x43, 0x29, 0x20, +0x31, 0x39, 0x39, 0x33, 0x2d, 0xfb, 0xd7, 0x04, 0x36, 0x28, 0x6b, 0x6f, 0x73, 0x74, 0x54, 0xdb, +0x7f, 0x40, 0x61, 0x63, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x1f, 0x4b, 0x63, 0x77, 0x0f, 0x61, 0x20, +0x4b, 0x15, 0x29, 0xff, 0x60, 0x71, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x77, 0xf7, 0x20, +0x6d, 0x61, 0x79, 0x6f, 0x20, 0x75, 0x73, 0x63, 0xdd, 0x5a, 0x66, 0x72, 0x09, 0x6f, 0x66, 0x6b, +0xad, 0x7a, 0x84, 0x36, 0x09, 0xf6, 0x5b, 0x7e, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x11, 0xdf, 0xda, +0x77, 0x8d, 0x69, 0x73, 0x6b, 0x2e, 0x0d, 0x00, 0x80, 0x0a, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, +0xff, 0xa4, 0xe8, 0x3a, 0x00, 0x72, 0xfa, 0x41, 0xe8, 0x2f, 0x00, 0xe3, 0x3b, 0x73, 0xf9, 0x83, +0xe9, 0x03, 0x72, 0x06, 0x88, 0xcc, 0xac, 0xf7, 0xd0, 0x95, 0x31, 0xc9, 0xe8, 0x1b, 0x00, 0x11, +0xc9, 0x75, 0x08, 0x41, 0xe8, 0x13, 0x00, 0x73, 0xfb, 0x41, 0x41, 0x81, 0xfd, 0x00, 0xf3, 0x83, +0xd1, 0x01, 0x8d, 0x03, 0x96, 0xf3, 0xa4, 0x96, 0xeb, 0xc8, 0xe8, 0x02, 0x00, 0x11, 0xc9, 0x01, +0xdb, 0x75, 0x04, 0xad, 0x11, 0xc0, 0x93, 0xc3, 0x5e, 0xb9, 0x01, 0x00, 0xac, 0x2c, 0xe8, 0x3c, +0x01, 0x77, 0xf9, 0x8b, 0x1c, 0x86, 0xdf, 0x29, 0xf3, 0x89, 0x1c, 0xad, 0xe2, 0xee, 0xc3 }; + +Bit8u font_ega5_cpx[5720] = { +0x81, 0xfc, 0x9a, 0xc1, 0x77, 0x02, 0xcd, 0x20, 0xb9, 0x58, 0x16, 0xbe, 0x58, 0x17, 0xbf, 0x3a, +0xc1, 0xbb, 0x00, 0x80, 0xfd, 0xf3, 0xa4, 0xfc, 0x87, 0xf7, 0x83, 0xee, 0xc6, 0x19, 0xed, 0x57, +0x57, 0xe9, 0xb9, 0xbf, 0x55, 0x50, 0x58, 0x21, 0x0b, 0x01, 0x04, 0x08, 0xcf, 0xfc, 0xfe, 0x92, +0xf9, 0xe1, 0xc2, 0x32, 0xcc, 0xbf, 0xc0, 0x15, 0x06, 0xcf, 0xbb, 0xfc, 0xff, 0x46, 0x4f, 0x4e, +0x54, 0x20, 0x00, 0x00, 0x01, 0x6e, 0x39, 0x01, 0x17, 0x06, 0xfd, 0xfd, 0x05, 0x00, 0x1c, 0x00, +0x4d, 0x26, 0x0e, 0x45, 0x47, 0x41, 0xc9, 0xcd, 0x1e, 0x20, 0xe1, 0x02, 0xfe, 0xd8, 0x35, 0x24, +0x03, 0x00, 0x12, 0x26, 0x10, 0x08, 0x95, 0xc5, 0x0a, 0x00, 0x6d, 0xff, 0x7e, 0x81, 0xa5, 0x81, +0x81, 0xbd, 0x99, 0x03, 0x7e, 0xfe, 0x83, 0x0f, 0xff, 0xdb, 0xff, 0xff, 0xc3, 0xe7, 0xff, 0xff, +0xe6, 0x77, 0x00, 0x6c, 0xfe, 0x3e, 0xec, 0x7c, 0x38, 0x10, 0x30, 0x10, 0x38, 0x7c, 0xfd, 0xc0, +0x0e, 0x18, 0x3c, 0x3c, 0xe7, 0xb2, 0xb6, 0x00, 0x18, 0x06, 0x0f, 0x65, 0x6e, 0x7e, 0x3b, 0x0f, +0xb3, 0xb3, 0x22, 0x18, 0x09, 0xde, 0xb1, 0xff, 0x00, 0xe7, 0xc3, 0x5f, 0x3f, 0xf6, 0x00, 0x1f, +0x3c, 0x66, 0x42, 0x42, 0x66, 0xff, 0x92, 0x3c, 0xc3, 0x99, 0xbd, 0xbd, 0x99, 0xc3, 0xfe, 0x21, +0x1e, 0x0e, 0x1a, 0x32, 0x78, 0xcc, 0xde, 0xeb, 0x00, 0x78, 0x20, 0x2d, 0xb9, 0xe6, 0x00, 0x4f, +0x61, 0xbb, 0x9f, 0x0f, 0x3f, 0x33, 0x3f, 0x30, 0x00, 0x70, 0xf0, 0xf9, 0xc8, 0xe0, 0x00, 0x7f, +0x63, 0x7f, 0x63, 0x9e, 0xbd, 0x67, 0xe7, 0xe6, 0xc0, 0x7c, 0x18, 0xdb, 0x87, 0xdd, 0xa0, 0x3c, +0xdb, 0x2e, 0x80, 0xbb, 0xfd, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8, 0x2d, 0xc0, 0x80, 0xbf, 0xfe, +0x1f, 0x02, 0x06, 0x0e, 0x1e, 0x3e, 0xfe, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x6b, 0x49, 0x2b, 0x5e, +0x7c, 0x67, 0x3c, 0x00, 0x66, 0x98, 0x9b, 0x07, 0x5f, 0xe7, 0x36, 0xdb, 0x00, 0x7b, 0x1b, 0xff, +0x9b, 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x0c, 0x06, 0xe4, 0xc6, 0x7c, +0x00, 0xfe, 0x43, 0x66, 0x4f, 0x7e, 0x6f, 0x60, 0x0f, 0x00, 0xbd, 0x60, 0x0f, 0x00, 0xfe, 0x96, +0x70, 0x11, 0x0c, 0xfe, 0x0c, 0x77, 0xc9, 0x0c, 0x00, 0x30, 0x60, 0xfe, 0x06, 0xe4, 0x60, 0x30, +0x00, 0xc0, 0x61, 0x56, 0x5c, 0xa1, 0x76, 0x39, 0x28, 0x6c, 0x28, 0x0e, 0x50, 0x58, 0x9f, 0xb2, +0xb7, 0xa0, 0x7c, 0x7d, 0x8a, 0x0e, 0x5b, 0x0e, 0x38, 0xaf, 0xbc, 0xc0, 0x00, 0x18, 0x3c, 0x66, +0xaf, 0x8c, 0x8f, 0x21, 0xeb, 0xe9, 0x24, 0x20, 0x8b, 0xb9, 0x6c, 0x5e, 0x03, 0xad, 0xfe, 0x36, +0xf1, 0xc2, 0xc0, 0x7c, 0x06, 0x06, 0x86, 0x1e, 0xd6, 0xef, 0xc1, 0xc2, 0xc6, 0x26, 0xdf, 0xae, +0x30, 0x60, 0xc6, 0x86, 0x2e, 0x14, 0x0e, 0x0c, 0x76, 0xdc, 0xc1, 0x1a, 0xaf, 0x76, 0xbd, 0x81, +0x6d, 0x00, 0x60, 0x4e, 0x8b, 0xb9, 0x2b, 0x00, 0xe5, 0xb9, 0x59, 0x0f, 0x08, 0x96, 0x8d, 0x00, +0x18, 0xe2, 0x15, 0x16, 0xde, 0xff, 0xe5, 0x84, 0x81, 0xa2, 0xed, 0x06, 0xb6, 0x14, 0x6c, 0xc0, +0x31, 0xfe, 0xd7, 0x96, 0xad, 0x31, 0xf9, 0x15, 0xe2, 0x9f, 0xc0, 0x80, 0xf8, 0x30, 0xae, 0xd6, +0xd6, 0x0e, 0x76, 0xb2, 0x27, 0x38, 0x78, 0x59, 0x10, 0x81, 0x2e, 0xf6, 0xe4, 0x7c, 0xc6, 0xc6, +0xfe, 0x0f, 0xd8, 0x4e, 0x06, 0x3c, 0x02, 0x06, 0xfd, 0x43, 0xdf, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, +0xfe, 0x9c, 0xd0, 0xb0, 0x1e, 0x8d, 0xfe, 0x03, 0xd6, 0xfc, 0x1f, 0x38, 0x90, 0xbb, 0x60, 0x0f, +0xc6, 0xc6, 0xc6, 0x66, 0xee, 0xfe, 0x3f, 0xf3, 0x73, 0xc3, 0x4f, 0x1a, 0x1f, 0x7d, 0x01, 0x0b, +0x7e, 0x0b, 0xdb, 0x3f, 0x0c, 0x78, 0xba, 0x0b, 0x7b, 0x04, 0x0f, 0x62, 0x93, 0x30, 0x9e, 0x92, +0x1a, 0x35, 0x06, 0xc2, 0xc9, 0xde, 0x02, 0x00, 0xf6, 0x62, 0x1b, 0x23, 0x5f, 0x25, 0x4c, 0x0c, +0xdf, 0xb6, 0xb3, 0x10, 0xde, 0x00, 0xdc, 0x61, 0x14, 0xc4, 0x2e, 0x3b, 0xdb, 0x6c, 0x90, 0xfe, +0x0f, 0x6c, 0x3c, 0xfc, 0x66, 0xf1, 0x7c, 0x86, 0xf4, 0xfc, 0x6f, 0xd4, 0x15, 0xef, 0x00, 0xc2, +0xf2, 0xe9, 0xa1, 0x10, 0xf8, 0x6c, 0x3f, 0x7b, 0x6c, 0xf8, 0x0f, 0xfe, 0x66, 0x62, 0x68, 0x84, +0xfc, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe, 0xc0, 0xb6, 0x00, 0xf0, 0x3f, 0x4d, 0x7e, 0xde, 0xc6, +0xc6, 0x66, 0x3a, 0x61, 0xef, 0x69, 0x6e, 0x6f, 0x6b, 0xc2, 0x3c, 0x7d, 0x30, 0x31, 0x26, 0x1e, +0x0d, 0x77, 0x49, 0xef, 0xe6, 0x6a, 0xb3, 0x6e, 0x78, 0x78, 0x74, 0xe6, 0x0f, 0xb3, 0xd8, 0xf0, +0x60, 0x00, 0x6f, 0x92, 0x7f, 0x4f, 0xee, 0xfe, 0xfe, 0xd6, 0xf2, 0xdb, 0x0f, 0xe6, 0xf6, 0xfe, +0xde, 0xce, 0x79, 0x58, 0x6f, 0xc6, 0x9b, 0x2d, 0xdf, 0x41, 0x27, 0xec, 0xf0, 0x1f, 0xd6, 0xde, +0x97, 0xe4, 0x7c, 0x0c, 0x0e, 0xe3, 0x29, 0xd9, 0xe6, 0x1f, 0xe2, 0xb2, 0x42, 0x50, 0x3f, 0x09, +0x7b, 0x7e, 0x7e, 0x5a, 0xaf, 0x16, 0xb2, 0xc6, 0x5f, 0x0f, 0x25, 0x0f, 0x6c, 0x38, 0x10, 0x43, +0xfe, 0xd6, 0xd6, 0xd6, 0xfe, 0xee, 0x6c, 0x6b, 0xa6, 0x6c, 0x8e, 0x61, 0x9f, 0x66, 0x0d, 0xce, +0x0b, 0xcb, 0x4f, 0x1b, 0x86, 0x21, 0x1f, 0x7f, 0xc2, 0x16, 0xec, 0x3c, 0x30, 0x00, 0x1f, 0xfe, +0x0a, 0xc1, 0x70, 0x38, 0x1c, 0x76, 0xb2, 0xaf, 0x3c, 0x0c, 0x00, 0x62, 0x0c, 0x3c, 0xdc, 0x8d, +0x90, 0xe6, 0xec, 0x34, 0x6c, 0xff, 0x18, 0xe9, 0x03, 0x78, 0x0c, 0x7c, 0xaf, 0x16, 0x2e, 0xe0, +0x19, 0x78, 0x66, 0x11, 0xe2, 0xcf, 0x1c, 0x13, 0x02, 0x00, 0xb9, 0xc3, 0xdf, 0x1c, 0x69, 0x2d, +0x2b, 0x00, 0x2f, 0x80, 0x8c, 0x1f, 0xfe, 0xc6, 0xfb, 0x36, 0x32, 0x30, 0x78, 0xaf, 0xcf, 0xf0, +0x5d, 0x76, 0x2e, 0xcc, 0xdf, 0xa1, 0x5f, 0xd2, 0x5f, 0x6c, 0x32, 0x9e, 0x76, 0xe6, 0xdc, 0x03, +0x61, 0x38, 0x4f, 0x6b, 0x4b, 0x09, 0x00, 0xdb, 0x00, 0xcc, 0x10, 0x17, 0x2f, 0x71, 0xc6, 0x00, +0xe6, 0x90, 0x9c, 0x2f, 0x38, 0x35, 0xba, 0x00, 0xec, 0x00, 0x4c, 0xd6, 0x00, 0xc6, 0x0f, 0xdc, +0xcb, 0x66, 0xa1, 0x9f, 0x6c, 0x09, 0x9f, 0x1f, 0xf6, 0xb1, 0x04, 0xf0, 0x9f, 0x90, 0x16, 0xd2, +0x19, 0xed, 0xdc, 0x9f, 0x1f, 0x4c, 0x60, 0xe4, 0x76, 0x09, 0xdf, 0x10, 0xd9, 0xb2, 0xdf, 0xfc, +0xde, 0x36, 0x1c, 0x1f, 0x10, 0x5e, 0x3d, 0x0f, 0x82, 0x31, 0x00, 0x47, 0xc0, 0x0f, 0x00, 0xb7, +0x84, 0x9a, 0x1b, 0x30, 0x53, 0x38, 0x75, 0x2f, 0xd4, 0xb5, 0x04, 0x0c, 0x03, 0x87, 0x52, 0xcc, +0x4f, 0xcd, 0xd9, 0xfe, 0xef, 0x0e, 0x70, 0x64, 0x3d, 0x0e, 0xf7, 0x09, 0x83, 0x3f, 0xda, 0x7b, +0x1b, 0x23, 0x24, 0x40, 0xf8, 0xc9, 0xdc, 0xdf, 0x8b, 0x34, 0xe2, 0x4f, 0x95, 0x34, 0xef, 0x76, +0x7a, 0xfe, 0x62, 0x1c, 0xff, 0xe6, 0x5e, 0x10, 0x10, 0xab, 0x3f, 0x2b, 0x69, 0xef, 0x5a, 0x19, +0xaf, 0x69, 0x4a, 0xdf, 0x7c, 0xef, 0x40, 0x0e, 0x7c, 0x91, 0xb4, 0xdf, 0x69, 0xb2, 0x6f, 0xc6, +0xdf, 0x52, 0x08, 0xe0, 0x30, 0x48, 0xde, 0x6d, 0xed, 0x82, 0x63, 0x5b, 0x82, 0x02, 0xa9, 0x07, +0xef, 0x0e, 0xe9, 0xfe, 0xff, 0xc6, 0xb6, 0x40, 0x1f, 0x6b, 0xe0, 0x62, 0x30, 0x5b, 0x62, 0xbf, +0x56, 0xd2, 0xdf, 0xb4, 0x92, 0x9f, 0xf6, 0xb1, 0xd7, 0x7c, 0x6d, 0x7c, 0xa6, 0x0b, 0xa4, 0xcf, +0xd8, 0x7b, 0x1c, 0x1e, 0x1f, 0x17, 0x61, 0x7b, 0x24, 0x2f, 0x69, 0x28, 0xee, 0x0f, 0xdc, 0xd8, +0x60, 0x6c, 0x00, 0xdc, 0x2f, 0xe0, 0x8b, 0xdb, 0xd8, 0x3c, 0xf8, 0x30, 0xfc, 0xa1, 0xbe, 0x64, +0x1f, 0x35, 0x7c, 0xda, 0x04, 0x3f, 0x9e, 0x21, 0xc5, 0xd3, 0x8f, 0x24, 0x3b, 0x78, 0xc0, 0xdf, +0x61, 0x3a, 0x7d, 0x9f, 0x61, 0x34, 0x94, 0x3c, 0xff, 0x90, 0x69, 0x49, 0x6b, 0x9d, 0x2f, 0x3e, +0xbd, 0xc4, 0x2b, 0xd9, 0x3f, 0x4f, 0x97, 0x31, 0xbf, 0xc6, 0x6f, 0xf6, 0xcc, 0xf8, 0xf8, 0xcc, +0xbf, 0x8f, 0x78, 0x5f, 0x4b, 0x6c, 0x0f, 0xee, 0xc2, 0xdf, 0xf6, 0x63, 0x21, 0x09, 0xb2, 0xb3, +0x06, 0xa1, 0x30, 0x4f, 0x38, 0x63, 0x17, 0x4a, 0x3c, 0x60, 0x7f, 0x1c, 0x42, 0x48, 0x6f, 0x72, +0x2f, 0x3f, 0x00, 0x6c, 0x48, 0x8f, 0xfc, 0x4f, 0xe3, 0x9d, 0x7e, 0xd8, 0x00, 0xbf, 0x86, 0xc1, +0x32, 0xb2, 0xe6, 0x1a, 0x54, 0x4f, 0x21, 0x69, 0xfe, 0x6f, 0x03, 0x7b, 0x7f, 0xcf, 0x3a, 0x84, +0x5c, 0x72, 0x10, 0x9d, 0x40, 0x5f, 0x10, 0xd6, 0xb0, 0x93, 0x1f, 0x11, 0x44, 0x01, 0x85, 0xbc, +0x55, 0xaa, 0x2e, 0xe4, 0xdd, 0x77, 0x18, 0xbb, 0xc0, 0x00, 0xf8, 0x0d, 0x64, 0x21, 0x0f, 0xe4, +0xd9, 0x36, 0x00, 0xf6, 0x36, 0x1b, 0x16, 0xc0, 0x0f, 0x64, 0x09, 0x2f, 0xd8, 0x79, 0xf6, 0x06, +0x00, 0xcd, 0x12, 0x3d, 0xb4, 0x90, 0x1f, 0x2f, 0x2c, 0x59, 0xee, 0x11, 0x4b, 0x16, 0x0f, 0x8f, +0x64, 0x0d, 0x00, 0x43, 0x36, 0xf8, 0xbf, 0x1f, 0x3c, 0x61, 0x2f, 0x18, 0x18, 0xff, 0xc9, 0x90, +0xff, 0xc2, 0x1a, 0x72, 0xc8, 0xda, 0x1f, 0x3f, 0x0c, 0xd9, 0x2d, 0x1f, 0x36, 0x24, 0x0f, 0x37, +0xbf, 0xd8, 0x13, 0x37, 0x30, 0x3f, 0x6d, 0x95, 0x4a, 0xbf, 0xd9, 0x85, 0x1f, 0xf7, 0x5f, 0x1b, +0x6c, 0x6d, 0xf7, 0x3f, 0x64, 0x21, 0x2f, 0x65, 0xb3, 0x1f, 0x2f, 0x65, 0xb3, 0x3f, 0x2f, 0x61, +0xb0, 0xdd, 0xff, 0x2f, 0x64, 0x21, 0x5f, 0x46, 0x76, 0xff, 0xdf, 0x16, 0x12, 0x86, 0xaf, 0x0d, +0x4b, 0xdf, 0xbd, 0x84, 0x3f, 0xef, 0xc9, 0x85, 0x3f, 0x3f, 0x24, 0x0b, 0x4f, 0x84, 0x20, 0x2d, +0x5f, 0x24, 0x8c, 0xaf, 0x9b, 0x6c, 0x4f, 0xff, 0x00, 0x61, 0x21, 0x9f, 0xe4, 0xb0, 0x00, 0xf0, +0x48, 0x86, 0x0f, 0x58, 0x58, 0x36, 0xe4, 0x30, 0x8f, 0x44, 0x58, 0x0f, 0x08, 0x10, 0x8f, 0x96, +0x5b, 0x0f, 0x5f, 0xe5, 0x12, 0x0f, 0x1e, 0x96, 0x4f, 0xf5, 0x66, 0xb2, 0x41, 0x0e, 0x1f, 0x12, +0x56, 0x4f, 0x81, 0xf4, 0x3f, 0xff, 0x21, 0xe9, 0x04, 0x08, 0xaf, 0xb7, 0xb0, 0x66, 0x0f, 0x2f, +0x1c, 0x30, 0x8f, 0x40, 0x80, 0x5b, 0x18, 0x9f, 0x0f, 0x68, 0x60, 0x7e, 0xaa, 0x78, 0xcd, 0x1e, +0xaf, 0x7e, 0x0f, 0x2c, 0xf6, 0x3a, 0x7e, 0x40, 0x0f, 0x85, 0xc1, 0x4f, 0x08, 0xb4, 0x0f, 0xff, +0x3b, 0x5b, 0x2f, 0x3c, 0x1f, 0x02, 0x01, 0x8f, 0xac, 0x52, 0x5d, 0x96, 0xd4, 0x41, 0x16, 0xa4, +0x3e, 0x10, 0x90, 0x4a, 0x6e, 0xf6, 0x5e, 0x0f, 0xbc, 0x6f, 0x06, 0x17, 0x66, 0x1f, 0xe7, 0x52, +0x50, 0x2a, 0x02, 0x0f, 0x09, 0xee, 0x90, 0x58, 0x97, 0x0c, 0x30, 0x1f, 0x81, 0xac, 0xac, 0xb0, +0x61, 0x42, 0x00, 0xdb, 0xf3, 0x0f, 0x0c, 0xec, 0x34, 0x3c, 0x35, 0x08, 0x5f, 0x6c, 0x81, 0x81, +0x58, 0x2c, 0xd9, 0x16, 0xa0, 0x32, 0xbc, 0x93, 0x2f, 0x00, 0x7e, 0x06, 0x90, 0x00, 0x0e, 0xc1, +0x0b, 0x05, 0x1c, 0x61, 0x03, 0x7e, 0x07, 0x16, 0x01, 0x7e, 0x80, 0x04, 0xff, 0x93, 0x20, 0xfd, +0x95, 0x04, 0xfb, 0x4a, 0x82, 0xf9, 0x38, 0x41, 0xf7, 0x8c, 0x24, 0xf5, 0x58, 0x12, 0xf3, 0x8c, +0x24, 0xf1, 0x5d, 0x12, 0xef, 0x78, 0x24, 0x98, 0x27, 0xec, 0x4e, 0xb0, 0xeb, 0x2c, 0x09, 0xea, +0x82, 0x13, 0xe9, 0x49, 0x70, 0xe8, 0xe7, 0x98, 0x4a, 0x24, 0x82, 0x12, 0xe5, 0x04, 0x4b, 0xe4, +0x70, 0xaa, 0xe3, 0x32, 0x48, 0x49, 0xe1, 0x24, 0x24, 0xde, 0x18, 0x12, 0xdd, 0x30, 0x24, 0xdb, +0x1c, 0x49, 0xda, 0x00, 0x92, 0xa0, 0xd7, 0xac, 0x37, 0x0d, 0x01, 0x49, 0xb0, 0xd2, 0x27, 0x08, +0xd1, 0x84, 0x04, 0xcf, 0x93, 0x20, 0xcd, 0x95, 0x04, 0xcb, 0x4c, 0x82, 0xc9, 0x54, 0x12, 0xc7, +0x45, 0x82, 0xc3, 0x93, 0xc0, 0x76, 0xc1, 0x84, 0x04, 0xbe, 0x93, 0x20, 0xbd, 0x96, 0x04, 0xbc, +0xf0, 0x09, 0xbb, 0x66, 0xc6, 0x1c, 0x48, 0xb9, 0x76, 0x52, 0x12, 0x5f, 0x34, 0x09, 0xb5, 0x92, +0xe0, 0x06, 0xb3, 0x20, 0xd9, 0x20, 0x12, 0x9c, 0xb0, 0xae, 0xb0, 0x40, 0x4b, 0xc2, 0x18, 0xfe, +0xfb, 0x49, 0x10, 0xa5, 0x93, 0x5a, 0x44, 0x97, 0x04, 0xa3, 0x7e, 0x96, 0x04, 0xa1, 0x04, 0xa7, +0x20, 0x1c, 0x96, 0x9f, 0xa3, 0x5c, 0x12, 0x9d, 0x1e, 0x02, 0x12, 0x9b, 0x49, 0xf0, 0x1b, 0x99, +0x04, 0x6f, 0x0d, 0xc1, 0xec, 0x97, 0xd4, 0x70, 0x20, 0x95, 0x7c, 0x60, 0x49, 0x93, 0x41, 0x92, +0x92, 0x09, 0x26, 0x80, 0x8e, 0x62, 0x2b, 0xb3, 0x12, 0xbc, 0x1e, 0x8b, 0x09, 0x56, 0x88, 0x04, +0x09, 0xc1, 0x8b, 0x87, 0x3c, 0x2b, 0x25, 0x84, 0xf3, 0x48, 0x25, 0x91, 0x12, 0x4c, 0xfc, 0x7f, +0x24, 0x58, 0x7e, 0x4e, 0x10, 0x7d, 0xd4, 0x09, 0x7c, 0xa7, 0x96, 0x8b, 0x8a, 0xa3, 0x65, 0x0d, +0xd8, 0x25, 0xc1, 0x77, 0x42, 0xea, 0x66, 0x3a, 0x95, 0x84, 0xd4, 0x83, 0x20, 0xc1, 0x3c, 0x71, +0xea, 0x6c, 0xed, 0xe6, 0x64, 0x59, 0x8e, 0x6c, 0x6c, 0x24, 0x18, 0xf0, 0x6c, 0x3a, 0xb5, 0x8b, +0x35, 0x90, 0x8a, 0x75, 0x21, 0x88, 0x7c, 0xc8, 0x20, 0x65, 0x7c, 0x96, 0x4d, 0xf0, 0x1b, 0x81, +0x09, 0x62, 0x70, 0x20, 0x61, 0xe6, 0x6c, 0x49, 0x5f, 0x37, 0x3b, 0x35, 0x7d, 0x99, 0x48, 0x2d, +0xca, 0x24, 0x58, 0x58, 0x12, 0x24, 0x57, 0x36, 0x23, 0xd7, 0x0d, 0x5e, 0x29, 0x1c, 0x66, 0x25, +0xa4, 0xb3, 0x6a, 0x9b, 0x45, 0xf7, 0x8c, 0x04, 0xcb, 0xa0, 0x04, 0x87, 0x4f, 0x3c, 0x82, 0x95, +0x4c, 0x82, 0x41, 0x4b, 0x3c, 0x18, 0x48, 0x49, 0xff, 0x03, 0x24, 0x45, 0xf0, 0x04, 0x43, 0x76, +0x1c, 0x48, 0x41, 0x7c, 0x02, 0x12, 0x3f, 0x49, 0xf0, 0xc3, 0x3d, 0x5c, 0x76, 0x76, 0x1b, 0xfe, +0x09, 0x92, 0x39, 0x90, 0x60, 0x7c, 0x38, 0x0c, 0x18, 0x76, 0x96, 0x20, 0x41, 0x35, 0x48, 0x30, +0xe6, 0x33, 0x12, 0x1c, 0x3c, 0x31, 0x24, 0x58, 0x2f, 0x21, 0x24, 0xbf, 0x78, 0xb1, 0x26, 0x29, +0x24, 0x24, 0x2b, 0x12, 0x12, 0x09, 0x26, 0xa4, 0x97, 0x7c, 0x61, 0xc2, 0x1b, 0x7c, 0xc1, 0x60, +0xd9, 0x8b, 0x3b, 0x90, 0x21, 0xf0, 0x37, 0x26, 0x2f, 0x70, 0x1c, 0xd4, 0x09, 0x1d, 0x82, 0x84, +0xac, 0x42, 0x42, 0x1a, 0xbf, 0x31, 0x5b, 0x0d, 0xab, 0x65, 0x86, 0xf5, 0x80, 0x0d, 0x29, 0x82, +0xa7, 0x83, 0x7c, 0x1e, 0x49, 0x11, 0x83, 0x2e, 0x09, 0x0f, 0x0e, 0x09, 0x09, 0x0d, 0x81, 0x04, +0x0b, 0x20, 0xc1, 0x70, 0x09, 0x4d, 0x4a, 0x66, 0x1b, 0x20, 0x71, 0x08, 0xac, 0x98, 0x03, 0x35, +0x20, 0x96, 0x00, 0x3b, 0x30, 0x8f, 0xfe, 0x1b, 0x04, 0x26, 0xf0, 0xb1, 0xcd, 0x9a, 0xfe, 0xb3, +0x29, 0xe9, 0x0d, 0x63, 0x83, 0x01, 0xf7, 0x7c, 0x60, 0x65, 0xa7, 0x0d, 0x16, 0x70, 0xd8, 0xc3, +0x18, 0xf0, 0xf0, 0xd8, 0xcc, 0xc6, 0xf1, 0x4a, 0x4a, 0x63, 0xbe, 0x97, 0x67, 0x4f, 0xfe, 0xb0, +0x92, 0x71, 0x2c, 0x19, 0xe7, 0xd1, 0x48, 0xb6, 0xc3, 0x01, 0x0f, 0xe3, 0x61, 0x87, 0xe2, 0x7e, +0x8b, 0xc9, 0x22, 0xbf, 0x96, 0x01, 0xdd, 0x04, 0x03, 0xdc, 0x76, 0x38, 0xad, 0x94, 0x53, 0x10, +0x60, 0x65, 0xa1, 0x97, 0x16, 0x46, 0x0c, 0x03, 0x71, 0x91, 0x8c, 0x44, 0x03, 0x3e, 0xbf, 0xf8, +0xcc, 0xd2, 0xc0, 0x2d, 0x47, 0x06, 0x3c, 0xd0, 0xcf, 0x40, 0x5a, 0x1d, 0xc0, 0x64, 0x70, 0xc7, +0x64, 0xcb, 0x78, 0xf3, 0xb1, 0x8c, 0x9f, 0x32, 0xc0, 0xe0, 0xc7, 0x4a, 0x46, 0xc9, 0xc0, 0x32, +0x74, 0xb0, 0x64, 0xc3, 0x7d, 0x61, 0x40, 0xc0, 0x30, 0x60, 0xbe, 0x65, 0x41, 0x70, 0x20, 0xd8, +0x30, 0x6f, 0x80, 0xd6, 0x13, 0x01, 0x25, 0xcd, 0xba, 0x01, 0x31, 0x60, 0xb7, 0x4c, 0x48, 0x1d, +0xfc, 0x07, 0x06, 0xb3, 0x70, 0x96, 0x01, 0xb1, 0x2e, 0x09, 0x80, 0xfe, 0x97, 0x90, 0x01, 0x6f, +0x18, 0x30, 0xb5, 0x5c, 0x18, 0x41, 0x44, 0xf3, 0x08, 0x03, 0x10, 0x60, 0x32, 0x60, 0xa3, 0x06, +0x04, 0x9f, 0xc0, 0x55, 0xf8, 0x60, 0x65, 0x9b, 0xc0, 0x32, 0x99, 0x20, 0x65, 0x97, 0xc0, 0x32, +0x95, 0x58, 0x64, 0x93, 0xac, 0x0c, 0x8f, 0x80, 0x07, 0x8d, 0x40, 0xca, 0x8b, 0x60, 0x65, 0x89, +0x18, 0x32, 0x87, 0x1f, 0x2b, 0x0c, 0x83, 0x90, 0x01, 0x51, 0xca, 0x80, 0x7d, 0x65, 0xc0, 0x7b, +0x36, 0x20, 0x77, 0x1f, 0x30, 0x42, 0x80, 0x19, 0x75, 0xc0, 0xca, 0x73, 0x0c, 0x78, 0x71, 0x6f, +0x01, 0x23, 0x32, 0xe0, 0x6d, 0x6b, 0x19, 0x90, 0x69, 0x32, 0x60, 0x67, 0x19, 0x30, 0x65, 0x80, +0x5b, 0x1b, 0x5c, 0x61, 0x61, 0x3f, 0x11, 0x06, 0x5d, 0x06, 0xbc, 0xd1, 0x59, 0xc0, 0x14, 0xff, +0x5c, 0x61, 0x55, 0xf8, 0x00, 0x06, 0x51, 0xc2, 0x80, 0x4d, 0x18, 0xb0, 0x4b, 0x0c, 0x58, 0x47, +0x81, 0xa9, 0x44, 0xbd, 0x49, 0x2f, 0x08, 0x10, 0xfd, 0x49, 0x6f, 0x0d, 0xd3, 0x49, 0x6f, 0x0d, +0xc5, 0x32, 0x60, 0x3d, 0x30, 0x60, 0x0e, 0x3b, 0x2d, 0x3b, 0x1c, 0x37, 0x03, 0x26, 0x7f, 0x37, +0x52, 0x2c, 0x86, 0x2d, 0x0b, 0x0d, 0xb0, 0xec, 0x29, 0x7d, 0x60, 0x19, 0x31, 0x38, 0x30, 0x2f, +0x7e, 0x25, 0x0c, 0x2d, 0x49, 0x88, 0x0d, 0x1c, 0x81, 0x01, 0x29, 0x61, 0xc0, 0x7c, 0x27, 0x56, +0x2c, 0x0d, 0xdd, 0x0c, 0x58, 0x22, 0x06, 0xa4, 0x20, 0x0c, 0x58, 0x1e, 0xe0, 0x2d, 0xdc, 0x92, +0x4b, 0x5b, 0x66, 0x19, 0x10, 0x19, 0x0c, 0x08, 0x17, 0x1e, 0xb0, 0x15, 0x20, 0x03, 0x12, 0x32, +0x60, 0x18, 0x0f, 0x06, 0x1c, 0x3c, 0x1c, 0x0d, 0x03, 0x56, 0x0b, 0x01, 0x21, 0x70, 0x81, 0x08, +0x08, 0x60, 0x19, 0x05, 0x03, 0x1c, 0xfc, 0xfb, 0x60, 0x80, 0xf6, 0x00, 0x0d, 0xf5, 0x6c, 0x04, +0x98, 0xee, 0xe9, 0xd0, 0x16, 0x06, 0x38, 0x5f, 0x2b, 0x81, 0x0d, 0x0f, 0xfe, 0x80, 0x07, 0x19, +0x02, 0x4c, 0xd7, 0xd1, 0x04, 0x08, 0xcb, 0x08, 0x10, 0xc5, 0x01, 0x3e, 0x0f, 0x07, 0x0f, 0x7d, +0xbf, 0x20, 0x80, 0xba, 0x70, 0x80, 0xb4, 0x01, 0x0a, 0xb3, 0xae, 0x06, 0xf8, 0x67, 0xe6, 0xc0, +0xa7, 0xd0, 0x00, 0xa8, 0x80, 0x0d, 0x0e, 0xa1, 0x20, 0x78, 0x80, 0x02, 0x9b, 0x02, 0x00, 0x07, +0x42, 0x13, 0xc0, 0x33, 0x8f, 0xc0, 0x00, 0x8a, 0xbb, 0x1b, 0x89, 0x00, 0x3e, 0x61, 0x49, 0x3c, +0x86, 0x5e, 0xb0, 0x7c, 0xd0, 0x27, 0x04, 0xf8, 0x26, 0xff, 0x72, 0xbc, 0xc3, 0x72, 0x0f, 0x48, +0x02, 0x65, 0x00, 0x07, 0x5f, 0xc0, 0x97, 0x59, 0x24, 0x66, 0xff, 0x0f, 0x38, 0x12, 0x9f, 0xbc, +0x18, 0xef, 0x2e, 0x06, 0x02, 0x3d, 0xd0, 0xf0, 0x46, 0xad, 0x24, 0x68, 0x08, 0x31, 0x56, 0xfc, +0x57, 0x18, 0x3e, 0x83, 0xf0, 0xe0, 0x7c, 0x18, 0x5b, 0x00, 0x0f, 0x23, 0x38, 0x64, 0xf5, 0x1e, +0x76, 0xcc, 0x98, 0x86, 0xf9, 0x30, 0xc0, 0x7c, 0x0f, 0x0c, 0x40, 0x12, 0x06, 0xb0, 0x25, 0x00, +0x2b, 0x03, 0x61, 0x7e, 0xd6, 0x18, 0x56, 0xe8, 0xbd, 0xea, 0x63, 0xd6, 0xe1, 0xc5, 0x5a, 0xdd, +0xc2, 0x17, 0x5f, 0xc9, 0x1c, 0xe5, 0xaf, 0xba, 0x07, 0x3c, 0xb3, 0x71, 0x56, 0xca, 0x1e, 0xe0, +0x7d, 0x73, 0xfc, 0x0f, 0xf1, 0xe8, 0xa9, 0xfc, 0xad, 0x53, 0xac, 0xea, 0x79, 0x2c, 0xf5, 0xbd, +0x02, 0x07, 0x7e, 0xf5, 0x62, 0xab, 0x74, 0xf7, 0x66, 0x62, 0x77, 0x67, 0x56, 0x8f, 0xaa, 0x94, +0xf5, 0x48, 0xa6, 0x59, 0x7d, 0x8d, 0x7c, 0x88, 0x5c, 0xb9, 0x07, 0x82, 0x7a, 0x25, 0x6b, 0x87, +0xac, 0x46, 0x3d, 0xfc, 0x76, 0xcc, 0x60, 0xfc, 0xcc, 0xbd, 0x32, 0xd0, 0x6b, 0x56, 0x5f, 0x69, +0xfe, 0x64, 0x68, 0x36, 0xfe, 0x07, 0xd5, 0x67, 0xf5, 0x1f, 0xce, 0xc1, 0xc2, 0x57, 0xe0, 0x0b, +0x56, 0x4d, 0x2f, 0xc1, 0x6a, 0x1e, 0x45, 0x06, 0xa3, 0xe6, 0x7f, 0xf0, 0x14, 0xac, 0x39, 0x8b, +0x49, 0xc1, 0xcb, 0xe2, 0xc5, 0xca, 0xde, 0x30, 0x1e, 0x6f, 0x7f, 0x8f, 0x45, 0x0f, 0xce, 0x7c, +0x0e, 0xf1, 0x22, 0x37, 0xca, 0x7d, 0x21, 0x0c, 0x7f, 0xa4, 0xf7, 0x0b, 0x57, 0xa5, 0x08, 0x35, +0x56, 0x41, 0x2a, 0xf8, 0x22, 0x16, 0x9d, 0x9d, 0xf4, 0x9b, 0x64, 0x3c, 0xdd, 0x48, 0xe7, 0x32, +0x6f, 0x3c, 0x08, 0x52, 0xdf, 0x53, 0x07, 0x97, 0xd9, 0x3a, 0x29, 0xd5, 0x3c, 0x61, 0xe0, 0x26, +0x61, 0xd4, 0x21, 0xba, 0xd4, 0x80, 0xbc, 0x76, 0x1a, 0xc0, 0x39, 0x75, 0xdc, 0xc3, 0xa4, 0xb0, +0x7f, 0x43, 0xaa, 0x16, 0xdd, 0x53, 0xa4, 0x7c, 0x97, 0x60, 0x3a, 0xa3, 0xf8, 0xf5, 0x76, 0xe5, +0x9a, 0x09, 0xf8, 0x2f, 0x54, 0x3b, 0x92, 0xaf, 0x0a, 0xef, 0x8c, 0x7f, 0x69, 0xb8, 0xa7, 0x84, +0x3c, 0x17, 0x46, 0x3d, 0x00, 0xe6, 0xd6, 0x91, 0x5a, 0x74, 0x18, 0x16, 0xce, 0x16, 0x0c, 0x6d, +0x0f, 0x4d, 0x36, 0x7c, 0x4f, 0x1e, 0xb3, 0x48, 0x56, 0x5f, 0x82, 0x8b, 0x7e, 0x4b, 0x87, 0xc5, +0xa9, 0x4a, 0x90, 0x9a, 0x47, 0x43, 0x60, 0xd4, 0x56, 0x30, 0xac, 0xfb, 0x1b, 0x8b, 0x00, 0x17, +0x7e, 0x2f, 0x1a, 0x9c, 0x37, 0xdf, 0x7e, 0x81, 0xa7, 0x21, 0x70, 0x61, 0x1b, 0xd6, 0x89, 0x0c, +0xb3, 0xdc, 0x12, 0x6b, 0x58, 0x46, 0xfc, 0x54, 0x4a, 0xf7, 0x91, 0x3b, 0xf9, 0x7f, 0x25, 0x9c, +0x8e, 0xfe, 0xf7, 0xc2, 0x84, 0x57, 0xef, 0x23, 0x4c, 0x7c, 0xf7, 0x7c, 0x84, 0x24, 0xef, 0x60, +0x34, 0xc6, 0xa5, 0x84, 0xef, 0xd4, 0x42, 0xa0, 0x38, 0x49, 0x28, 0x9f, 0xf7, 0x08, 0x46, 0xa9, +0x6c, 0x49, 0xff, 0x0f, 0x60, 0x84, 0x13, 0xcd, 0xef, 0x86, 0x30, 0xcf, 0x10, 0x8c, 0x8a, 0xa1, +0x92, 0xe7, 0x76, 0xe0, 0x05, 0x0c, 0xa0, 0x4d, 0x99, 0xd2, 0xd1, 0xf6, 0x73, 0x57, 0xfc, 0x37, +0x8b, 0x69, 0x26, 0x97, 0x53, 0x21, 0xd3, 0x17, 0x37, 0xa3, 0x5a, 0x6f, 0x42, 0xa6, 0x38, 0xe1, +0xe8, 0x61, 0x7f, 0x06, 0x0c, 0xe8, 0x1f, 0x7e, 0xed, 0x87, 0xc1, 0x7b, 0xc6, 0xa3, 0x47, 0xad, +0x37, 0xcd, 0xe8, 0x3c, 0xeb, 0xa3, 0x18, 0x2e, 0x2a, 0x47, 0x07, 0x38, 0x7e, 0x23, 0x12, 0x5e, +0xe0, 0x3f, 0xb7, 0x8b, 0xd1, 0x18, 0x0f, 0x66, 0x14, 0x0f, 0xbd, 0x8f, 0x0c, 0x70, 0x07, 0x08, +0x83, 0x67, 0xfe, 0xb7, 0x60, 0x30, 0xe6, 0xb1, 0x12, 0xde, 0x5c, 0xb8, 0xaf, 0x76, 0xec, 0x10, +0xc8, 0x22, 0x88, 0x01, 0x43, 0x68, 0xd9, 0x1a, 0x42, 0xd4, 0xb4, 0x12, 0xca, 0x84, 0x26, 0x9a, +0xbe, 0x21, 0x34, 0xb8, 0x0d, 0xa1, 0xb2, 0x1a, 0x09, 0xac, 0xd0, 0x12, 0xa0, 0x10, 0x9a, 0x9a, +0x94, 0x81, 0xd0, 0x8e, 0x80, 0xd0, 0xf8, 0x82, 0x03, 0xa1, 0x7c, 0x01, 0xa1, 0xff, 0x70, 0xc3, +0x62, 0x0f, 0x1f, 0x02, 0x42, 0x5e, 0x90, 0x87, 0x52, 0x37, 0x26, 0x94, 0x4c, 0xb4, 0x84, 0x46, +0x12, 0x3a, 0x40, 0x3a, 0x86, 0xd0, 0x34, 0x34, 0x84, 0x2e, 0xa1, 0x21, 0x28, 0x22, 0xcc, 0x2d, +0x0f, 0x6f, 0x20, 0x34, 0x10, 0x4b, 0x28, 0x0a, 0x2c, 0x66, 0x77, 0xfe, 0xe2, 0x0d, 0x27, 0xd8, +0xc0, 0xf2, 0xd7, 0x16, 0x6f, 0x27, 0xdd, 0x2c, 0x06, 0xd7, 0x58, 0x0c, 0xcb, 0xb0, 0x18, 0xc2, +0x8b, 0xd3, 0x47, 0xbc, 0xb8, 0xc7, 0x47, 0x07, 0xe1, 0x62, 0x2f, 0x07, 0x93, 0x98, 0x27, 0xcd, +0x06, 0x8b, 0x0e, 0xa4, 0x1c, 0x44, 0xc6, 0x1f, 0xc6, 0x66, 0x27, 0xd7, 0x66, 0x07, 0x3a, 0xe6, +0x0f, 0x47, 0x40, 0xb8, 0x5c, 0x4f, 0x4f, 0x40, 0xbe, 0x7c, 0xd9, 0xde, 0x02, 0x3e, 0x40, 0xb6, +0xa7, 0x3e, 0x9b, 0xb4, 0x40, 0xbc, 0x27, 0x07, 0x62, 0x50, 0xf6, 0xef, 0xf6, 0x17, 0x4c, 0x08, +0x1c, 0x2f, 0x83, 0x18, 0xc7, 0x2e, 0x3c, 0x38, 0x7e, 0x47, 0xb8, 0x58, 0x55, 0x05, 0x83, 0x5e, +0x4f, 0x6a, 0x72, 0x30, 0x51, 0x59, 0x4c, 0x0f, 0x3e, 0xcc, 0x62, 0x38, 0x18, 0x58, 0x33, 0x45, +0x32, 0x6e, 0x2f, 0x82, 0x21, 0x1f, 0x6b, 0x16, 0x1b, 0xdd, 0xab, 0xdc, 0x50, 0x4a, 0x48, 0x17, +0x00, 0x00, 0x0d, 0x62, 0x33, 0x0e, 0xc8, 0x81, 0x4c, 0x52, 0x03, 0x21, 0x47, 0x69, 0x26, 0x64, +0x04, 0x82, 0xa2, 0x46, 0x11, 0x03, 0x02, 0x4d, 0x18, 0x99, 0x06, 0x31, 0xcc, 0xf3, 0x03, 0x06, +0x68, 0x58, 0x44, 0x03, 0x06, 0x18, 0x69, 0x65, 0x11, 0x53, 0x84, 0xbd, 0x2f, 0x0f, 0x56, 0x80, +0x98, 0x0f, 0x09, 0x12, 0x58, 0x08, 0x59, 0x2f, 0x0d, 0x8b, 0x73, 0x61, 0xef, 0x6f, 0x4f, 0x5f, +0x66, 0x2a, 0x48, 0x0f, 0x01, 0x12, 0xe7, 0x0c, 0x59, 0x1f, 0x66, 0x81, 0x45, 0x53, 0x85, 0xb5, +0x06, 0x0f, 0x80, 0xbd, 0x2f, 0x0f, 0x48, 0xc4, 0xc6, 0x13, 0x98, 0x4b, 0x8d, 0x0f, 0x84, 0x4b, +0xdc, 0x08, 0x19, 0xf3, 0x42, 0x06, 0xd2, 0x5a, 0xac, 0xa9, 0xf5, 0x6e, 0x0c, 0x16, 0xea, 0x3e, +0xd2, 0xfe, 0xc9, 0x1e, 0x0f, 0xce, 0xff, 0x21, 0x10, 0x03, 0x32, 0x20, 0xf4, 0x6c, 0x59, 0xaf, +0x0f, 0x21, 0xbc, 0x30, 0x78, 0x4f, 0xd9, 0x61, 0x1f, 0x0f, 0x2e, 0x62, 0x23, 0xd9, 0x92, 0xc6, +0x4c, 0xd9, 0x2c, 0x3f, 0x1c, 0x30, 0x68, 0xba, 0xae, 0x1e, 0x04, 0x7c, 0xce, 0x64, 0x07, 0xe1, +0xe6, 0x7c, 0x40, 0x60, 0x64, 0x60, 0xca, 0x04, 0x8d, 0x73, 0xb3, 0x52, 0x1c, 0x1d, 0xcd, 0xda, +0x1e, 0x1f, 0x53, 0x42, 0x7c, 0x0e, 0x1a, 0xa3, 0x1b, 0x93, 0x18, 0x0e, 0xb1, 0xd4, 0x01, 0xb0, +0x10, 0xaf, 0x03, 0xe1, 0xef, 0x4f, 0x2d, 0x7b, 0x0f, 0xcf, 0x85, 0xec, 0x2f, 0xbf, 0x28, 0x1c, +0xad, 0x70, 0x49, 0x93, 0x0c, 0x21, 0xa9, 0xa3, 0x62, 0xa3, 0x3c, 0xc9, 0x36, 0xd1, 0x12, 0x23, +0x24, 0x9b, 0xd9, 0xcb, 0x3b, 0x03, 0xa7, 0x02, 0x60, 0xc0, 0x24, 0x40, 0x33, 0xa2, 0xfb, 0x82, +0xb2, 0xaa, 0xaa, 0x02, 0x82, 0xb5, 0x0c, 0x63, 0x00, 0x4c, 0x01, 0x16, 0x4e, 0x77, 0xe0, 0xa8, +0x6c, 0x62, 0x0b, 0xe8, 0xdc, 0xb2, 0x2d, 0x98, 0x3e, 0x0f, 0x9a, 0xfd, 0x66, 0xce, 0x9a, 0x3f, +0x22, 0xe8, 0x9d, 0x2e, 0xbc, 0x36, 0x2c, 0x96, 0x85, 0xcc, 0x3c, 0x36, 0x6c, 0xd8, 0x00, 0x66, +0xb7, 0x0d, 0x6c, 0xd8, 0x60, 0x10, 0x33, 0xb4, 0x50, 0x94, 0x6c, 0x64, 0x6f, 0x0f, 0x21, 0x2f, +0x60, 0x30, 0x77, 0x6c, 0xef, 0x9a, 0xa2, 0x00, 0x88, 0x58, 0x9a, 0xef, 0xa1, 0x32, 0x33, 0x9d, +0x62, 0xff, 0x5e, 0x92, 0x04, 0xc1, 0x10, 0x29, 0xa8, 0x0c, 0xe2, 0xf1, 0x33, 0xb1, 0x8a, 0xcb, +0x98, 0x12, 0x5f, 0x09, 0x73, 0x0c, 0xff, 0x64, 0x10, 0x33, 0xa4, 0x50, 0x0f, 0x62, 0xd0, 0x89, +0x7e, 0x10, 0x7f, 0x34, 0x18, 0x2c, 0x06, 0x3e, 0x04, 0x3d, 0xbe, 0x22, 0x97, 0x03, 0xf6, 0x64, +0x1d, 0xbf, 0x1f, 0x17, 0x36, 0xc6, 0x0f, 0x30, 0x12, 0x58, 0x3f, 0xc7, 0x92, 0x3f, 0x0f, 0xb0, +0x02, 0x53, 0xcc, 0x35, 0xac, 0x0f, 0x48, 0x26, 0x00, 0x19, 0x44, 0x33, 0xb3, 0x50, 0x40, 0xbd, +0x60, 0x47, 0x9f, 0xb0, 0x90, 0x7f, 0x36, 0xac, 0xb7, 0x9f, 0x6f, 0x51, 0x84, 0xb6, 0x9c, 0xb3, +0xcc, 0xcc, 0xff, 0x26, 0x6c, 0x1f, 0x30, 0xc3, 0xca, 0x2f, 0xd2, 0xb6, 0x2c, 0x1f, 0x0c, 0x01, +0x4a, 0x93, 0x90, 0x03, 0x66, 0x0c, 0x60, 0xc0, 0xc3, 0x04, 0x68, 0x7c, 0xa3, 0xcc, 0x06, 0xf0, +0x0e, 0xbe, 0x53, 0x2c, 0x8f, 0xc6, 0xdd, 0x40, 0x7f, 0xc6, 0x32, 0x24, 0xc6, 0xbc, 0x16, 0x9f, +0x6e, 0x09, 0x3f, 0x0c, 0x21, 0x10, 0xb3, 0x0b, 0x23, 0x39, 0x02, 0x7b, 0x5f, 0x00, 0x5a, 0x42, +0xbb, 0x85, 0x2c, 0x10, 0x12, 0x42, 0xe7, 0x58, 0xdf, 0xbd, 0x30, 0x62, 0x36, 0xec, 0x6f, 0x2b, +0x4a, 0x33, 0x51, 0x2a, 0xca, 0x66, 0x19, 0x00, 0xe8, 0x41, 0xff, 0x11, 0xb2, 0x1d, 0x2b, 0x9b, +0x94, 0x2a, 0x22, 0x60, 0x0a, 0x12, 0xb1, 0x90, 0x4c, 0x29, 0x58, 0x21, 0x0c, 0xa2, 0x7c, 0x33, +0xaa, 0xa0, 0x42, 0x11, 0x89, 0x09, 0x1e, 0x18, 0x70, 0x03, 0x09, 0x2e, 0x76, 0x01, 0x13, 0x01, +0xd0, 0xcb, 0x80, 0xff, 0xd9, 0x7b, 0x1b, 0x29, 0x0d, 0x32, 0x60, 0xfb, 0x30, 0x60, 0x76, 0xf9, +0x8b, 0x38, 0x76, 0x2b, 0x7b, 0x09, 0x61, 0x45, 0x62, 0xd9, 0x53, 0x5b, 0x76, 0xf6, 0x0d, 0x44, +0x60, 0x59, 0x6f, 0xe0, 0x32, 0xef, 0x3c, 0x37, 0x30, 0xed, 0x0d, 0x96, 0xbd, 0x29, 0x0d, 0x2c, +0x03, 0xe9, 0x12, 0x06, 0xe7, 0x2d, 0x03, 0xe5, 0x60, 0x19, 0xa4, 0x42, 0x35, 0xe3, 0x18, 0x60, +0xc0, 0x6e, 0xe1, 0x18, 0x70, 0xce, 0xdf, 0x01, 0x1b, 0x99, 0x1b, 0xc8, 0xc6, 0xc6, 0x0d, 0x65, +0xc0, 0xd9, 0xd9, 0xb2, 0xfb, 0x0d, 0x11, 0x6f, 0x37, 0xb3, 0x24, 0xe5, 0x42, 0xf4, 0x66, 0x37, +0x18, 0x70, 0x64, 0x20, 0x02, 0xc0, 0x1d, 0xcf, 0xe6, 0x7c, 0x80, 0x80, 0x65, 0xcd, 0x19, 0xf0, +0xcc, 0xcb, 0xcb, 0x80, 0xca, 0xe0, 0x54, 0x63, 0x9c, 0x30, 0xc7, 0xd8, 0x70, 0x58, 0x06, 0xc5, +0x09, 0x4b, 0xb1, 0x17, 0x65, 0x6f, 0x0d, 0xb5, 0x96, 0xbd, 0x29, 0xa7, 0x2c, 0x03, 0xbd, 0x12, +0x06, 0xbb, 0x2b, 0x03, 0xb9, 0x84, 0x01, 0xb7, 0xc5, 0x80, 0xb5, 0x0f, 0x98, 0x53, 0xb3, 0x84, +0x01, 0xb2, 0xe0, 0x80, 0xb1, 0xcd, 0x19, 0xaf, 0x63, 0x6e, 0xc3, 0xb6, 0xc3, 0x85, 0x1f, 0x0d, +0xcc, 0xe8, 0x36, 0x6e, 0xda, 0x3c, 0x80, 0x07, 0xab, 0x18, 0xf0, 0xaa, 0xa8, 0x03, 0x16, 0xa6, +0x06, 0x31, 0x33, 0x60, 0x55, 0xb0, 0x30, 0x9b, 0x48, 0x18, 0x99, 0x24, 0x0c, 0x97, 0x58, 0x06, +0x95, 0x10, 0x0f, 0x94, 0x42, 0x64, 0x33, 0x30, 0x03, 0x8b, 0x03, 0x1e, 0x8a, 0x89, 0x10, 0x09, +0x00, 0x64, 0x33, 0xcb, 0x80, 0x79, 0xc0, 0x80, 0x76, 0x77, 0x20, 0xdc, 0xdf, 0xa9, 0xc2, 0x33, +0x92, 0x01, 0x67, 0x18, 0xd0, 0x03, 0x65, 0x01, 0x1a, 0xe9, 0x45, 0x26, 0xf6, 0x09, 0xa9, 0x95, +0x9b, 0x3a, 0xb0, 0xc6, 0x0d, 0x30, 0xc6, 0x4a, 0xb7, 0xd7, 0x0c, 0x48, 0x59, 0x64, 0xb7, 0x0d, +0x3c, 0x66, 0x42, 0x0e, 0x00, 0x19, 0x44, 0x33, 0xb1, 0x10, 0x38, 0x3b, 0x73, 0x0e, 0x06, 0x30, +0x6f, 0x61, 0x09, 0x30, 0xd2, 0x69, 0x60, 0xd3, 0x01, 0x13, 0x78, 0xbd, 0x92, 0x42, 0x4e, 0x64, +0x97, 0x1b, 0x30, 0x29, 0x30, 0x60, 0x30, 0xc0, 0x6c, 0x7c, 0x0a, 0x20, 0x64, 0x3a, 0x01, 0x33, +0x28, 0x03, 0x96, 0x37, 0x35, 0x30, 0x64, 0xe0, 0x03, 0x1e, 0x34, 0x33, 0xc6, 0x2e, 0x7c, 0x6f, +0xc6, 0x59, 0x42, 0x0d, 0x35, 0x6b, 0x0b, 0x03, 0x92, 0x97, 0x2b, 0x13, 0x2c, 0x1a, 0xca, 0x80, +0x27, 0x0c, 0x38, 0xfe, 0x22, 0x01, 0x8b, 0xa9, 0x8c, 0x1f, 0x63, 0xe1, 0x46, 0x34, 0x73, 0x80, +0x54, 0x30, 0xc0, 0x19, 0xbc, 0x62, 0x81, 0x6d, 0x40, 0x06, 0x13, 0x60, 0xc0, 0x18, 0x0f, 0x0c, +0x58, 0x0d, 0x18, 0x44, 0x33, 0x40, 0x01, 0x26, 0x62, 0xfa, 0x28, 0x46, 0xff, 0x8c, 0x4e, 0xd6, +0x76, 0xf6, 0x30, 0x1a, 0x7c, 0xf0, 0x63, 0x6e, 0x76, 0x17, 0x07, 0x60, 0x6c, 0x93, 0x30, 0x17, +0x38, 0x93, 0x98, 0xe3, 0x05, 0xa3, 0x70, 0xd2, 0xba, 0x09, 0xef, 0x07, 0x30, 0x46, 0xc1, 0x3f, +0xc0, 0xcc, 0x0d, 0x3c, 0x1f, 0x07, 0xc7, 0x5c, 0x17, 0x07, 0xc6, 0x10, 0x62, 0x10, 0xa4, 0x28, +0xe7, 0x47, 0x27, 0xb1, 0x19, 0x41, 0x2c, 0xf8, 0x35, 0x42, 0xd5, 0xec, 0x47, 0x0b, 0x7f, 0x6e, +0x97, 0xa0, 0xa3, 0x96, 0xce, 0x46, 0xc1, 0x41, 0x47, 0x37, 0x1b, 0x57, 0x07, 0x37, 0x23, 0x7e, +0x8f, 0x70, 0xb3, 0x07, 0x1f, 0xda, 0x89, 0x2b, 0x06, 0x17, 0x29, 0x81, 0x0e, 0x1e, 0xbd, 0x27, +0x5f, 0x47, 0x8f, 0x5e, 0x5a, 0x3d, 0x23, 0x59, 0x3a, 0x6c, 0x30, 0xda, 0x0f, 0x6c, 0xb8, 0x4e, +0xd4, 0xd1, 0x48, 0x3c, 0x33, 0x7a, 0x47, 0x42, 0x30, 0x7b, 0xf7, 0x9f, 0xe6, 0x66, 0xd5, 0xd9, +0x5f, 0x30, 0x0a, 0x2a, 0x20, 0xdc, 0x07, 0x64, 0xf4, 0xfc, 0x1f, 0x0d, 0xa3, 0x19, 0xd1, 0x19, +0x12, 0x7c, 0x31, 0x9a, 0x0c, 0x0b, 0xed, 0x83, 0xfe, 0x04, 0x63, 0x6b, 0xbd, 0xfb, 0x7e, 0x33, +0x66, 0xcc, 0x0f, 0x07, 0x7a, 0x36, 0x6a, 0xdf, 0x4c, 0xa8, 0x11, 0xf4, 0xed, 0x0e, 0xc1, 0x16, +0x66, 0x33, 0x70, 0x5f, 0x44, 0x66, 0x09, 0x02, 0x83, 0x33, 0x84, 0x16, 0x97, 0x37, 0xcf, 0xda, +0x9c, 0x07, 0x60, 0x30, 0x87, 0x26, 0xb2, 0x88, 0x43, 0xb1, 0x84, 0x32, 0x33, 0x14, 0x1c, 0xbc, +0x65, 0x0e, 0x1c, 0xbf, 0xfa, 0x62, 0x42, 0x8d, 0x82, 0x0c, 0x33, 0x98, 0xd0, 0x5e, 0x62, 0x76, +0x17, 0x7f, 0x88, 0x0c, 0x33, 0xef, 0x50, 0x28, 0xcd, 0x71, 0xe8, 0x76, 0x18, 0x6c, 0x22, 0xca, +0x47, 0x9b, 0xf6, 0x7b, 0x18, 0xf7, 0x10, 0x59, 0x38, 0x63, 0x00, 0x17, 0x30, 0x08, 0xcb, 0x1f, +0x9f, 0x11, 0x28, 0xe6, 0x0b, 0x16, 0xfb, 0x06, 0x08, 0x37, 0x07, 0x85, 0x32, 0x33, 0x0d, 0x12, +0x20, 0x30, 0xc3, 0x82, 0x3f, 0x1b, 0x3d, 0x0e, 0x57, 0x37, 0xc6, 0xa2, 0xd5, 0xbc, 0xcc, 0xe1, +0x1d, 0x5f, 0x0f, 0x5f, 0x2c, 0xde, 0x07, 0x9f, 0xc5, 0x1b, 0x7c, 0xef, 0x8b, 0x09, 0xab, 0x82, +0x8f, 0xe2, 0xc0, 0x5a, 0x8b, 0x17, 0x89, 0x93, 0xd1, 0xdc, 0x07, 0x47, 0xb3, 0x98, 0x77, 0x89, +0xcd, 0x1e, 0xaf, 0x0f, 0x38, 0xa3, 0x17, 0x9f, 0x0c, 0x8b, 0x77, 0x79, 0x77, 0x6b, 0x62, 0x00, +0x7e, 0x62, 0xcb, 0x5d, 0x0a, 0xfd, 0x1f, 0x2a, 0xe1, 0x32, 0xe4, 0x3a, 0xf6, 0x2a, 0x5f, 0x86, +0x82, 0x00, 0x34, 0x49, 0x80, 0x33, 0x06, 0x16, 0x3e, 0x78, 0x98, 0xb7, 0x87, 0x18, 0xb2, 0x2e, +0x18, 0xe2, 0xb0, 0x21, 0x3c, 0x16, 0x0f, 0x2b, 0x7a, 0x19, 0xc4, 0x78, 0x33, 0x90, 0x03, 0xb5, +0x72, 0x3c, 0x19, 0x53, 0x9d, 0x4c, 0x14, 0x91, 0x82, 0x92, 0xc8, 0x82, 0x20, 0x51, 0x21, 0x83, +0x27, 0x61, 0x10, 0x33, 0x82, 0x50, 0x84, 0x0c, 0x87, 0x85, 0x41, 0x33, 0x0c, 0x82, 0x97, 0x64, +0xa3, 0x00, 0x83, 0x60, 0xa7, 0x10, 0x21, 0x08, 0x65, 0x33, 0xc8, 0x20, 0xc7, 0x19, 0x44, 0x33, +0x08, 0x42, 0x11, 0x32, 0xe7, 0x54, 0x06, 0x33, 0x2c, 0x82, 0x07, 0x41, 0x84, 0x08, 0x96, 0x33, +0xac, 0xb2, 0x17, 0x65, 0x11, 0x07, 0x8b, 0x20, 0x27, 0xd9, 0x09, 0x04, 0x08, 0x0f, 0x11, 0x9c, +0x58, 0x65, 0x27, 0xc8, 0x80, 0xa7, 0x10, 0xa3, 0x22, 0x64, 0x33, 0x2a, 0x03, 0xb7, 0x19, 0x44, +0x33, 0x62, 0x10, 0x2a, 0x09, 0x27, 0x06, 0x11, 0x33, 0x62, 0x55, 0x28, 0x09, 0x67, 0x19, 0x44, +0x33, 0x22, 0x14, 0x20, 0x09, 0xd7, 0x19, 0xc4, 0x33, 0x22, 0x14, 0x02, 0x0b, 0x47, 0x10, 0xa1, +0x46, 0x65, 0x33, 0xb6, 0x20, 0x87, 0x60, 0xb6, 0x42, 0x36, 0x31, 0x09, 0x95, 0x05, 0x97, 0xae, +0x04, 0xcf, 0x61, 0x10, 0x33, 0x20, 0x42, 0x2b, 0xb0, 0xc7, 0x60, 0x10, 0x33, 0x82, 0x08, 0x10, +0xcb, 0xd7, 0x1c, 0x65, 0x33, 0x66, 0x88, 0x94, 0xb1, 0x0c, 0x07, 0x95, 0x00, 0x97, 0x20, 0xb6, +0xce, 0xc6, 0x84, 0x10, 0xa7, 0x94, 0x41, 0x33, 0x02, 0x11, 0xa9, 0x40, 0x96, 0x01, 0xf9, 0xc2, +0x20, 0x33, 0x04, 0x0b, 0x48, 0x48, 0x43, 0xb0, 0x0c, 0xe9, 0x91, 0x44, 0x51, 0x30, 0x60, 0xe1, +0x20, 0x86, 0x7c, 0xb0, 0xc8, 0x33, 0x62, 0x19, 0xdb, 0x8b, 0x0c, 0x33, 0x48, 0x04, 0x97, 0x83, +0x48, 0x33, 0x41, 0x22, 0x12, 0x16, 0x93, 0xcb, 0x20, 0x33, 0x59, 0x04, 0xa1, 0x08, 0x16, 0xc1, +0xb2, 0x93, 0x42, 0x16, 0xaf, 0x04, 0x87, 0x13, 0x56, 0x59, 0xaf, 0x32, 0x20, 0x5f, 0x44, 0x00, +0x48, 0x18, 0x33, 0xc8, 0x80, 0x6d, 0x06, 0x91, 0x33, 0x58, 0x14, 0xc8, 0x80, 0xcf, 0x41, 0x84, +0x58, 0x91, 0x33, 0x48, 0x82, 0x07, 0x06, 0x11, 0x33, 0x48, 0x15, 0x42, 0x82, 0x69, 0x06, 0x31, +0x33, 0x48, 0x15, 0x40, 0x82, 0xcb, 0x44, 0x20, 0x11, 0x19, 0x33, 0x2c, 0x88, 0x03, 0x66, 0x2b, +0x30, 0x41, 0x4c, 0x41, 0x64, 0x11, 0x83, 0x78, 0x08, 0x10, 0x33, 0xb1, 0x02, 0x95, 0x05, 0x3b, +0x0c, 0x62, 0x33, 0x41, 0xac, 0x88, 0x64, 0x49, 0x0c, 0x32, 0x33, 0x56, 0x06, 0x13, 0x12, 0x20, +0xd3, 0x02, 0xc4, 0x71, 0xf1, 0x5a, 0xdb, 0x81, 0x00, 0x7f, 0x0c, 0x22, 0x33, 0x80, 0x00, 0x14, +0x12, 0xa1, 0x20, 0x47, 0x41, 0x04, 0x08, 0x85, 0x33, 0x41, 0x28, 0x77, 0x60, 0x10, 0x33, 0x84, +0x82, 0x7f, 0x19, 0x85, 0x98, 0xa1, 0x20, 0x87, 0x06, 0x31, 0x33, 0x0a, 0x42, 0x44, 0x10, 0x97, +0x08, 0x19, 0x33, 0x41, 0x28, 0xa7, 0x64, 0x10, 0x33, 0xa3, 0x20, 0x37, 0x41, 0x04, 0x0a, 0x82, +0x33, 0x10, 0x32, 0x3f, 0x82, 0x51, 0x37, 0x30, 0x0a, 0x47, 0xc1, 0xec, 0xd3, 0x07, 0x46, 0x46, +0x47, 0x12, 0x20, 0x87, 0x10, 0x0b, 0x88, 0x60, 0x33, 0x8c, 0x04, 0x8f, 0x90, 0x41, 0x33, 0x80, +0x58, 0x11, 0x4a, 0xc7, 0x50, 0x06, 0x33, 0x04, 0x88, 0xe7, 0x41, 0x8c, 0x58, 0x90, 0x33, 0xc8, +0x80, 0x1f, 0x19, 0x44, 0x33, 0x88, 0x11, 0x08, 0x0c, 0x57, 0x06, 0xb1, 0x33, 0x88, 0x50, 0x85, +0x0c, 0x77, 0x20, 0x86, 0x1b, 0x88, 0x32, 0x7f, 0x98, 0x45, 0x68, 0x2b, 0x83, 0x33, 0x18, 0x10, +0x97, 0x20, 0x16, 0x10, 0xc9, 0x33, 0x88, 0x18, 0x9f, 0x10, 0x32, 0x33, 0x20, 0x0e, 0xf1, 0xc1, +0x12, 0x37, 0x1c, 0x56, 0xff, 0xd3, 0x21, 0x40, 0x07, 0x0c, 0x22, 0x33, 0x92, 0xa7, 0xe9, 0x74, +0x50, 0xf0, 0xe4, 0x5a, 0xd1, 0x72, 0x91, 0x55, 0x67, 0x92, 0x14, 0x80, 0xa0, 0x15, 0xc8, 0x22, +0x15, 0xa3, 0x16, 0x7a, 0xf8, 0x4e, 0xab, 0xa0, 0x66, 0x67, 0x20, 0x28, 0x01, 0xab, 0x15, 0x9c, +0x5b, 0x66, 0x15, 0x60, 0x67, 0x7a, 0x50, 0x7c, 0xc2, 0x05, 0x1f, 0x03, 0xc2, 0x7c, 0x41, 0x58, +0x67, 0x90, 0x53, 0x1d, 0xbf, 0x3c, 0x19, 0x65, 0x05, 0x99, 0x91, 0x41, 0x33, 0x92, 0x14, 0x82, +0x82, 0x42, 0xde, 0x00, 0x05, 0x2b, 0x48, 0x59, 0x67, 0x2d, 0x21, 0x53, 0x25, 0x00, 0x6a, 0x0b, +0x6a, 0x8b, 0x54, 0x21, 0xb2, 0x60, 0x34, 0x07, 0x5b, 0xf6, 0x10, 0x08, 0x28, 0x0f, 0x49, 0xd0, +0xa6, 0xab, 0x60, 0x67, 0x54, 0x2b, 0x20, 0x61, 0xad, 0x2a, 0xab, 0x67, 0x45, 0x70, 0x66, 0x00, +0x4b, 0x24, 0x0f, 0xef, 0xc0, 0x2a, 0x82, 0x03, 0x8b, 0x0a, 0x23, 0xdf, 0xde, 0xff, 0x3c, 0x42, +0x99, 0xa5, 0xa1, 0xa5, 0x99, 0x42, 0x0e, 0xb2, 0x0a, 0x67, 0x05, 0x90, 0x28, 0x65, 0x83, 0x32, +0x03, 0x6d, 0xac, 0x82, 0x67, 0x00, 0x2a, 0x01, 0x10, 0xb0, 0xec, 0x09, 0x00, 0x95, 0x55, 0x67, +0x46, 0x00, 0x0a, 0x03, 0xf9, 0x10, 0x0c, 0x70, 0x92, 0xef, 0x07, 0x18, 0xf4, 0xfe, 0x84, 0x01, +0xf2, 0x60, 0xc0, 0x00, 0xef, 0x0c, 0x18, 0xed, 0x55, 0xb0, 0x80, 0x91, 0x67, 0x05, 0xcb, 0xe9, +0x17, 0x59, 0x67, 0x66, 0x29, 0x82, 0x00, 0xc7, 0x40, 0x0a, 0x16, 0x60, 0xdb, 0xa4, 0x08, 0x9d, +0x50, 0xaf, 0x38, 0x44, 0xb1, 0x5f, 0xcd, 0x44, 0x38, 0x2a, 0xac, 0x82, 0xb8, 0x67, 0x19, 0xb0, +0xd3, 0x0f, 0x08, 0xd1, 0x2a, 0x30, 0x00, 0xc2, 0x67, 0x01, 0x2b, 0x82, 0x81, 0x17, 0x02, 0xac, +0x67, 0x94, 0xa0, 0x52, 0x61, 0xe0, 0xb3, 0x0a, 0x67, 0x20, 0x05, 0xc3, 0x01, 0xa3, 0xd2, 0x0e, +0x51, 0x93, 0x14, 0x8c, 0xbf, 0xa3, 0x64, 0xc1, 0xbb, 0x15, 0x0c, 0xa3, 0x60, 0x67, 0xb0, 0x15, +0x0c, 0x2a, 0x64, 0x67, 0x14, 0x1c, 0x82, 0x6c, 0x09, 0xef, 0x77, 0x15, 0xa4, 0x0a, 0x66, 0x67, +0x15, 0x04, 0xd7, 0x82, 0x10, 0x93, 0x0c, 0x0a, 0x0f, 0x04, 0x35, 0xd0, 0x9b, 0x7b, 0x07, 0x02, +0x13, 0xc9, 0x28, 0xac, 0x67, 0x74, 0xa8, 0x08, 0xd3, 0x2a, 0x98, 0x18, 0x87, 0xca, 0x67, 0x0d, +0x0a, 0xb7, 0xff, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x04, 0x69, 0x6c, 0xff, +0xf6, 0x65, 0x20, 0x68, 0x61, 0x0d, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x63, 0x72, 0xb7, 0xfd, 0x65, +0x61, 0x74, 0x65, 0x64, 0x2f, 0x02, 0x69, 0x06, 0xfb, 0x37, 0x13, 0x79, 0x20, 0x43, 0x50, 0x49, +0x61, 0x64, 0x09, 0xdf, 0x7e, 0x56, 0x31, 0x2e, 0x32, 0x30, 0x37, 0x43, 0x6f, 0x70, 0x79, 0xff, +0xf2, 0x72, 0x69, 0x67, 0x68, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x7f, 0xdd, 0x33, 0x2d, +0x04, 0x36, 0x28, 0x6b, 0x6f, 0x73, 0xfd, 0xb7, 0x74, 0x54, 0x40, 0x61, 0x63, 0x6d, 0x2e, 0x6f, +0x72, 0x67, 0x76, 0xb7, 0x1f, 0x4b, 0x0f, 0x61, 0x20, 0x4b, 0x15, 0x0f, 0x36, 0x29, 0x71, 0x70, +0x72, 0x6f, 0x77, 0xff, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x6d, 0x61, 0x79, 0x6f, 0x20, 0x75, 0x73, +0xad, 0x75, 0x63, 0x66, 0x72, 0x09, 0xd6, 0xda, 0x6f, 0x66, 0x7a, 0x84, 0x36, 0xbf, 0xb5, 0x09, +0x7e, 0x20, 0x79, 0x6f, 0x75, 0x72, 0xad, 0x6d, 0x11, 0x77, 0x8d, 0x69, 0x00, 0xf8, 0x73, 0x6b, +0x2e, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xff, 0xa4, 0xe8, 0x3a, 0x00, 0x72, 0xfa, +0x41, 0xe8, 0x2f, 0x00, 0xe3, 0x3b, 0x73, 0xf9, 0x83, 0xe9, 0x03, 0x72, 0x06, 0x88, 0xcc, 0xac, +0xf7, 0xd0, 0x95, 0x31, 0xc9, 0xe8, 0x1b, 0x00, 0x11, 0xc9, 0x75, 0x08, 0x41, 0xe8, 0x13, 0x00, +0x73, 0xfb, 0x41, 0x41, 0x81, 0xfd, 0x00, 0xf3, 0x83, 0xd1, 0x01, 0x8d, 0x03, 0x96, 0xf3, 0xa4, +0x96, 0xeb, 0xc8, 0xe8, 0x02, 0x00, 0x11, 0xc9, 0x01, 0xdb, 0x75, 0x04, 0xad, 0x11, 0xc0, 0x93, +0xc3, 0x5e, 0xb9, 0x01, 0x00, 0xac, 0x2c, 0xe8, 0x3c, 0x01, 0x77, 0xf9, 0x8b, 0x1c, 0x86, 0xdf, +0x29, 0xf3, 0x89, 0x1c, 0xad, 0xe2, 0xee, 0xc3 }; diff --git a/src/dos/dos_keyboard_layout.cpp b/src/dos/dos_keyboard_layout.cpp new file mode 100644 index 00000000..22f855cb --- /dev/null +++ b/src/dos/dos_keyboard_layout.cpp @@ -0,0 +1,1058 @@ +/* + * Copyright (C) 2002-2006 The DOSBox Team + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include "dosbox.h" +#include "bios.h" +#include "setup.h" +#include "support.h" +#include "../ints/int10.h" +#include "regs.h" +#include "callback.h" +#include "mapper.h" +#include "drives.h" +#include "dos_inc.h" + +#include "dos_codepages.h" +#include "dos_keyboard_layout_data.h" + + +static FILE* OpenDosboxFile(const char* name) { + Bit8u drive; + char fullname[DOS_PATHLENGTH]; + + localDrive* ldp=0; + // try to build dos name + if (DOS_MakeName((char*)name,fullname,&drive)) { + try { + // try to open file on mounted drive first + ldp=dynamic_cast(Drives[drive]); + if (ldp) { + FILE *tmpfile=ldp->GetSystemFilePtr(fullname, "rb"); + if (tmpfile != NULL) return tmpfile; + } + } + catch(...) {} + } + FILE *tmpfile=fopen(name, "rb"); + return tmpfile; +} + + +class keyboard_layout { +public: + keyboard_layout() { + this->reset(); + language_codes=NULL; + use_foreign_layout=false; + sprintf(current_keyboard_file_name, "none"); + }; + + ~keyboard_layout(); + + // read in a codepage from a .cpi-file + Bitu read_codepage_file(const char* codepage_file_name, Bit32s codepage_id); + Bit16u extract_codepage(const char* keyboard_file_name); + // read in a keyboard layout from a .kl-file + Bitu read_keyboard_file(const char* keyboard_file_name, Bit32s req_cp); + + // call layout_key to apply the current language layout + bool layout_key(Bitu key, Bit8u flags1, Bit8u flags2, Bit8u flags3); + + Bitu switch_keyboard_layout(const char* new_layout, keyboard_layout* &created_layout); + void switch_foreign_layout(); + + +private: + static const Bit8u layout_pages=12; + Bit16u current_layout[(MAX_SCAN_CODE+1)*layout_pages]; + struct { + Bit16u required_flags,forbidden_flags; + Bit16u required_userflags,forbidden_userflags; + } current_layout_planes[layout_pages-4]; + Bit8u additional_planes,used_lock_modifiers; + + // diacritics table + Bit8u diacritics[2048]; + Bit16u diacritics_entries; + Bit16u diacritics_character; + Bit16u user_keys; + + char current_keyboard_file_name[256]; + bool use_foreign_layout; + + // language code storage used when switching layouts + char** language_codes; + Bitu language_code_count; + + void reset(); + void read_keyboard_file(Bit32s specific_layout); + Bitu read_keyboard_file(const char* keyboard_file_name, Bit32s specific_layout, Bit32s requested_codepage); + bool map_key(Bitu key, Bit16u layouted_key, bool is_command, bool is_keypair); +}; + + +keyboard_layout::~keyboard_layout() { + if (language_codes) { + for (Bitu i=0; iread_keyboard_file(keyboard_file_name, -1, req_cp); +} + +// switch to a different layout +void keyboard_layout::read_keyboard_file(Bit32s specific_layout) { + if (strcmp(current_keyboard_file_name,"none")) + this->read_keyboard_file(current_keyboard_file_name, specific_layout, dos.loaded_codepage); +} + +static Bit32u read_kcl_file(const char* kcl_file_name, const char* layout_id) { + FILE* tempfile = OpenDosboxFile(kcl_file_name); + if (tempfile==0) return 0; + + static Bit8u rbuf[8192]; + + // check ID-bytes of file + Bit32u dr=(Bit32u)fread(rbuf, sizeof(Bit8u), 7, tempfile); + if ((dr<7) || (rbuf[0]!=0x4b) || (rbuf[1]!=0x43) || (rbuf[2]!=0x46)) { + fclose(tempfile); + return 0; + } + + fseek(tempfile, 7+rbuf[6], SEEK_SET); + + for (;;) { + Bit32u cur_pos=(Bit32u)(ftell(tempfile)); + dr=(Bit32u)fread(rbuf, sizeof(Bit8u), 5, tempfile); + if (dr<5) break; + Bit16u len=host_readw(&rbuf[0]); + + Bit8u data_len=rbuf[2]; + + char lng_codes[256]; + // get all language codes for this layout + for (Bitu i=0; ireset(); + + if (specific_layout==-1) strcpy(current_keyboard_file_name, keyboard_file_name); + if (!strcmp(keyboard_file_name,"none")) return KEYB_NOERROR; + + static Bit8u read_buf[65535]; + Bit32u read_buf_size, read_buf_pos, bytes_read; + Bit32u start_pos=5; + + char nbuf[512]; + sprintf(nbuf, "%s.kl", keyboard_file_name); + FILE* tempfile = OpenDosboxFile(nbuf); + if (tempfile==NULL) { + // see if build-in keyboard layout is available, then copy it + if (!strncasecmp(keyboard_file_name,"BG",2)) { + read_buf_size=687; + for (Bitu i=0; i(layout_pages-4)) additional_planes=(layout_pages-4); + + // seek to plane descriptor + read_buf_pos=start_pos+0x14+submappings*8; + for (Bit16u cplane=0; cplane0)) { + // add all available mappings + for (Bit16u addmap=0; addmapadditional_planes+2) break; + Bitu charptr=read_buf_pos+addmap*((read_buf[read_buf_pos-2]&0x80)?2:1); + Bit16u kchar=read_buf[charptr]; + if (read_buf[read_buf_pos-2]&0x80) kchar|=read_buf[charptr+1]<<8; // scancode/char pair + + if (kchar!=0) { // key remapped + // overwrite mapping + current_layout[scan*layout_pages+addmap]=kchar; + // clear command bit + current_layout[scan*layout_pages+layout_pages-2]&=~(1<use_foreign_layout=true; + return KEYB_NOERROR; + } + + LOG(LOG_BIOS,LOG_ERROR)("No matching keyboard layout found in %s",keyboard_file_name); + + // reset layout data (might have been changed by general layout) + this->reset(); + + return KEYB_LAYOUTNOTFOUND; +} + +bool keyboard_layout::layout_key(Bitu key, Bit8u flags1, Bit8u flags2, Bit8u flags3) { + if (key>MAX_SCAN_CODE) return false; + if (!this->use_foreign_layout) return false; + + bool is_special_pair=(current_layout[key*layout_pages+layout_pages-1] & 0x80)==0x80; + + if ((((flags1&used_lock_modifiers)&0x7c)==0) && ((flags3&2)==0)) { + // check if shift/caps is active: + // (left_shift OR right_shift) XOR (key_affected_by_caps AND caps_locked) + if ((((flags1&2)>>1) | (flags1&1)) ^ (((current_layout[key*layout_pages+layout_pages-1] & 0x40) & (flags1 & 0x40))>>6)) { + // shift plane + if (current_layout[key*layout_pages+1]!=0) { + // check if command-bit is set for shift plane + bool is_command=(current_layout[key*layout_pages+layout_pages-2]&2)!=0; + if (this->map_key(key, current_layout[key*layout_pages+1], + is_command, is_special_pair)) return true; + } + } else { + // normal plane + if (current_layout[key*layout_pages]!=0) { + // check if command-bit is set for normal plane + bool is_command=(current_layout[key*layout_pages+layout_pages-2]&1)!=0; + if (this->map_key(key, current_layout[key*layout_pages], + is_command, is_special_pair)) return true; + } + } + } + + // calculate current flags + Bit16u current_flags=(flags1&0x7f) | (((flags2&3) | (flags3&0xc))<<8); + if (flags1&3) current_flags|=0x4000; // either shift key active + if (flags3&2) current_flags|=0x1000; // e0 prefixed + + // check all planes if flags fit + for (Bit16u cplane=0; cplane>(cplane+2))&1)!=0; + if (this->map_key(key, current_layout[key*layout_pages+2+cplane], + is_command, is_special_pair)) return true; + } else break; // abort plane checking + } + } + + if (diacritics_character>0) { + // ignore state-changing keys + switch(key) { + case 0x1d: /* Ctrl Pressed */ + case 0x2a: /* Left Shift Pressed */ + case 0x36: /* Right Shift Pressed */ + case 0x38: /* Alt Pressed */ + case 0x3a: /* Caps Lock */ + case 0x45: /* Num Lock */ + case 0x46: /* Scroll Lock */ + break; + default: + if (diacritics_character-200>=diacritics_entries) { + diacritics_character=0; + return true; + } + Bit16u diacritics_start=0; + // search start of subtable + for (Bit16u i=0; i=200) && (key_command<235)) { + // diacritics command + diacritics_character=key_command; + if (diacritics_character-200>=diacritics_entries) diacritics_character=0; + return true; + } else if ((key_command>=120) && (key_command<129)) { + // switch layout command + this->read_keyboard_file(key_command-119); + return true; + } else if ((key_command>=180) && (key_command<188)) { + // switch user key off + user_keys&=~(1<<(key_command-180)); + return true; + } else if ((key_command>=188) && (key_command<196)) { + // switch user key on + user_keys|=(1<<(key_command-188)); + return true; + } else if (key_command==160) return true; // nop command + } else { + // non-command + if (diacritics_character>0) { + if (diacritics_character-200>=diacritics_entries) diacritics_character = 0; + else { + Bit16u diacritics_start=0; + // search start of subtable + for (Bit16u i=0; i(&nbuf[strsz-1])); + if (plc=='I') { + // try CPX-extension as well + nbuf[strsz-1]='X'; + tempfile=OpenDosboxFile(nbuf); + } else if (plc=='X') { + // try CPI-extension as well + nbuf[strsz-1]='I'; + tempfile=OpenDosboxFile(nbuf); + } + } + } + + static Bit8u cpi_buf[65536]; + Bit32u cpi_buf_size=0,size_of_cpxdata=0;; + bool upxfound=false; + Bit16u found_at_pos=5; + if (tempfile==NULL) { + // check if build-in codepage is available + switch (codepage_id) { + case 437: case 850: case 852: case 853: case 857: case 858: + for (Bitu bct=0; bct<6322; bct++) cpi_buf[bct]=font_ega_cpx[bct]; + cpi_buf_size=6322; + break; + case 771: case 772: case 808: case 855: case 866: case 872: + for (Bitu bct=0; bct<5455; bct++) cpi_buf[bct]=font_ega3_cpx[bct]; + cpi_buf_size=5455; + break; + case 737: case 851: case 869: + for (Bitu bct=0; bct<5720; bct++) cpi_buf[bct]=font_ega5_cpx[bct]; + cpi_buf_size=5720; + break; + default: + return KEYB_INVALIDCPFILE; + break; + } + upxfound=true; + found_at_pos=0x29; + size_of_cpxdata=cpi_buf_size; + } else { + Bit32u dr=(Bit32u)fread(cpi_buf, sizeof(Bit8u), 5, tempfile); + // check if file is valid + if (dr<5) { + LOG(LOG_BIOS,LOG_ERROR)("Codepage file %s invalid",cp_filename); + return KEYB_INVALIDCPFILE; + } + // check if non-compressed cpi file + if ((cpi_buf[0]!=0xff) || (cpi_buf[1]!=0x46) || (cpi_buf[2]!=0x4f) || + (cpi_buf[3]!=0x4e) || (cpi_buf[4]!=0x54)) { + // check if dr-dos custom cpi file + if ((cpi_buf[0]==0x7f) && (cpi_buf[1]!=0x44) && (cpi_buf[2]!=0x52) && + (cpi_buf[3]!=0x46) && (cpi_buf[4]!=0x5f)) { + LOG(LOG_BIOS,LOG_ERROR)("Codepage file %s has unsupported DR-DOS format",cp_filename); + return KEYB_INVALIDCPFILE; + } + // check if compressed cpi file + Bit8u next_byte=0; + for (Bitu i=0; i<100; i++) { + fread(&next_byte, sizeof(Bit8u), 1, tempfile); found_at_pos++; + while (next_byte==0x55) { + fread(&next_byte, sizeof(Bit8u), 1, tempfile); found_at_pos++; + if (next_byte==0x50) { + fread(&next_byte, sizeof(Bit8u), 1, tempfile); found_at_pos++; + if (next_byte==0x58) { + fread(&next_byte, sizeof(Bit8u), 1, tempfile); found_at_pos++; + if (next_byte==0x21) { + // read version ID + fread(&next_byte, sizeof(Bit8u), 1, tempfile); + found_at_pos++; + upxfound=true; + break; + } + } + } + } + if (upxfound) break; + } + if (!upxfound) { + LOG(LOG_BIOS,LOG_ERROR)("Codepage file %s invalid: %x",cp_filename,cpi_buf[0]); + return KEYB_INVALIDCPFILE; + } else { + if (next_byte<10) E_Exit("UPX-compressed cpi file, but upx-version too old"); + + // read in compressed CPX-file + fseek(tempfile, 0, SEEK_SET); + size_of_cpxdata=(Bitu)fread(cpi_buf, sizeof(Bit8u), 65536, tempfile); + } + } else { + // standard uncompressed cpi-file + fseek(tempfile, 0, SEEK_SET); + cpi_buf_size=(Bit32u)fread(cpi_buf, sizeof(Bit8u), 65536, tempfile); + } + } + + if (upxfound) { + if (size_of_cpxdata>0xfe00) E_Exit("Size of cpx-compressed data too big"); + + found_at_pos+=19; + // prepare for direct decompression + cpi_buf[found_at_pos]=0xcb; + + Bit16u seg=0; + Bit16u size=0x2000; + if (!DOS_AllocateMemory(&seg,&size)) E_Exit("Not enough free low memory to unpack data"); + MEM_BlockWrite((seg<<4)+0x100,cpi_buf,size_of_cpxdata); + + // setup segments + Bit16u save_ds=SegValue(ds); + Bit16u save_es=SegValue(es); + Bit16u save_ss=SegValue(ss); + Bit32u save_esp=reg_esp; + SegSet16(ds,seg); + SegSet16(es,seg); + SegSet16(ss,seg+0x1000); + reg_esp=0xfffe; + + // let UPX unpack the file + CALLBACK_RunRealFar(seg,0x100); + + SegSet16(ds,save_ds); + SegSet16(es,save_es); + SegSet16(ss,save_ss); + reg_esp=save_esp; + + // get unpacked content + MEM_BlockRead((seg<<4)+0x100,cpi_buf,65536); + cpi_buf_size=65536; + + DOS_FreeMemory(seg); + } + + + start_pos=host_readd(&cpi_buf[0x13]); + number_of_codepages=host_readw(&cpi_buf[start_pos]); + start_pos+=4; + + // search if codepage is provided by file + for (Bit16u test_codepage=0; test_codepagetype==M_TEXT) && (machine==MCH_VGA)) { + INT10_LoadFont(Real2Phys(int10.rom.font_16),true,256,0,0,16); + } + INT10_SetupRomMemoryChecksum(); + + return KEYB_NOERROR; + } + + start_pos=host_readd(&cpi_buf[start_pos]); + start_pos+=2; + } + + LOG(LOG_BIOS,LOG_ERROR)("Codepage %i not found",codepage_id); + + return KEYB_INVALIDCPFILE; +} + +Bitu keyboard_layout::switch_keyboard_layout(const char* new_layout, keyboard_layout*& created_layout) { + if (strncasecmp(new_layout,"US",2)) { + // switch to a foreign layout + char tbuf[256]; + strcpy(tbuf, new_layout); + size_t newlen=strlen(tbuf); + + bool language_code_found=false; + // check if language code is present in loaded foreign layout + for (Bitu i=0; iuse_foreign_layout) { + // switch to foreign layout + this->use_foreign_layout=true; + diacritics_character=0; + LOG(LOG_BIOS,LOG_NORMAL)("Switched to layout %s",tbuf); + } + } else { + keyboard_layout * temp_layout=new keyboard_layout(); + Bitu req_codepage=temp_layout->extract_codepage(new_layout); + Bitu kerrcode=temp_layout->read_keyboard_file(new_layout, req_codepage); + if (kerrcode) { + delete temp_layout; + return kerrcode; + } + // ...else keyboard layout loaded successfully, change codepage accordingly + kerrcode=temp_layout->read_codepage_file("auto", req_codepage); + if (kerrcode) { + delete temp_layout; + return kerrcode; + } + // Everything went fine, switch to new layout + created_layout=temp_layout; + } + } else if (this->use_foreign_layout) { + // switch to the US layout + this->use_foreign_layout=false; + diacritics_character=0; + LOG(LOG_BIOS,LOG_NORMAL)("Switched to US layout"); + } + return KEYB_NOERROR; +} + +void keyboard_layout::switch_foreign_layout() { + this->use_foreign_layout=!this->use_foreign_layout; + diacritics_character=0; + if (this->use_foreign_layout) LOG(LOG_BIOS,LOG_NORMAL)("Switched to foreign layout"); + else LOG(LOG_BIOS,LOG_NORMAL)("Switched to US layout"); +} + + +static keyboard_layout* loaded_layout=NULL; + +// CTRL-ALT-F2 switches between foreign and US-layout using this function +static void switch_keyboard_layout(bool pressed) { + if (!pressed) + return; + if (loaded_layout) loaded_layout->switch_foreign_layout(); +} + +// called by int9-handler +bool DOS_LayoutKey(Bitu key, Bit8u flags1, Bit8u flags2, Bit8u flags3) { + if (loaded_layout) return loaded_layout->layout_key(key, flags1, flags2, flags3); + else return false; +} + +Bitu DOS_LoadKeyboardLayout(const char * layoutname, Bit32s codepage, const char * codepagefile) { + keyboard_layout * temp_layout=new keyboard_layout(); + // try to read the layout for the specified codepage + Bitu kerrcode=temp_layout->read_keyboard_file(layoutname, codepage); + if (kerrcode) { + delete temp_layout; + return kerrcode; + } + // ...else keyboard layout loaded successfully, change codepage accordingly + kerrcode=temp_layout->read_codepage_file(codepagefile, codepage); + if (kerrcode) { + delete temp_layout; + return kerrcode; + } + // Everything went fine, switch to new layout + loaded_layout=temp_layout; + return KEYB_NOERROR; +} + +Bitu DOS_SwitchKeyboardLayout(const char* new_layout) { + if (loaded_layout) { + keyboard_layout* changed_layout=NULL; + Bitu ret_code=loaded_layout->switch_keyboard_layout(new_layout, changed_layout); + if (changed_layout) { + // Remove old layout, activate new layout + delete loaded_layout; + loaded_layout=changed_layout; + } + return ret_code; + } else return 0xff; +} + + +class DOS_KeyboardLayout: public Module_base { +public: + DOS_KeyboardLayout(Section* configuration):Module_base(configuration){ + Section_prop * section=static_cast(configuration); + dos.loaded_codepage=437; // US codepage already initialized + loaded_layout=new keyboard_layout(); + + const char * layoutname=section->Get_string("keyboardlayout"); + // try to find a good codepage for the requested layout + Bitu req_codepage=loaded_layout->extract_codepage(layoutname); + + loaded_layout->read_codepage_file("auto", req_codepage); + if (loaded_layout->read_keyboard_file(layoutname, dos.loaded_codepage)) + LOG_MSG("Error loading keyboard layout %s",layoutname); + } + + ~DOS_KeyboardLayout(){ + if ((dos.loaded_codepage!=437) && (CurMode->type==M_TEXT)) { + INT10_ReloadRomFonts(); + dos.loaded_codepage=437; // US codepage + } + if (loaded_layout) { + delete loaded_layout; + loaded_layout=NULL; + } + } +}; + +static DOS_KeyboardLayout* test; + +void DOS_KeyboardLayout_ShutDown(Section* /*sec*/) { + delete test; +} + +void DOS_KeyboardLayout_Init(Section* sec) { + test = new DOS_KeyboardLayout(sec); + sec->AddDestroyFunction(&DOS_KeyboardLayout_ShutDown,true); + MAPPER_AddHandler(switch_keyboard_layout,MK_f2,MMOD1|MMOD2,"sw_layout","Switch Layout"); +} diff --git a/src/dos/dos_keyboard_layout_data.h b/src/dos/dos_keyboard_layout_data.h new file mode 100644 index 00000000..4b200b5c --- /dev/null +++ b/src/dos/dos_keyboard_layout_data.h @@ -0,0 +1,796 @@ +/* + * Copyright (C) Henrique Peron + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +/* This file contains data of .KL-files. They have been generated + by Henrique Peron using FreeDOS KC */ + +/* KC: compiles keyboard descriptors in KEY language to a KeybCB, + wrapped in a KL file (for use of FD-KEYB 2.X) + Copyright (C) 2004 by Aitor SANTAMARIA_MERINO */ + + +// Bulgaria (101-key) +Bit8u layout_BG[687] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x09, 0x00, 0x00, 0x42, 0x47, 0x2c, 0xba, 0x01, 0x42, 0x47, 0x07, +0x03, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x03, 0x99, 0x01, 0x00, +0x00, 0x00, 0x00, 0x68, 0x03, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x03, 0x97, 0x02, 0x00, +0x00, 0x00, 0x00, 0x57, 0x03, 0xae, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x03, 0xa7, 0x00, 0x00, +0x00, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x02, 0x03, 0x00, 0x00, 0x40, 0x04, 0x02, 0x03, 0x00, 0x00, 0x23, 0x05, +0x02, 0x03, 0x00, 0x00, 0xcf, 0x07, 0x02, 0x03, 0x00, 0x00, 0x5e, 0x08, 0x02, 0x03, 0x00, 0x00, +0x26, 0x09, 0x02, 0x03, 0x00, 0x00, 0x24, 0x1a, 0x02, 0x03, 0x00, 0x00, 0x5b, 0x1b, 0x02, 0x03, +0x00, 0x00, 0x5d, 0x2b, 0x02, 0x03, 0x00, 0x00, 0x7c, 0x33, 0x02, 0x03, 0x00, 0x00, 0x3c, 0x34, +0x02, 0x03, 0x00, 0x00, 0x3e, 0x00, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x00, 0x03, 0x01, 0x01, +0x00, 0x3f, 0x04, 0x01, 0x01, 0x00, 0x2b, 0x05, 0x02, 0x05, 0x00, 0x22, 0xa0, 0x07, 0x01, 0x01, +0x00, 0x3d, 0x08, 0x01, 0x01, 0x00, 0x3a, 0x09, 0x01, 0x01, 0x00, 0x2f, 0x0a, 0x03, 0x05, 0x00, +0x5f, 0x00, 0x1f, 0x0b, 0x01, 0x01, 0x00, 0xef, 0x0c, 0x01, 0x01, 0x00, 0x49, 0x0d, 0x01, 0x00, +0x2e, 0x56, 0x10, 0x01, 0x00, 0x2c, 0xf2, 0x11, 0x41, 0x00, 0xe7, 0xe8, 0x12, 0x42, 0x00, 0xa8, +0xa9, 0xcf, 0x13, 0x41, 0x00, 0xb7, 0xb8, 0x14, 0x41, 0x00, 0xf5, 0xf6, 0x15, 0x41, 0x00, 0xf9, +0xfa, 0x16, 0x41, 0x00, 0xc6, 0xc7, 0x17, 0x41, 0x00, 0xe3, 0xe4, 0x18, 0x41, 0x00, 0xa6, 0xa7, +0x19, 0x41, 0x00, 0xf3, 0xf4, 0x1a, 0x41, 0x00, 0xa4, 0xa5, 0x1b, 0x01, 0x00, 0x3b, 0xfd, 0x1e, +0x41, 0x00, 0xed, 0xee, 0x1f, 0xc1, 0x00, 0xde, 0x1f, 0xe0, 0x00, 0x20, 0x41, 0x00, 0xa0, 0xa1, +0x21, 0x41, 0x00, 0xd6, 0xd7, 0x22, 0x41, 0x00, 0xe9, 0xea, 0x23, 0x41, 0x00, 0xac, 0xad, 0x24, +0x41, 0x00, 0xe5, 0xe6, 0x25, 0x41, 0x00, 0xd4, 0xd5, 0x26, 0x41, 0x00, 0xeb, 0xec, 0x27, 0x41, +0x00, 0xd2, 0xd3, 0x28, 0x41, 0x00, 0xfb, 0xfc, 0x2a, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x78, +0x2b, 0x01, 0x00, 0x29, 0x28, 0x2c, 0x41, 0x00, 0x9c, 0x9d, 0x2d, 0x41, 0x00, 0xbd, 0xbe, 0x2e, +0x41, 0x00, 0x9e, 0x9f, 0x2f, 0x41, 0x00, 0xf7, 0xf8, 0x30, 0x41, 0x00, 0xaa, 0xab, 0x31, 0x41, +0x00, 0xb5, 0xb6, 0x32, 0x41, 0x00, 0xd8, 0xdd, 0x33, 0x41, 0x00, 0xe1, 0xe2, 0x34, 0x41, 0x00, +0xd0, 0xd1, 0x35, 0x41, 0x00, 0xa2, 0xa3, 0x00, 0x05, 0x02, 0x07, 0x00, 0x00, 0xa0, 0x12, 0x42, +0x03, 0x00, 0x00, 0xcf, 0x36, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x03, 0x01, 0x01, +0x00, 0x3f, 0x04, 0x01, 0x01, 0x00, 0x2b, 0x05, 0x01, 0x01, 0x00, 0x22, 0x07, 0x01, 0x01, 0x00, +0x3d, 0x08, 0x01, 0x01, 0x00, 0x3a, 0x09, 0x01, 0x01, 0x00, 0x2f, 0x0a, 0x03, 0x05, 0x00, 0x5f, +0x00, 0x1f, 0x0b, 0x01, 0x01, 0x00, 0xef, 0x0c, 0x01, 0x01, 0x00, 0x49, 0x0d, 0x01, 0x00, 0x2e, +0x56, 0x10, 0x01, 0x00, 0x2c, 0xf2, 0x11, 0x41, 0x00, 0xe7, 0xe8, 0x12, 0x41, 0x00, 0xa8, 0xa9, +0x13, 0x41, 0x00, 0xb7, 0xb8, 0x14, 0x41, 0x00, 0xf5, 0xf6, 0x15, 0x41, 0x00, 0xf9, 0xfa, 0x16, +0x41, 0x00, 0xc6, 0xc7, 0x17, 0x41, 0x00, 0xe3, 0xe4, 0x18, 0x41, 0x00, 0xa6, 0xa7, 0x19, 0x41, +0x00, 0xf3, 0xf4, 0x1a, 0x41, 0x00, 0xa4, 0xa5, 0x1b, 0x01, 0x00, 0x3b, 0xfd, 0x1e, 0x41, 0x00, +0xed, 0xee, 0x1f, 0xc1, 0x00, 0xde, 0x1f, 0xe0, 0x00, 0x20, 0x41, 0x00, 0xa0, 0xa1, 0x21, 0x41, +0x00, 0xd6, 0xd7, 0x22, 0x41, 0x00, 0xe9, 0xea, 0x23, 0x41, 0x00, 0xac, 0xad, 0x24, 0x41, 0x00, +0xe5, 0xe6, 0x25, 0x41, 0x00, 0xd4, 0xd5, 0x26, 0x41, 0x00, 0xeb, 0xec, 0x27, 0x41, 0x00, 0xd2, +0xd3, 0x28, 0x41, 0x00, 0xfb, 0xfc, 0x2a, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x2b, 0x01, +0x00, 0x29, 0x28, 0x2c, 0x41, 0x00, 0x9c, 0x9d, 0x2d, 0x41, 0x00, 0xbd, 0xbe, 0x2e, 0x41, 0x00, +0x9e, 0x9f, 0x2f, 0x41, 0x00, 0xf7, 0xf8, 0x30, 0x41, 0x00, 0xaa, 0xab, 0x31, 0x41, 0x00, 0xb5, +0xb6, 0x32, 0x41, 0x00, 0xd8, 0xdd, 0x33, 0x41, 0x00, 0xe1, 0xe2, 0x34, 0x41, 0x00, 0xd0, 0xd1, +0x35, 0x41, 0x00, 0xa2, 0xa3, 0x00, 0x36, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00 }; + +// Czech Republic (Standard) +Bit8u layout_CZ243[1003] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x04, 0xf3, 0x00, 0x43, 0x5a, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, +0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x03, 0x36, 0x01, 0xb8, 0x01, 0x00, 0x00, 0x5a, 0x03, +0x79, 0x02, 0x80, 0x02, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x63, 0x03, +0x07, 0x03, 0x74, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x04, 0x2b, 0x31, 0xc8, 0x03, 0x01, 0x01, 0xa0, +0x32, 0x04, 0x03, 0x05, 0xa0, 0x33, 0xc9, 0x1e, 0x05, 0x01, 0x01, 0xa0, 0x34, 0x06, 0x02, 0x05, +0xa0, 0x35, 0xca, 0x07, 0x01, 0x01, 0xa0, 0x36, 0x08, 0x02, 0x04, 0xec, 0x37, 0xcb, 0x09, 0x02, +0x00, 0xa0, 0x38, 0xfa, 0x0a, 0x02, 0x04, 0xa1, 0x39, 0xcc, 0x0b, 0x01, 0x00, 0x82, 0x30, 0x0c, +0x02, 0x04, 0x3d, 0x25, 0xcd, 0x0d, 0x02, 0x07, 0xcc, 0xa0, 0xce, 0x10, 0x42, 0x03, 0x00, 0x00, +0x5c, 0x11, 0x42, 0x03, 0x00, 0x00, 0x7c, 0x12, 0x41, 0x00, 0x65, 0x45, 0x15, 0x43, 0x04, 0x7a, +0x5a, 0x00, 0x1a, 0x16, 0x41, 0x00, 0x75, 0x55, 0x17, 0x41, 0x00, 0x69, 0x49, 0x18, 0x41, 0x00, +0x6f, 0x4f, 0x1a, 0x02, 0x00, 0xa3, 0x2f, 0xf6, 0x1b, 0x02, 0x00, 0x29, 0x28, 0x9e, 0x1e, 0x42, +0x00, 0x61, 0x41, 0x3c, 0x21, 0x42, 0x03, 0x00, 0x00, 0x5b, 0x22, 0x42, 0x03, 0x00, 0x00, 0x5d, +0x27, 0x02, 0x01, 0xa0, 0x22, 0x24, 0x28, 0x02, 0x00, 0xf5, 0x21, 0xe1, 0x29, 0x01, 0x02, 0x3b, +0xca, 0x2b, 0x02, 0x01, 0xcd, 0x27, 0xcf, 0x2c, 0x43, 0x00, 0x79, 0x59, 0x3e, 0x19, 0x2d, 0x42, +0x03, 0x00, 0x00, 0x23, 0x2e, 0x42, 0x00, 0x63, 0x43, 0x26, 0x2f, 0x42, 0x03, 0x00, 0x00, 0x40, +0x30, 0x42, 0x03, 0x00, 0x00, 0x7b, 0x31, 0x42, 0x00, 0x6e, 0x4e, 0x7d, 0x32, 0x42, 0x03, 0x00, +0x00, 0xe6, 0x33, 0x01, 0x01, 0x00, 0x3f, 0x34, 0x02, 0x01, 0x00, 0x3a, 0x2a, 0x35, 0x03, 0x04, +0x2d, 0x5f, 0x00, 0x1f, 0x39, 0x00, 0x00, 0x20, 0x56, 0x03, 0x00, 0x26, 0x2a, 0x3c, 0x1c, 0x00, +0x02, 0x02, 0x03, 0x00, 0x00, 0x7e, 0x03, 0x02, 0x06, 0xd8, 0x00, 0xc8, 0x04, 0x00, 0x00, 0xe7, +0x05, 0x02, 0x06, 0x9f, 0x00, 0xca, 0x06, 0x02, 0x06, 0xfd, 0x00, 0xcb, 0x07, 0x02, 0x06, 0xa7, +0x00, 0xcc, 0x08, 0x02, 0x03, 0x00, 0x00, 0x60, 0x09, 0x02, 0x07, 0x00, 0x00, 0xcd, 0x0a, 0x02, +0x07, 0x00, 0x00, 0xce, 0x0b, 0x02, 0x07, 0x00, 0x00, 0xcf, 0x0c, 0x02, 0x07, 0x00, 0x00, 0xd0, +0x0d, 0x02, 0x07, 0xce, 0xc8, 0xd1, 0x12, 0x42, 0x03, 0x00, 0x00, 0xaa, 0x13, 0x41, 0x00, 0x72, +0x52, 0x14, 0x41, 0x00, 0x74, 0x54, 0x1f, 0x42, 0x00, 0x73, 0x53, 0xd0, 0x20, 0x42, 0x00, 0x64, +0x44, 0xd1, 0x25, 0x42, 0x03, 0x00, 0x00, 0x88, 0x26, 0x42, 0x00, 0x6c, 0x4c, 0x9d, 0x27, 0x00, +0x00, 0x85, 0x29, 0x01, 0x03, 0x00, 0xcb, 0x2b, 0x00, 0x01, 0xd0, 0x32, 0x02, 0x07, 0x00, 0x00, +0xa0, 0x00, 0xf3, 0x13, 0x63, 0x9f, 0x64, 0xd4, 0x65, 0xd8, 0x6c, 0x96, 0x6e, 0xe5, 0x72, 0xfd, +0x73, 0xe7, 0x74, 0x9c, 0x7a, 0xa7, 0x43, 0xac, 0x44, 0xd2, 0x45, 0xb7, 0x4c, 0x95, 0x4e, 0xd5, +0x52, 0xfc, 0x53, 0xe6, 0x54, 0x9b, 0x5a, 0xa6, 0x20, 0xf3, 0x5e, 0x07, 0x61, 0x83, 0x69, 0x8c, +0x6f, 0x93, 0x41, 0xb6, 0x49, 0xd7, 0x4f, 0xe2, 0x20, 0x5e, 0xf4, 0x03, 0x61, 0xc7, 0x41, 0xc6, +0x20, 0xf4, 0xf8, 0x03, 0x75, 0x85, 0x55, 0xde, 0x20, 0xf8, 0xf2, 0x05, 0x61, 0xa5, 0x65, 0xa9, +0x41, 0xa4, 0x45, 0xa8, 0x20, 0xf2, 0xfa, 0x03, 0x7a, 0xbe, 0x5a, 0xbd, 0x20, 0xfa, 0x27, 0x19, +0x61, 0xa0, 0x63, 0x86, 0x65, 0x82, 0x69, 0xa1, 0x6c, 0x92, 0x6e, 0xe4, 0x6f, 0xa2, 0x72, 0xea, +0x73, 0x98, 0x75, 0xa3, 0x79, 0xec, 0x7a, 0xab, 0x41, 0xb5, 0x43, 0x8f, 0x45, 0x90, 0x49, 0xd6, +0x4c, 0x91, 0x4e, 0xe3, 0x4f, 0xe0, 0x52, 0xe8, 0x53, 0x97, 0x55, 0xe9, 0x59, 0xed, 0x5a, 0x8d, +0x20, 0xef, 0xf1, 0x05, 0x6f, 0x8b, 0x75, 0xfb, 0x4f, 0x8a, 0x55, 0xeb, 0x20, 0xf1, 0xf9, 0x09, +0x61, 0x84, 0x65, 0x89, 0x6f, 0x94, 0x75, 0x81, 0x41, 0x8e, 0x45, 0xd3, 0x4f, 0x99, 0x55, 0x9a, +0x20, 0xf9, 0xf7, 0x07, 0x63, 0x87, 0x73, 0xad, 0x74, 0xee, 0x43, 0x80, 0x53, 0xb8, 0x54, 0xdd, +0x20, 0xf7, 0x00, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x00, 0x7e, 0x07, 0x61, 0xc6, 0x6e, 0xa4, +0x6f, 0xe4, 0x41, 0xc7, 0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, 0x5e, 0x0b, 0x61, 0x83, 0x65, 0x88, +0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, 0x49, 0xd7, 0x4f, 0xe2, 0x55, 0xea, +0x20, 0x5e, 0xf8, 0x03, 0x61, 0x86, 0x41, 0x8f, 0x20, 0xf8, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, +0x69, 0x8d, 0x6f, 0x95, 0x75, 0x97, 0x41, 0xb7, 0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, +0x20, 0x60, 0xef, 0x0d, 0x61, 0xa0, 0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x79, 0xec, +0x41, 0xb5, 0x45, 0x90, 0x49, 0xd6, 0x4f, 0xe0, 0x55, 0xe9, 0x59, 0xed, 0x20, 0xef, 0xf9, 0x0c, +0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, 0x45, 0xd3, +0x49, 0xd8, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0xf9, 0xf7, 0x03, 0x63, 0x87, 0x43, 0x80, 0x20, 0xf7, +0x00, 0x02, 0x02, 0x03, 0x00, 0x00, 0x7e, 0x03, 0x02, 0x06, 0x88, 0x00, 0xc8, 0x04, 0x00, 0x00, +0xa8, 0x05, 0x00, 0x00, 0x87, 0x06, 0x00, 0x00, 0xa9, 0x07, 0x00, 0x00, 0x91, 0x08, 0x02, 0x02, +0x98, 0x00, 0x60, 0x09, 0x02, 0x07, 0x00, 0x00, 0xa0, 0x0a, 0x02, 0x07, 0x00, 0x00, 0xcb, 0x0c, +0x02, 0x07, 0x00, 0x00, 0xcc, 0x0d, 0x02, 0x07, 0xcb, 0xc8, 0xa0, 0x13, 0x41, 0x00, 0x72, 0x52, +0x14, 0x41, 0x00, 0x74, 0x54, 0x1b, 0x02, 0x07, 0x00, 0x00, 0xa0, 0x1f, 0x41, 0x00, 0x73, 0x53, +0x20, 0x41, 0x00, 0x64, 0x44, 0x26, 0x41, 0x00, 0x6c, 0x4c, 0x27, 0x00, 0x00, 0x96, 0x28, 0x00, +0x00, 0xad, 0x29, 0x01, 0x03, 0x00, 0xca, 0x2b, 0x02, 0x07, 0xcc, 0x00, 0xa0, 0x00, 0x76, 0x13, +0x63, 0x87, 0x64, 0x83, 0x65, 0x88, 0x6c, 0x8c, 0x6e, 0xa4, 0x72, 0xa9, 0x73, 0xa8, 0x74, 0x9f, +0x7a, 0x91, 0x43, 0x80, 0x44, 0x85, 0x45, 0x89, 0x4c, 0x9c, 0x4e, 0xa5, 0x52, 0x9e, 0x53, 0x9b, +0x54, 0x86, 0x5a, 0x92, 0x20, 0x76, 0x5e, 0x03, 0x6f, 0x93, 0x4f, 0xa7, 0x20, 0x5e, 0xf8, 0x03, +0x75, 0x96, 0x55, 0xa6, 0x20, 0xf8, 0x27, 0x11, 0x61, 0xa0, 0x65, 0x82, 0x69, 0xa1, 0x6c, 0x8d, +0x6f, 0xa2, 0x72, 0xaa, 0x75, 0xa3, 0x79, 0x98, 0x41, 0x8f, 0x45, 0x90, 0x49, 0x8b, 0x4c, 0x8a, +0x4f, 0x95, 0x52, 0xab, 0x55, 0x97, 0x59, 0x9d, 0x20, 0x27, 0x22, 0x07, 0x61, 0x84, 0x6f, 0x94, +0x75, 0x81, 0x41, 0x8e, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0x22, 0x00 }; + +// France (Standard) +Bit8u layout_FR[581] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x09, 0x00, 0x00, 0x46, 0x52, 0x2c, 0xbd, 0x00, 0x46, 0x52, 0x05, +0x03, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x03, 0x68, 0x01, 0x6f, +0x01, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x6f, 0x01, 0x00, 0x00, 0x5b, 0x03, 0xca, 0x01, 0xd9, +0x01, 0x00, 0x00, 0xb5, 0x01, 0x1c, 0x01, 0x2d, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, +0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x41, 0x00, 0x26, 0x31, 0x03, 0x42, 0x04, 0x82, 0x32, 0xc9, 0x04, 0x42, +0x00, 0x22, 0x33, 0x23, 0x05, 0x42, 0x00, 0x27, 0x34, 0x7b, 0x06, 0x43, 0x00, 0x28, 0x35, 0x5b, +0x1b, 0x07, 0x43, 0x00, 0x2d, 0x36, 0x7c, 0x1f, 0x08, 0x42, 0x04, 0x8a, 0x37, 0xc8, 0x09, 0x43, +0x00, 0x5f, 0x38, 0x5c, 0x1c, 0x0a, 0x42, 0x00, 0x87, 0x39, 0x5e, 0x0b, 0x42, 0x00, 0x85, 0x30, +0x40, 0x0c, 0x43, 0x00, 0x29, 0xf8, 0x5d, 0x1d, 0x0d, 0x42, 0x03, 0x00, 0x00, 0x7d, 0x10, 0x43, +0x04, 0x61, 0x41, 0x00, 0x01, 0x11, 0x43, 0x04, 0x7a, 0x5a, 0x00, 0x1a, 0x12, 0x41, 0x00, 0x65, +0x45, 0x15, 0x41, 0x00, 0x79, 0x59, 0x16, 0x41, 0x00, 0x75, 0x55, 0x17, 0x41, 0x00, 0x69, 0x49, +0x18, 0x41, 0x00, 0x6f, 0x4f, 0x1a, 0x43, 0x07, 0xca, 0xcb, 0x00, 0x1e, 0x1b, 0x42, 0x00, 0x24, +0x9c, 0xcf, 0x1e, 0x43, 0x04, 0x71, 0x51, 0x00, 0x11, 0x27, 0x43, 0x04, 0x6d, 0x4d, 0x00, 0x0d, +0x28, 0x41, 0x00, 0x97, 0x25, 0x29, 0x41, 0x00, 0xfd, 0xfc, 0x2b, 0x41, 0x00, 0x2a, 0xe6, 0x2c, +0x43, 0x04, 0x77, 0x57, 0x00, 0x17, 0x31, 0x41, 0x00, 0x6e, 0x4e, 0x32, 0x41, 0x00, 0x2c, 0x3f, +0x33, 0x42, 0x00, 0x3b, 0x2e, 0x3c, 0x34, 0x42, 0x00, 0x3a, 0x2f, 0x3e, 0x35, 0x41, 0x00, 0x21, +0xf5, 0x39, 0x00, 0x00, 0x20, 0x56, 0x41, 0x00, 0x3c, 0x3e, 0x00, 0x1b, 0x42, 0x07, 0x00, 0x00, +0xa0, 0x29, 0x41, 0x03, 0x00, 0xa0, 0x35, 0x41, 0x01, 0x00, 0x15, 0x00, 0x60, 0x06, 0x61, 0x85, +0x65, 0x8a, 0x69, 0x8d, 0x6f, 0x95, 0x75, 0x97, 0x20, 0x60, 0x7e, 0x03, 0x6e, 0xa4, 0x4e, 0xa5, +0x20, 0x7e, 0x5e, 0x06, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x20, 0x5e, +0x22, 0x0a, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, +0x4f, 0x99, 0x55, 0x9a, 0x20, 0x22, 0x00, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x00, 0x60, 0x0b, +0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, 0x6f, 0x95, 0x75, 0x97, 0x41, 0xb7, 0x45, 0xd4, 0x49, 0xde, +0x4f, 0xe3, 0x55, 0xeb, 0x20, 0x60, 0x7e, 0x07, 0x61, 0xc6, 0x6e, 0xa4, 0x6f, 0xe4, 0x41, 0xc7, +0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, 0x5e, 0x0b, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, +0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, 0x49, 0xd7, 0x4f, 0xe2, 0x55, 0xea, 0x20, 0x5e, 0xf9, 0x0c, +0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, 0x45, 0xd3, +0x49, 0xd8, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0xf9, 0x00, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x18, +0x44, 0x0b, 0x00, 0x00, 0xab, 0x00, 0xac, 0x00, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, +0x6f, 0x95, 0x75, 0x97, 0x41, 0xb7, 0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, 0x20, 0x60, +0x7e, 0x07, 0x61, 0xc6, 0x6e, 0xa4, 0x6f, 0xe4, 0x41, 0xc7, 0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, +0x5e, 0x0b, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, +0x49, 0xd7, 0x4f, 0xe2, 0x55, 0xea, 0x20, 0x5e, 0x22, 0x0d, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, +0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, 0x45, 0xd3, 0x49, 0xd8, 0x4f, 0x99, 0x55, 0x9a, +0x59, 0xf3, 0x20, 0x22, 0x00 }; + +// Greece (319) +Bit8u layout_GK[1117] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x13, 0x00, 0x00, 0x47, 0x4b, 0x2c, 0x00, 0x00, 0x45, 0x4c, 0x2c, +0x3f, 0x01, 0x47, 0x4b, 0x2c, 0x3f, 0x01, 0x45, 0x4c, 0x09, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0d, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, +0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x03, 0x3a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x65, 0x03, 0x79, +0x01, 0x49, 0x02, 0x00, 0x00, 0xe1, 0x02, 0x24, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x02, 0x7e, +0x02, 0x2d, 0x03, 0x00, 0x00, 0x53, 0x03, 0x0a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x53, 0x03, 0x5a, +0x03, 0x13, 0x04, 0x00, 0x00, 0x5a, 0x03, 0xf7, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x52, 0x03, 0x00, +0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, +0x00, 0x22, 0x07, 0x01, 0x01, 0x00, 0x26, 0x08, 0x01, 0x01, 0x00, 0x2f, 0x09, 0x01, 0x01, 0x00, +0x28, 0x0a, 0x01, 0x01, 0x00, 0x29, 0x0b, 0x01, 0x01, 0x00, 0x3d, 0x0c, 0x01, 0x00, 0x27, 0x3f, +0x0d, 0x01, 0x00, 0x2b, 0x2a, 0x12, 0x41, 0x00, 0x65, 0x45, 0x15, 0x41, 0x00, 0x79, 0x59, 0x16, +0x41, 0x00, 0x75, 0x55, 0x17, 0x41, 0x00, 0x69, 0x49, 0x18, 0x41, 0x00, 0x6f, 0x4f, 0x1e, 0x41, +0x00, 0x61, 0x41, 0x27, 0x01, 0x03, 0xcb, 0xcc, 0x28, 0x01, 0x03, 0xca, 0xc9, 0x29, 0x03, 0x04, +0x5c, 0x7c, 0x00, 0x1c, 0x2b, 0x01, 0x01, 0xc8, 0x40, 0x2e, 0x41, 0x00, 0x63, 0x43, 0x31, 0x41, +0x00, 0x6e, 0x4e, 0x33, 0x02, 0x00, 0x2c, 0x3b, 0x3c, 0x34, 0x02, 0x00, 0x2e, 0x3a, 0x3e, 0x35, +0x03, 0x04, 0x2d, 0x5f, 0x00, 0x1f, 0x39, 0x00, 0x00, 0x20, 0x56, 0x01, 0x00, 0x3c, 0x3e, 0x00, +0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x00, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, 0x6f, +0x95, 0x75, 0x97, 0x41, 0xb7, 0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, 0x20, 0x60, 0x7e, +0x07, 0x61, 0xc6, 0x6e, 0xa4, 0x6f, 0xe4, 0x41, 0xc7, 0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, 0x5e, +0x0b, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, 0x49, +0xd7, 0x4f, 0xe2, 0x55, 0xea, 0x20, 0x5e, 0xef, 0x0f, 0x61, 0xa0, 0x63, 0x87, 0x65, 0x82, 0x69, +0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x79, 0xec, 0x41, 0xb5, 0x43, 0x80, 0x45, 0x90, 0x49, 0xd6, 0x4f, +0xe0, 0x55, 0xe9, 0x59, 0xed, 0x20, 0xef, 0xf9, 0x0c, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, +0x94, 0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, 0x45, 0xd3, 0x49, 0xd8, 0x4f, 0x99, 0x55, 0x9a, 0x20, +0xf9, 0x00, 0x04, 0x01, 0x01, 0x00, 0x9c, 0x07, 0x01, 0x01, 0x00, 0x89, 0x0c, 0x01, 0x01, 0x00, +0xf8, 0x10, 0x01, 0x00, 0x88, 0x8e, 0x11, 0x01, 0x00, 0xed, 0x8a, 0x12, 0x42, 0x00, 0xde, 0xa8, +0x87, 0x13, 0x41, 0x00, 0xeb, 0xc7, 0x14, 0x41, 0x00, 0xee, 0xd0, 0x15, 0x41, 0x00, 0xf2, 0xd1, +0x16, 0x41, 0x00, 0xe2, 0xac, 0x17, 0x41, 0x00, 0xe3, 0xad, 0x18, 0x41, 0x00, 0xe9, 0xbe, 0x19, +0x41, 0x00, 0xea, 0xc6, 0x1a, 0x01, 0x01, 0x00, 0xae, 0x1b, 0x01, 0x01, 0x00, 0xaf, 0x1e, 0x41, +0x00, 0xd6, 0xa4, 0x1f, 0x41, 0x00, 0xec, 0xcf, 0x20, 0x41, 0x00, 0xdd, 0xa7, 0x21, 0x41, 0x00, +0xf3, 0xd2, 0x22, 0x41, 0x00, 0xd8, 0xa6, 0x23, 0x41, 0x00, 0xe1, 0xaa, 0x24, 0x41, 0x00, 0xe8, +0xbd, 0x25, 0x41, 0x00, 0xe4, 0xb5, 0x26, 0x41, 0x00, 0xe5, 0xb6, 0x27, 0x02, 0x07, 0xc8, 0xc9, +0xca, 0x28, 0x01, 0x00, 0x8c, 0x8b, 0x29, 0x01, 0x00, 0xab, 0xf1, 0x2a, 0x04, 0x1f, 0x00, 0x00, +0x00, 0x00, 0x78, 0x2b, 0x01, 0x00, 0x99, 0x9a, 0x2c, 0xc1, 0x00, 0xe0, 0x00, 0xa9, 0x2c, 0x2d, +0x41, 0x00, 0xf4, 0xd3, 0x2e, 0x41, 0x00, 0xf6, 0xd4, 0x2f, 0x41, 0x00, 0xfa, 0xd5, 0x30, 0x41, +0x00, 0xd7, 0xa5, 0x31, 0x41, 0x00, 0xe7, 0xb8, 0x32, 0x41, 0x00, 0xe6, 0xb7, 0x56, 0x01, 0x00, +0xf5, 0x97, 0x00, 0x12, 0x42, 0x03, 0x00, 0x00, 0x87, 0x36, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00, +0x79, 0x00, 0xef, 0x0f, 0xd6, 0x9b, 0xde, 0x9d, 0xe1, 0x9e, 0xe3, 0x9f, 0xe9, 0xa2, 0xf2, 0xa3, +0xfa, 0xfd, 0xa4, 0x86, 0xa8, 0x8d, 0xaa, 0x8f, 0xad, 0x90, 0xbe, 0x92, 0xd1, 0x95, 0xd5, 0x98, +0x20, 0xef, 0xf9, 0x05, 0xe3, 0xa0, 0xf2, 0xfb, 0xad, 0x91, 0xd1, 0x96, 0x20, 0xf9, 0xf7, 0x03, +0xe3, 0xa1, 0xf2, 0xfc, 0x20, 0xf7, 0x00, 0x0c, 0x01, 0x01, 0x00, 0xf8, 0x10, 0x01, 0x00, 0xf9, +0x51, 0x11, 0x01, 0x00, 0xaa, 0x57, 0x12, 0x41, 0x00, 0x9c, 0x84, 0x13, 0x41, 0x00, 0xa8, 0x90, +0x14, 0x41, 0x00, 0xab, 0x92, 0x15, 0x41, 0x00, 0xac, 0x93, 0x16, 0x41, 0x00, 0x9f, 0x87, 0x17, +0x41, 0x00, 0xa0, 0x88, 0x18, 0x41, 0x00, 0xa6, 0x8e, 0x19, 0x41, 0x00, 0xa7, 0x8f, 0x1e, 0x41, +0x00, 0x98, 0x80, 0x1f, 0x41, 0x00, 0xa9, 0x91, 0x20, 0x41, 0x00, 0x9b, 0x83, 0x21, 0x41, 0x00, +0xad, 0x94, 0x22, 0x41, 0x00, 0x9a, 0x82, 0x23, 0x41, 0x00, 0x9e, 0x86, 0x24, 0x41, 0x00, 0xa5, +0x8d, 0x25, 0x41, 0x00, 0xa1, 0x89, 0x26, 0x41, 0x00, 0xa2, 0x8a, 0x27, 0x01, 0x03, 0xc8, 0xc9, +0x29, 0x01, 0x00, 0x60, 0xf1, 0x2a, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x2b, 0x01, 0x00, +0xfd, 0x7c, 0x2c, 0x41, 0x00, 0x9d, 0x85, 0x2d, 0x41, 0x00, 0xae, 0x95, 0x2e, 0x41, 0x00, 0xaf, +0x96, 0x2f, 0xc1, 0x00, 0xe0, 0x00, 0x97, 0x2f, 0x30, 0x41, 0x00, 0x99, 0x81, 0x31, 0x41, 0x00, +0xa4, 0x8c, 0x32, 0x41, 0x00, 0xa3, 0x8b, 0x56, 0x01, 0x00, 0x15, 0x7c, 0x00, 0x36, 0x04, 0x1f, +0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x27, 0x0f, 0x98, 0xe1, 0x9c, 0xe2, 0x9e, 0xe3, 0xa0, 0xe5, +0xa6, 0xe6, 0xac, 0xe7, 0xe0, 0xe9, 0x80, 0xea, 0x84, 0xeb, 0x86, 0xec, 0x88, 0xed, 0x8e, 0xee, +0x93, 0xef, 0x97, 0xf0, 0x20, 0x27, 0x22, 0x05, 0xa0, 0xe4, 0xac, 0xe8, 0x88, 0xf4, 0x93, 0xf5, +0x20, 0x22, 0x00, 0x0c, 0x01, 0x01, 0x00, 0xf8, 0x10, 0x10, 0x00, 0x00, 0x11, 0x01, 0x00, 0xed, +0x7c, 0x12, 0x41, 0x00, 0xde, 0xa8, 0x13, 0x41, 0x00, 0xeb, 0xc7, 0x14, 0x41, 0x00, 0xee, 0xd0, +0x15, 0x41, 0x00, 0xf2, 0xd1, 0x16, 0x41, 0x00, 0xe2, 0xac, 0x17, 0x41, 0x00, 0xe3, 0xad, 0x18, +0x41, 0x00, 0xe9, 0xbe, 0x19, 0x41, 0x00, 0xea, 0xc6, 0x1a, 0x01, 0x01, 0x00, 0xae, 0x1b, 0x01, +0x01, 0x00, 0xaf, 0x1e, 0x41, 0x00, 0xd6, 0xa4, 0x1f, 0x41, 0x00, 0xec, 0xcf, 0x20, 0x41, 0x00, +0xdd, 0xa7, 0x21, 0x41, 0x00, 0xf3, 0xd2, 0x22, 0x41, 0x00, 0xd8, 0xa6, 0x23, 0x41, 0x00, 0xe1, +0xaa, 0x24, 0x41, 0x00, 0xe8, 0xbd, 0x25, 0x41, 0x00, 0xe4, 0xb5, 0x26, 0x41, 0x00, 0xe5, 0xb6, +0x27, 0x02, 0x07, 0xc8, 0xc9, 0xca, 0x29, 0x01, 0x00, 0xab, 0xf1, 0x2a, 0x04, 0x1f, 0x00, 0x00, +0x00, 0x00, 0x7c, 0x2b, 0x01, 0x00, 0x5c, 0x7c, 0x2c, 0xc1, 0x00, 0xe0, 0x00, 0xa9, 0x2c, 0x2d, +0x41, 0x00, 0xf4, 0xd3, 0x2e, 0x41, 0x00, 0xf6, 0xd4, 0x2f, 0x41, 0x00, 0xfa, 0xd5, 0x30, 0x41, +0x00, 0xd7, 0xa5, 0x31, 0x41, 0x00, 0xe7, 0xb8, 0x32, 0x41, 0x00, 0xe6, 0xb7, 0x56, 0x01, 0x00, +0xf5, 0x7c, 0x00, 0x36, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0xef, 0x0f, 0xd6, 0x9b, +0xde, 0x9d, 0xe1, 0x9e, 0xe3, 0x9f, 0xe9, 0xa2, 0xf2, 0xa3, 0xfa, 0xfd, 0xa4, 0x86, 0xa8, 0x8d, +0xaa, 0x8f, 0xad, 0x90, 0xbe, 0x92, 0xd1, 0x95, 0xd5, 0x98, 0x20, 0xef, 0xf9, 0x03, 0xe3, 0xa0, +0xf2, 0xfb, 0x20, 0xf9, 0x27, 0x03, 0xe3, 0xa1, 0xf2, 0xfc, 0x20, 0x27, 0x00 }; + +// Germany (Standard) +Bit8u layout_GR[596] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x13, 0x00, 0x00, 0x47, 0x52, 0x2c, 0x00, 0x00, 0x44, 0x45, 0x2c, +0x81, 0x00, 0x47, 0x52, 0x2c, 0x81, 0x00, 0x44, 0x45, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, +0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x03, 0x19, 0x01, 0x20, 0x01, 0x00, 0x00, 0x52, 0x03, 0x00, +0x00, 0x20, 0x01, 0x00, 0x00, 0xb5, 0x01, 0x12, 0x01, 0x71, 0x01, 0x00, 0x00, 0x54, 0x03, 0xa2, +0x01, 0xd8, 0x01, 0x00, 0x00, 0x55, 0x03, 0x01, 0x02, 0x1e, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x03, +0x00, 0x00, 0x7c, 0x03, 0x02, 0x01, 0x00, 0x22, 0xfd, 0x04, 0x02, 0x01, 0x00, 0xf5, 0xfc, 0x07, +0x01, 0x01, 0x00, 0x26, 0x08, 0x02, 0x01, 0x00, 0x2f, 0x7b, 0x09, 0x03, 0x01, 0x00, 0x28, 0x5b, +0x1b, 0x0a, 0x03, 0x01, 0x00, 0x29, 0x5d, 0x1d, 0x0b, 0x02, 0x01, 0x00, 0x3d, 0x7d, 0x0c, 0x03, +0x00, 0xe1, 0x3f, 0x5c, 0x1c, 0x0d, 0x01, 0x03, 0xca, 0xc8, 0x10, 0x42, 0x03, 0x00, 0x00, 0x40, +0x12, 0x41, 0x00, 0x65, 0x45, 0x15, 0x43, 0x04, 0x7a, 0x5a, 0x00, 0x1a, 0x16, 0x41, 0x00, 0x75, +0x55, 0x17, 0x41, 0x00, 0x69, 0x49, 0x18, 0x41, 0x00, 0x6f, 0x4f, 0x1a, 0x41, 0x00, 0x81, 0x9a, +0x1b, 0x02, 0x00, 0x2b, 0x2a, 0x7e, 0x1e, 0x41, 0x00, 0x61, 0x41, 0x27, 0x41, 0x00, 0x94, 0x99, +0x28, 0x41, 0x00, 0x84, 0x8e, 0x29, 0x03, 0x05, 0xc9, 0xf8, 0x00, 0x1e, 0x2b, 0x01, 0x00, 0x23, +0x27, 0x2c, 0x43, 0x00, 0x79, 0x59, 0x3c, 0x19, 0x2d, 0x42, 0x03, 0x00, 0x00, 0x3e, 0x2e, 0x41, +0x00, 0x63, 0x43, 0x31, 0x42, 0x03, 0x00, 0x00, 0x23, 0x32, 0x42, 0x03, 0x00, 0x00, 0xe6, 0x33, +0x01, 0x01, 0x00, 0x3b, 0x34, 0x01, 0x01, 0x00, 0x3a, 0x35, 0x03, 0x04, 0x2d, 0x5f, 0x00, 0x1f, +0x39, 0x00, 0x00, 0x20, 0x56, 0x02, 0x00, 0x3c, 0x3e, 0x7c, 0x00, 0x04, 0x02, 0x05, 0x00, 0x15, +0xa0, 0x00, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x00, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, 0x69, +0x8d, 0x6f, 0x95, 0x75, 0x97, 0x41, 0xb7, 0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, 0x20, +0x60, 0x5e, 0x0b, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, +0xd2, 0x49, 0xd7, 0x4f, 0xe2, 0x55, 0xea, 0x20, 0x5e, 0xef, 0x0f, 0x61, 0xa0, 0x63, 0x87, 0x65, +0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x79, 0xec, 0x41, 0xb5, 0x43, 0x80, 0x45, 0x90, 0x49, +0xd6, 0x4f, 0xe0, 0x55, 0xe9, 0x59, 0xed, 0x20, 0xef, 0x00, 0x60, 0x06, 0x61, 0x85, 0x65, 0x8a, +0x69, 0x8d, 0x6f, 0x95, 0x75, 0x97, 0x20, 0x60, 0x5e, 0x06, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, +0x6f, 0x93, 0x75, 0x96, 0x20, 0x5e, 0x27, 0x09, 0x61, 0xa0, 0x63, 0x87, 0x65, 0x82, 0x69, 0xa1, +0x6f, 0xa2, 0x75, 0xa3, 0x43, 0x80, 0x45, 0x90, 0x20, 0x27, 0x00, 0x03, 0x02, 0x07, 0x00, 0x00, +0xa0, 0x04, 0x02, 0x07, 0x00, 0x00, 0xa0, 0x0d, 0x01, 0x03, 0xc8, 0xa0, 0x12, 0x42, 0x03, 0x00, +0x00, 0xaa, 0x1f, 0x41, 0x00, 0x73, 0x53, 0x26, 0x41, 0x00, 0x6c, 0x4c, 0x29, 0x00, 0x01, 0xa0, +0x2d, 0x41, 0x00, 0x78, 0x58, 0x31, 0x41, 0x00, 0x6e, 0x4e, 0x32, 0x42, 0x07, 0x00, 0x00, 0xa0, +0x00, 0xef, 0x13, 0x61, 0xa5, 0x63, 0x86, 0x65, 0xa9, 0x6c, 0x88, 0x6e, 0xe4, 0x6f, 0xa2, 0x73, +0x98, 0x78, 0xab, 0x7a, 0xbe, 0x41, 0xa4, 0x43, 0x8f, 0x45, 0xa8, 0x4c, 0x9d, 0x4e, 0xe3, 0x4f, +0xe0, 0x53, 0x97, 0x58, 0x8d, 0x5a, 0xbd, 0x20, 0xef, 0x00, 0x0d, 0x10, 0x00, 0x00, 0x1f, 0x41, +0x00, 0x73, 0x53, 0x22, 0x41, 0x00, 0x67, 0x47, 0x23, 0x41, 0x00, 0x68, 0x48, 0x24, 0x41, 0x00, +0x6a, 0x4a, 0x29, 0x00, 0x01, 0xc8, 0x00, 0x5e, 0x0d, 0x63, 0x86, 0x67, 0x9b, 0x68, 0xa9, 0x6a, +0x9f, 0x73, 0xc7, 0x75, 0xed, 0x43, 0x8f, 0x47, 0x9d, 0x48, 0xa8, 0x4a, 0xac, 0x53, 0xc6, 0x55, +0xec, 0x20, 0x5e, 0x00 }; + +// Croatia +Bit8u layout_HR[993] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x27, 0x00, 0x00, 0x42, 0x41, 0x2c, 0x00, 0x00, 0x48, 0x52, 0x2c, +0x00, 0x00, 0x53, 0x49, 0x2c, 0x00, 0x00, 0x59, 0x55, 0x2c, 0xea, 0x00, 0x42, 0x41, 0x2c, 0xea, +0x00, 0x48, 0x52, 0x2c, 0xea, 0x00, 0x53, 0x49, 0x2c, 0xea, 0x00, 0x59, 0x55, 0x05, 0x02, 0x00, +0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x03, 0xde, 0x01, 0x65, 0x02, 0x00, +0x00, 0x71, 0x00, 0x29, 0x01, 0x7f, 0x01, 0x00, 0x00, 0x5a, 0x03, 0x26, 0x03, 0x2d, 0x03, 0x00, +0x00, 0x52, 0x03, 0x00, 0x00, 0x2d, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x07, 0x00, 0x00, 0xc8, 0x03, +0x01, 0x01, 0x00, 0x22, 0x04, 0x03, 0x07, 0x00, 0x00, 0xc9, 0x1e, 0x06, 0x02, 0x07, 0x00, 0x00, +0xca, 0x07, 0x01, 0x01, 0x00, 0x26, 0x08, 0x02, 0x05, 0x00, 0x2f, 0xcb, 0x09, 0x02, 0x01, 0x00, +0x28, 0xfa, 0x0a, 0x02, 0x05, 0x00, 0x29, 0xcc, 0x0b, 0x01, 0x01, 0x00, 0x3d, 0x0c, 0x02, 0x04, +0x27, 0x3f, 0xcd, 0x0d, 0x02, 0x04, 0x2b, 0x2a, 0xce, 0x10, 0x42, 0x03, 0x00, 0x00, 0x5c, 0x11, +0x42, 0x03, 0x00, 0x00, 0x7c, 0x12, 0x41, 0x00, 0x65, 0x45, 0x15, 0x43, 0x04, 0x7a, 0x5a, 0x00, +0x1a, 0x16, 0x41, 0x00, 0x75, 0x55, 0x17, 0x41, 0x00, 0x69, 0x49, 0x18, 0x41, 0x00, 0x6f, 0x4f, +0x1a, 0x42, 0x03, 0xa0, 0xa0, 0xf6, 0x1b, 0x42, 0x03, 0xa0, 0xa0, 0x9e, 0x1e, 0x41, 0x00, 0x61, +0x41, 0x21, 0x42, 0x03, 0x00, 0x00, 0x5b, 0x22, 0x42, 0x03, 0x00, 0x00, 0x5d, 0x27, 0x43, 0x07, +0xa0, 0xa0, 0x00, 0x1d, 0x28, 0x42, 0x03, 0xa0, 0xa0, 0xe1, 0x29, 0x01, 0x03, 0xce, 0xcd, 0x2b, +0x42, 0x03, 0xa0, 0xa0, 0xcf, 0x2c, 0x43, 0x04, 0x79, 0x59, 0x00, 0x19, 0x2e, 0x41, 0x00, 0x63, +0x43, 0x2f, 0x42, 0x03, 0x00, 0x00, 0x40, 0x30, 0x42, 0x03, 0x00, 0x00, 0x7b, 0x31, 0x42, 0x00, +0x6e, 0x4e, 0x7d, 0x32, 0x42, 0x03, 0x00, 0x00, 0xf5, 0x33, 0x02, 0x01, 0x00, 0x3b, 0x3c, 0x34, +0x02, 0x01, 0x00, 0x3a, 0x3e, 0x35, 0x03, 0x04, 0x2d, 0x5f, 0x00, 0x1f, 0x39, 0x00, 0x00, 0x20, +0x56, 0x01, 0x00, 0x3c, 0x3e, 0x00, 0x02, 0x02, 0x03, 0x00, 0x00, 0x7e, 0x03, 0x02, 0x07, 0x00, +0x00, 0xc8, 0x06, 0x02, 0x03, 0x00, 0x00, 0xf8, 0x08, 0x02, 0x07, 0x00, 0x00, 0xca, 0x0a, 0x02, +0x07, 0x00, 0x00, 0xcb, 0x0c, 0x02, 0x07, 0x00, 0x00, 0xcc, 0x0d, 0x02, 0x07, 0x00, 0x00, 0xcd, +0x1a, 0x41, 0x00, 0xa4, 0xa5, 0x1b, 0x42, 0x04, 0x9b, 0x9d, 0xa0, 0x1f, 0x41, 0x00, 0x73, 0x53, +0x27, 0x41, 0x00, 0x91, 0x92, 0x28, 0x41, 0x00, 0x86, 0x8f, 0x29, 0x01, 0x03, 0xcd, 0xcc, 0x2b, +0x42, 0x04, 0xa6, 0xa7, 0xa0, 0x32, 0x42, 0x03, 0x00, 0x00, 0x15, 0x00, 0x76, 0x07, 0x63, 0x91, +0x73, 0xa4, 0x7a, 0xa6, 0x43, 0x92, 0x53, 0xa5, 0x5a, 0xa7, 0x20, 0x76, 0x5e, 0x06, 0x61, 0x83, +0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x20, 0x5e, 0x60, 0x06, 0x61, 0x85, 0x65, 0x8a, +0x69, 0x8d, 0x6f, 0x95, 0x75, 0x97, 0x20, 0x60, 0x27, 0x09, 0x61, 0xa0, 0x63, 0x86, 0x65, 0x82, +0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x43, 0x8f, 0x45, 0x90, 0x20, 0x27, 0x22, 0x0a, 0x61, 0x84, +0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, 0x4f, 0x99, 0x55, 0x9a, +0x20, 0x22, 0x2c, 0x03, 0x63, 0x87, 0x43, 0x80, 0x20, 0x2c, 0x00, 0x02, 0x02, 0x03, 0x00, 0x00, +0x7e, 0x03, 0x02, 0x07, 0x00, 0x00, 0xc8, 0x05, 0x02, 0x07, 0x00, 0x00, 0xca, 0x06, 0x02, 0x07, +0x00, 0x00, 0xcb, 0x07, 0x02, 0x07, 0x00, 0x00, 0xcc, 0x08, 0x02, 0x03, 0x00, 0x00, 0x60, 0x09, +0x02, 0x07, 0x00, 0x00, 0xcd, 0x0a, 0x02, 0x07, 0x00, 0x00, 0xce, 0x0b, 0x02, 0x07, 0x00, 0x00, +0xcf, 0x0c, 0x02, 0x07, 0x00, 0x00, 0xd0, 0x0d, 0x02, 0x07, 0x00, 0x00, 0xd1, 0x12, 0x42, 0x03, +0x00, 0x00, 0xaa, 0x13, 0x41, 0x00, 0x72, 0x52, 0x14, 0x41, 0x00, 0x74, 0x54, 0x1a, 0x41, 0x00, +0xe7, 0xe6, 0x1b, 0x41, 0x00, 0xd0, 0xd1, 0x1f, 0x41, 0x00, 0x73, 0x53, 0x20, 0x41, 0x00, 0x64, +0x44, 0x25, 0x42, 0x03, 0x00, 0x00, 0x88, 0x26, 0x42, 0x00, 0x6c, 0x4c, 0x9d, 0x27, 0x41, 0x00, +0x9f, 0xac, 0x28, 0x41, 0x00, 0x86, 0x8f, 0x29, 0x01, 0x03, 0xd1, 0xd0, 0x2b, 0x41, 0x00, 0xa7, +0xa6, 0x00, 0xf3, 0x13, 0x63, 0x9f, 0x64, 0xd4, 0x65, 0xd8, 0x6c, 0x96, 0x6e, 0xe5, 0x72, 0xfd, +0x73, 0xe7, 0x74, 0x9c, 0x7a, 0xa7, 0x43, 0xac, 0x44, 0xd2, 0x45, 0xb7, 0x4c, 0x95, 0x4e, 0xd5, +0x52, 0xfc, 0x53, 0xe6, 0x54, 0x9b, 0x5a, 0xa6, 0x20, 0xf3, 0x5e, 0x07, 0x61, 0x83, 0x69, 0x8c, +0x6f, 0x93, 0x41, 0xb6, 0x49, 0xd7, 0x4f, 0xe2, 0x20, 0x5e, 0xf4, 0x03, 0x61, 0xc7, 0x41, 0xc6, +0x20, 0xf4, 0xf8, 0x03, 0x75, 0x85, 0x55, 0xde, 0x20, 0xf8, 0xf2, 0x05, 0x61, 0xa5, 0x65, 0xa9, +0x41, 0xa4, 0x45, 0xa8, 0x20, 0xf2, 0xfa, 0x03, 0x7a, 0xbe, 0x5a, 0xbd, 0x20, 0xfa, 0xef, 0x19, +0x61, 0xa0, 0x63, 0x86, 0x65, 0x82, 0x69, 0xa1, 0x6c, 0x92, 0x6e, 0xe4, 0x6f, 0xa2, 0x72, 0xea, +0x73, 0x98, 0x75, 0xa3, 0x79, 0xec, 0x7a, 0xab, 0x41, 0xb5, 0x43, 0x8f, 0x45, 0x90, 0x49, 0xd6, +0x4c, 0x91, 0x4e, 0xe3, 0x4f, 0xe0, 0x52, 0xe8, 0x53, 0x97, 0x55, 0xe9, 0x59, 0xed, 0x5a, 0x8d, +0x20, 0xef, 0xf1, 0x05, 0x6f, 0x8b, 0x75, 0xfb, 0x4f, 0x8a, 0x55, 0xeb, 0x20, 0xf1, 0xf9, 0x09, +0x61, 0x84, 0x65, 0x89, 0x6f, 0x94, 0x75, 0x81, 0x41, 0x8e, 0x45, 0xd3, 0x4f, 0x99, 0x55, 0x9a, +0x20, 0xf9, 0xf7, 0x07, 0x63, 0x87, 0x73, 0xad, 0x74, 0xee, 0x43, 0x80, 0x53, 0xb8, 0x54, 0xdd, +0x20, 0xf7, 0x00, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x00, 0x7e, 0x07, 0x61, 0xc6, 0x6e, 0xa4, +0x6f, 0xe4, 0x41, 0xc7, 0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, 0x5e, 0x0b, 0x61, 0x83, 0x65, 0x88, +0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, 0x49, 0xd7, 0x4f, 0xe2, 0x55, 0xea, +0x20, 0x5e, 0xf8, 0x03, 0x61, 0x86, 0x41, 0x8f, 0x20, 0xf8, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, +0x69, 0x8d, 0x6f, 0x95, 0x75, 0x97, 0x41, 0xb7, 0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, +0x20, 0x60, 0xef, 0x0d, 0x61, 0xa0, 0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x79, 0xec, +0x41, 0xb5, 0x45, 0x90, 0x49, 0xd6, 0x4f, 0xe0, 0x55, 0xe9, 0x59, 0xed, 0x20, 0xef, 0xf9, 0x0c, +0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, 0x45, 0xd3, +0x49, 0xd8, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0xf9, 0xf7, 0x03, 0x63, 0x87, 0x43, 0x80, 0x20, 0xf7, +0x00 }; + +// Hungary (101-key) +Bit8u layout_HU[964] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x04, 0x00, 0x00, 0x48, 0x55, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, +0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x03, 0xd3, 0x01, 0x44, 0x02, 0x00, 0x00, 0x5a, 0x03, +0x45, 0x01, 0x4c, 0x01, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x4c, 0x01, 0x00, 0x00, 0xb5, 0xe1, +0x05, 0x03, 0x59, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x07, 0x00, 0xcc, 0xc8, 0x03, 0x01, 0x03, 0x00, +0xcd, 0x04, 0x03, 0x05, 0x00, 0x2b, 0xc9, 0x1e, 0x05, 0x01, 0x01, 0x00, 0x21, 0x06, 0x02, 0x07, +0x00, 0x00, 0xca, 0x07, 0x01, 0x01, 0x00, 0x2f, 0x08, 0x02, 0x05, 0x00, 0x3d, 0xcb, 0x09, 0x02, +0x01, 0x00, 0x28, 0xfa, 0x0a, 0x02, 0x01, 0x00, 0x29, 0xef, 0x0b, 0x41, 0x00, 0x94, 0x99, 0x0c, +0x42, 0x00, 0x81, 0x9a, 0xf9, 0x0d, 0xc2, 0x04, 0xa2, 0x0d, 0xe0, 0x00, 0xce, 0x83, 0x10, 0x42, +0x03, 0x00, 0x00, 0x5c, 0x11, 0x42, 0x03, 0x00, 0x00, 0x7c, 0x12, 0x42, 0x00, 0x65, 0x45, 0x8e, +0x13, 0x42, 0x03, 0x00, 0x00, 0xf5, 0x14, 0x42, 0x03, 0x00, 0x00, 0xcf, 0x15, 0x41, 0x00, 0x79, +0x59, 0x16, 0x41, 0x00, 0x75, 0x55, 0x17, 0x42, 0x00, 0x69, 0x49, 0xd6, 0x18, 0x41, 0x00, 0x6f, +0x4f, 0x1a, 0x42, 0x03, 0xa0, 0xa0, 0xf6, 0x1b, 0x42, 0x00, 0xa3, 0xe9, 0x9e, 0x1e, 0x42, 0x00, +0x61, 0x41, 0x84, 0x21, 0x42, 0x03, 0x00, 0x00, 0x5b, 0x22, 0x42, 0x03, 0x00, 0x00, 0x5d, 0x24, +0x42, 0x03, 0x00, 0x00, 0xa1, 0x27, 0x42, 0x00, 0x82, 0x90, 0x24, 0x28, 0x42, 0x00, 0xa0, 0xb5, +0xe1, 0x29, 0x42, 0x00, 0xa1, 0xd6, 0x30, 0x2b, 0x42, 0x03, 0xa0, 0xa0, 0x5c, 0x2c, 0x42, 0x00, +0x7a, 0x5a, 0x3e, 0x2d, 0x42, 0x03, 0x00, 0x00, 0x23, 0x2e, 0x42, 0x00, 0x63, 0x43, 0x26, 0x2f, +0x42, 0x03, 0x00, 0x00, 0x40, 0x30, 0x42, 0x03, 0x00, 0x00, 0x7b, 0x31, 0x42, 0x00, 0x6e, 0x4e, +0x7d, 0x32, 0x42, 0x03, 0x00, 0x00, 0x3c, 0x33, 0x02, 0x00, 0x2c, 0x3f, 0x3b, 0x34, 0x02, 0x00, +0x2e, 0x3a, 0x3e, 0x35, 0x03, 0x00, 0x2d, 0x5f, 0x2a, 0x1f, 0x39, 0x00, 0x00, 0x20, 0x00, 0x16, +0x42, 0x03, 0x00, 0x00, 0xd5, 0x00, 0x7e, 0x07, 0x61, 0xc6, 0x6e, 0xa4, 0x6f, 0xe4, 0x41, 0xc7, +0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, 0x5e, 0x0b, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, +0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, 0x49, 0xd7, 0x4f, 0xe2, 0x55, 0xea, 0x20, 0x5e, 0xf8, 0x03, +0x61, 0x86, 0x41, 0x8f, 0x20, 0xf8, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, 0x6f, 0x95, +0x75, 0x97, 0x41, 0xb7, 0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, 0x20, 0x60, 0x27, 0x0d, +0x61, 0xa0, 0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x79, 0xec, 0x41, 0xb5, 0x45, 0x90, +0x49, 0xd6, 0x4f, 0xe0, 0x55, 0xe9, 0x59, 0xed, 0x20, 0x27, 0x22, 0x0c, 0x61, 0x84, 0x65, 0x89, +0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, 0x45, 0xd3, 0x49, 0xd8, 0x4f, 0x99, +0x55, 0x9a, 0x20, 0x22, 0xf7, 0x03, 0x63, 0x87, 0x43, 0x80, 0x20, 0xf7, 0x00, 0x02, 0x02, 0x03, +0x00, 0xce, 0x7e, 0x03, 0x02, 0x07, 0x00, 0xd0, 0xc8, 0x04, 0x01, 0x03, 0x00, 0xcf, 0x05, 0x02, +0x07, 0x00, 0x00, 0xca, 0x06, 0x02, 0x07, 0x00, 0x00, 0xcb, 0x07, 0x02, 0x07, 0x00, 0x00, 0xcc, +0x08, 0x02, 0x03, 0x00, 0x00, 0x60, 0x09, 0x02, 0x07, 0x00, 0x00, 0xcd, 0x0b, 0x42, 0x03, 0x00, +0x00, 0xf1, 0x0d, 0xc2, 0x05, 0x00, 0x0d, 0xe0, 0x00, 0xd1, 0x83, 0x13, 0x41, 0x00, 0x72, 0x52, +0x14, 0x41, 0x00, 0x74, 0x54, 0x16, 0x42, 0x03, 0x00, 0x00, 0xaa, 0x1a, 0x41, 0x00, 0x8b, 0x8a, +0x1f, 0x42, 0x00, 0x73, 0x53, 0xd0, 0x20, 0x42, 0x00, 0x64, 0x44, 0xd1, 0x25, 0x42, 0x03, 0x00, +0x00, 0x88, 0x26, 0x42, 0x00, 0x6c, 0x4c, 0x9d, 0x2b, 0x41, 0x00, 0xfb, 0xeb, 0x00, 0xf3, 0x13, +0x63, 0x9f, 0x64, 0xd4, 0x65, 0xd8, 0x6c, 0x96, 0x6e, 0xe5, 0x72, 0xfd, 0x73, 0xe7, 0x74, 0x9c, +0x7a, 0xa7, 0x43, 0xac, 0x44, 0xd2, 0x45, 0xb7, 0x4c, 0x95, 0x4e, 0xd5, 0x52, 0xfc, 0x53, 0xe6, +0x54, 0x9b, 0x5a, 0xa6, 0x20, 0xf3, 0x5e, 0x07, 0x61, 0x83, 0x69, 0x8c, 0x6f, 0x93, 0x41, 0xb6, +0x49, 0xd7, 0x4f, 0xe2, 0x20, 0x5e, 0xf4, 0x03, 0x61, 0xc7, 0x41, 0xc6, 0x20, 0xf4, 0xf8, 0x03, +0x75, 0x85, 0x55, 0xde, 0x20, 0xf8, 0xf2, 0x05, 0x61, 0xa5, 0x65, 0xa9, 0x41, 0xa4, 0x45, 0xa8, +0x20, 0xf2, 0xfa, 0x03, 0x7a, 0xbe, 0x5a, 0xbd, 0x20, 0xfa, 0x27, 0x19, 0x61, 0xa0, 0x63, 0x86, +0x65, 0x82, 0x69, 0xa1, 0x6c, 0x92, 0x6e, 0xe4, 0x6f, 0xa2, 0x72, 0xea, 0x73, 0x98, 0x75, 0xa3, +0x79, 0xec, 0x7a, 0xab, 0x41, 0xb5, 0x43, 0x8f, 0x45, 0x90, 0x49, 0xd6, 0x4c, 0x91, 0x4e, 0xe3, +0x4f, 0xe0, 0x52, 0xe8, 0x53, 0x97, 0x55, 0xe9, 0x59, 0xed, 0x5a, 0x8d, 0x20, 0x27, 0x2b, 0x05, +0x6f, 0x8b, 0x75, 0xfb, 0x4f, 0x8a, 0x55, 0xeb, 0x20, 0x2b, 0x22, 0x09, 0x61, 0x84, 0x65, 0x89, +0x6f, 0x94, 0x75, 0x81, 0x41, 0x8e, 0x45, 0xd3, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0x22, 0xf7, 0x07, +0x63, 0x87, 0x73, 0xad, 0x74, 0xee, 0x43, 0x80, 0x53, 0xb8, 0x54, 0xdd, 0x20, 0xf7, 0x00, 0x02, +0x01, 0x03, 0x00, 0xcc, 0x03, 0x01, 0x03, 0x00, 0xce, 0x04, 0x01, 0x03, 0x00, 0xcd, 0x0a, 0x02, +0x07, 0x00, 0x00, 0xcc, 0x0b, 0x42, 0x07, 0x00, 0x00, 0xcd, 0x0c, 0x42, 0x07, 0x00, 0x00, 0xce, +0x0d, 0x42, 0x05, 0x00, 0x95, 0xcf, 0x13, 0x42, 0x03, 0x00, 0x00, 0x15, 0x14, 0x42, 0x07, 0x00, +0x00, 0xa0, 0x17, 0x42, 0x03, 0x00, 0x00, 0x8d, 0x1a, 0x41, 0x00, 0x93, 0xa7, 0x1b, 0x42, 0x05, +0x00, 0x97, 0xa0, 0x28, 0x41, 0x01, 0x00, 0x8f, 0x29, 0x41, 0x01, 0x00, 0x8d, 0x2b, 0x41, 0x00, +0x96, 0x98, 0x00, 0x7e, 0x03, 0x6e, 0xa4, 0x4e, 0xa5, 0x20, 0x7e, 0x5e, 0x04, 0x61, 0x83, 0x65, +0x88, 0x69, 0x8c, 0x20, 0x5e, 0xf8, 0x02, 0x61, 0x86, 0x20, 0xf8, 0x60, 0x03, 0x61, 0x85, 0x65, +0x8a, 0x20, 0x60, 0x27, 0x0b, 0x61, 0xa0, 0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x41, +0x8f, 0x45, 0x90, 0x49, 0x8d, 0x4f, 0x95, 0x55, 0x97, 0x20, 0x27, 0x2b, 0x05, 0x6f, 0x93, 0x75, +0x96, 0x4f, 0xa7, 0x55, 0x98, 0x20, 0x2b, 0x22, 0x09, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, +0x94, 0x75, 0x81, 0x41, 0x8e, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0x22, 0x2c, 0x03, 0x63, 0x87, 0x43, +0x80, 0x20, 0x2c, 0x00 }; + +// Italy (Standard) +Bit8u layout_IT[236] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x09, 0x00, 0x00, 0x49, 0x54, 0x2c, 0x8d, 0x00, 0x49, 0x54, 0x04, +0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x03, 0xd0, 0x00, 0x00, +0x00, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x01, 0xca, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x00, 0x22, +0x04, 0x02, 0x01, 0x00, 0x9c, 0x23, 0x07, 0x01, 0x01, 0x00, 0x26, 0x08, 0x02, 0x01, 0x00, 0x2f, +0x7b, 0x09, 0x03, 0x01, 0x00, 0x28, 0x5b, 0x1b, 0x0a, 0x03, 0x01, 0x00, 0x29, 0x5d, 0x1d, 0x0b, +0x02, 0x01, 0x00, 0x3d, 0x7d, 0x0c, 0x01, 0x00, 0x27, 0x3f, 0x0d, 0x03, 0x00, 0x8d, 0x5e, 0x7e, +0x1e, 0x10, 0x42, 0x03, 0x00, 0x00, 0x40, 0x1a, 0x04, 0x08, 0x8a, 0x82, 0x5b, 0x00, 0x7b, 0x1b, +0x04, 0x08, 0x2b, 0x2a, 0x5d, 0x00, 0x7d, 0x27, 0x02, 0x00, 0x95, 0x87, 0x40, 0x28, 0x02, 0x00, +0x85, 0xf8, 0x23, 0x29, 0x03, 0x04, 0x5c, 0x7c, 0x00, 0x1c, 0x2b, 0x02, 0x00, 0x97, 0xf5, 0x60, +0x33, 0x02, 0x01, 0x00, 0x3b, 0x3c, 0x34, 0x02, 0x01, 0x00, 0x3a, 0x3e, 0x35, 0x03, 0x04, 0x2d, +0x5f, 0x00, 0x1f, 0x56, 0x01, 0x00, 0x3c, 0x3e, 0x00, 0x2b, 0x01, 0x01, 0x00, 0x15, 0x00, 0x06, +0x02, 0x03, 0x00, 0x00, 0xd5, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x00 }; + +// Netherlands (102-key) +Bit8u layout_NL[552] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x09, 0x00, 0x00, 0x4e, 0x4c, 0x2c, 0x8f, 0x00, 0x4e, 0x4c, 0x04, +0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x03, 0x93, 0x01, 0x9a, +0x01, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x9a, 0x01, 0x00, 0x00, 0xb5, 0x01, 0x16, 0x01, 0x40, +0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x02, 0x03, 0x00, 0x00, 0xfb, 0x03, 0x02, 0x01, 0x00, 0x22, 0xfd, 0x04, +0x02, 0x03, 0x00, 0x00, 0xfc, 0x05, 0x02, 0x03, 0x00, 0x00, 0xac, 0x06, 0x02, 0x03, 0x00, 0x00, +0xab, 0x07, 0x02, 0x01, 0x00, 0x26, 0xf3, 0x08, 0x03, 0x01, 0x00, 0x5f, 0x9c, 0x1f, 0x09, 0x02, +0x01, 0x00, 0x28, 0x7b, 0x0a, 0x02, 0x01, 0x00, 0x29, 0x7d, 0x0b, 0x01, 0x01, 0x00, 0x27, 0x0c, +0x03, 0x00, 0x2f, 0x3f, 0x5c, 0x1c, 0x0d, 0x02, 0x06, 0xf8, 0xc9, 0xcd, 0x12, 0x41, 0x00, 0x65, +0x45, 0x13, 0x42, 0x03, 0x00, 0x00, 0xf4, 0x15, 0x41, 0x00, 0x79, 0x59, 0x16, 0x41, 0x00, 0x75, +0x55, 0x17, 0x41, 0x00, 0x69, 0x49, 0x18, 0x41, 0x00, 0x6f, 0x4f, 0x1a, 0x03, 0x07, 0xcc, 0xca, +0x00, 0x1e, 0x1b, 0x02, 0x00, 0x2a, 0x7c, 0xdd, 0x1e, 0x41, 0x00, 0x61, 0x41, 0x1f, 0x42, 0x03, +0x00, 0x00, 0xe1, 0x27, 0x01, 0x00, 0x2b, 0xf1, 0x28, 0x01, 0x03, 0xcb, 0xc8, 0x29, 0x02, 0x00, +0x40, 0xf5, 0xaa, 0x2b, 0x01, 0x00, 0x3c, 0x3e, 0x2c, 0x42, 0x03, 0x00, 0x00, 0xae, 0x2d, 0x42, +0x03, 0x00, 0x00, 0xaf, 0x2e, 0x42, 0x00, 0x63, 0x43, 0xbd, 0x31, 0x41, 0x00, 0x6e, 0x4e, 0x32, +0x42, 0x03, 0x00, 0x00, 0xe6, 0x33, 0x03, 0x01, 0x00, 0x3b, 0x5b, 0x1b, 0x34, 0x02, 0x01, 0x00, +0x3a, 0xfa, 0x35, 0x03, 0x00, 0x2d, 0x3d, 0x5d, 0x1d, 0x39, 0x00, 0x00, 0x20, 0x56, 0x03, 0x00, +0x5d, 0x5b, 0x7c, 0x1d, 0x00, 0x02, 0x02, 0x07, 0x00, 0x00, 0xa0, 0x04, 0x02, 0x07, 0x00, 0x00, +0xa0, 0x07, 0x02, 0x07, 0x00, 0x00, 0xa0, 0x13, 0x42, 0x03, 0x00, 0x00, 0x14, 0x1b, 0x02, 0x07, +0x00, 0x00, 0xa0, 0x29, 0x01, 0x01, 0x00, 0x15, 0x2e, 0x42, 0x03, 0x00, 0x00, 0x9b, 0x00, 0x60, +0x06, 0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, 0x6f, 0x95, 0x75, 0x97, 0x20, 0x60, 0x7e, 0x03, 0x6e, +0xa4, 0x4e, 0xa5, 0x20, 0x7e, 0x5e, 0x06, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, +0x96, 0x20, 0x5e, 0x27, 0x07, 0x61, 0xa0, 0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x45, +0x90, 0x20, 0x27, 0x22, 0x0a, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, +0x98, 0x41, 0x8e, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0x22, 0x2c, 0x03, 0x63, 0x87, 0x43, 0x80, 0x20, +0x2c, 0x00, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x00, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, 0x69, +0x8d, 0x6f, 0x95, 0x75, 0x97, 0x41, 0xb7, 0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, 0x20, +0x60, 0x7e, 0x07, 0x61, 0xc6, 0x6e, 0xa4, 0x6f, 0xe4, 0x41, 0xc7, 0x4e, 0xa5, 0x4f, 0xe5, 0x20, +0x7e, 0x5e, 0x0b, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, +0xd2, 0x49, 0xd7, 0x4f, 0xe2, 0x55, 0xea, 0x20, 0x5e, 0xef, 0x0d, 0x61, 0xa0, 0x65, 0x82, 0x69, +0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x79, 0xec, 0x41, 0xb5, 0x45, 0x90, 0x49, 0xd6, 0x4f, 0xe0, 0x55, +0xe9, 0x59, 0xed, 0x20, 0xef, 0xf9, 0x0c, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, +0x81, 0x79, 0x98, 0x41, 0x8e, 0x45, 0xd3, 0x49, 0xd8, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0xf9, 0xf7, +0x03, 0x63, 0x87, 0x43, 0x80, 0x20, 0xf7, 0x00 }; + +// Norway +Bit8u layout_NO[477] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x09, 0x00, 0x00, 0x4e, 0x4f, 0x2c, 0x9b, 0x00, 0x4e, 0x4f, 0x04, +0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x03, 0xec, 0x00, 0xf9, +0x00, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0xf9, 0x00, 0x00, 0x00, 0x61, 0x03, 0x74, 0x01, 0x7f, +0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00, 0x22, 0x40, 0x04, 0x02, 0x03, 0x00, 0x00, 0x9c, 0x05, +0x02, 0x01, 0x00, 0xcf, 0x24, 0x07, 0x01, 0x01, 0x00, 0x26, 0x08, 0x02, 0x01, 0x00, 0x2f, 0x7b, +0x09, 0x03, 0x01, 0x00, 0x28, 0x5b, 0x1b, 0x0a, 0x03, 0x01, 0x00, 0x29, 0x5d, 0x1d, 0x0b, 0x02, +0x01, 0x00, 0x3d, 0x7d, 0x0c, 0x01, 0x00, 0x2b, 0x3f, 0x0d, 0x03, 0x06, 0x5c, 0xc8, 0xcb, 0x1c, +0x12, 0x41, 0x00, 0x65, 0x45, 0x15, 0x41, 0x00, 0x79, 0x59, 0x16, 0x41, 0x00, 0x75, 0x55, 0x17, +0x41, 0x00, 0x69, 0x49, 0x18, 0x41, 0x00, 0x6f, 0x4f, 0x1a, 0x41, 0x00, 0x86, 0x8f, 0x1b, 0x03, +0x07, 0xcc, 0xca, 0xc9, 0x1e, 0x1e, 0x41, 0x00, 0x61, 0x41, 0x27, 0x41, 0x00, 0x9b, 0x9d, 0x28, +0x41, 0x00, 0x91, 0x92, 0x29, 0x01, 0x00, 0x7c, 0xf5, 0x2b, 0x01, 0x00, 0x27, 0x2a, 0x2e, 0x41, +0x00, 0x63, 0x43, 0x31, 0x41, 0x00, 0x6e, 0x4e, 0x32, 0x42, 0x03, 0x00, 0x00, 0xe6, 0x33, 0x02, +0x01, 0x00, 0x3b, 0x3c, 0x34, 0x02, 0x01, 0x00, 0x3a, 0x3e, 0x35, 0x03, 0x04, 0x2d, 0x5f, 0x00, +0x1f, 0x39, 0x00, 0x00, 0x20, 0x56, 0x01, 0x00, 0x3c, 0x3e, 0x00, 0x06, 0x02, 0x03, 0x00, 0x00, +0xd5, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x00, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, +0x6f, 0x95, 0x75, 0x97, 0x41, 0xb7, 0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, 0x20, 0x60, +0x7e, 0x07, 0x61, 0xc6, 0x6e, 0xa4, 0x6f, 0xe4, 0x41, 0xc7, 0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, +0x5e, 0x0b, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, +0x49, 0xd7, 0x4f, 0xe2, 0x55, 0xea, 0x20, 0x5e, 0xef, 0x0f, 0x61, 0xa0, 0x63, 0x87, 0x65, 0x82, +0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x79, 0xec, 0x41, 0xb5, 0x43, 0x80, 0x45, 0x90, 0x49, 0xd6, +0x4f, 0xe0, 0x55, 0xe9, 0x59, 0xed, 0x20, 0xef, 0xf9, 0x0c, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, +0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, 0x45, 0xd3, 0x49, 0xd8, 0x4f, 0x99, 0x55, 0x9a, +0x20, 0xf9, 0x00, 0x05, 0x01, 0x01, 0x00, 0xaf, 0x29, 0x01, 0x01, 0x00, 0x15, 0x00, 0x60, 0x06, +0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, 0x6f, 0x95, 0x75, 0x97, 0x20, 0x60, 0x7e, 0x03, 0x6e, 0xa4, +0x4e, 0xa5, 0x20, 0x7e, 0x5e, 0x06, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, +0x20, 0x5e, 0x27, 0x09, 0x61, 0xa0, 0x63, 0x87, 0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, +0x43, 0x80, 0x45, 0x90, 0x20, 0x27, 0x22, 0x0a, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, +0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0x22, 0x00 }; + +// Poland (101-key, prog.) +Bit8u layout_PL[261] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x09, 0x00, 0x00, 0x50, 0x4c, 0x2c, 0xc9, 0x01, 0x50, 0x4c, 0x08, +0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x03, 0x70, 0x00, 0x00, +0x00, 0x00, 0x00, 0x9c, 0x02, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0x03, 0xaf, 0x00, 0x00, +0x00, 0x00, 0x00, 0x16, 0x03, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9b, 0x02, 0xaf, 0x00, 0x00, +0x00, 0x00, 0x00, 0x5a, 0x03, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x18, 0xc3, 0x03, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x00, 0xe0, 0x00, 0x00, 0x12, +0x43, 0x03, 0x00, 0x00, 0xa9, 0xa8, 0x16, 0x42, 0x03, 0x00, 0x00, 0xaa, 0x1e, 0x43, 0x03, 0x00, +0x00, 0xa5, 0xa4, 0x1f, 0x43, 0x03, 0x00, 0x00, 0x98, 0x97, 0x26, 0x43, 0x03, 0x00, 0x00, 0x88, +0x9d, 0x2c, 0x43, 0x03, 0x00, 0x00, 0xbe, 0xbd, 0x2d, 0x43, 0x03, 0x00, 0x00, 0xab, 0x8d, 0x2e, +0x43, 0x03, 0x00, 0x00, 0x86, 0x8f, 0x31, 0x43, 0x03, 0x00, 0x00, 0xe4, 0xe3, 0x00, 0x12, 0x43, +0x03, 0x00, 0x00, 0x91, 0x90, 0x18, 0x43, 0x07, 0x00, 0x00, 0x00, 0xa3, 0x1e, 0x43, 0x03, 0x00, +0x00, 0x86, 0x8f, 0x1f, 0x43, 0x03, 0x00, 0x00, 0x9e, 0x98, 0x26, 0x43, 0x03, 0x00, 0x00, 0x92, +0x9c, 0x2c, 0x43, 0x03, 0x00, 0x00, 0xa7, 0xa1, 0x2d, 0x43, 0x03, 0x00, 0x00, 0xa6, 0xa0, 0x2e, +0x43, 0x03, 0x00, 0x00, 0x8d, 0x95, 0x31, 0x43, 0x03, 0x00, 0x00, 0xa4, 0xa5, 0x00, 0x16, 0x42, +0x03, 0x00, 0x00, 0xd5, 0x00 }; + +// Russian Federation (Standard) +Bit8u layout_RU[1130] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x09, 0x00, 0x00, 0x52, 0x55, 0x2c, 0xb9, 0x01, 0x52, 0x55, 0x0b, +0x02, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x03, 0xa2, 0x01, 0x00, +0x00, 0x00, 0x00, 0x28, 0x03, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x03, 0x8b, 0x02, 0x00, +0x00, 0x00, 0x00, 0x62, 0x03, 0xb6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x68, 0x03, 0x6d, 0x03, 0x00, +0x00, 0x00, 0x00, 0x68, 0x03, 0x99, 0x02, 0x00, 0x00, 0x00, 0x00, 0x57, 0x03, 0x53, 0x04, 0x00, +0x00, 0x00, 0x00, 0x57, 0x03, 0x81, 0x03, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x03, 0xc5, 0x00, 0x00, +0x00, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x03, 0x00, 0x00, +0x40, 0x04, 0x02, 0x03, 0x00, 0x00, 0x23, 0x05, 0x02, 0x03, 0x00, 0x00, 0xcf, 0x07, 0x02, 0x03, +0x00, 0x00, 0x5e, 0x08, 0x02, 0x03, 0x00, 0x00, 0x26, 0x09, 0x02, 0x03, 0x00, 0x00, 0x24, 0x1a, +0x02, 0x03, 0x00, 0x00, 0x5b, 0x1b, 0x02, 0x03, 0x00, 0x00, 0x5d, 0x2b, 0x02, 0x03, 0x00, 0x00, +0x7c, 0x33, 0x02, 0x03, 0x00, 0x00, 0x3c, 0x34, 0x02, 0x03, 0x00, 0x00, 0x3e, 0x35, 0x02, 0x03, +0x00, 0x00, 0x2f, 0x00, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x00, 0x03, 0x01, 0x01, 0x00, 0x22, +0x04, 0x01, 0x01, 0x00, 0xfc, 0x05, 0x02, 0x05, 0x00, 0x3b, 0xa0, 0x07, 0x01, 0x01, 0x00, 0x3a, +0x08, 0x01, 0x01, 0x00, 0x3f, 0x10, 0x41, 0x00, 0xa9, 0x89, 0x11, 0x41, 0x00, 0xe6, 0x96, 0x12, +0x41, 0x00, 0xe3, 0x93, 0x13, 0x41, 0x00, 0xaa, 0x8a, 0x14, 0x42, 0x00, 0xa5, 0x85, 0xfd, 0x15, +0x41, 0x00, 0xad, 0x8d, 0x16, 0x41, 0x00, 0xa3, 0x83, 0x17, 0x41, 0x00, 0xe8, 0x98, 0x18, 0x41, +0x00, 0xe9, 0x99, 0x19, 0x41, 0x00, 0xa7, 0x87, 0x1a, 0x41, 0x00, 0xe5, 0x95, 0x1b, 0x41, 0x00, +0xea, 0x9a, 0x1e, 0x41, 0x00, 0xe4, 0x94, 0x1f, 0x41, 0x00, 0xeb, 0x9b, 0x20, 0x41, 0x00, 0xa2, +0x82, 0x21, 0x41, 0x00, 0xa0, 0x80, 0x22, 0x41, 0x00, 0xaf, 0x8f, 0x23, 0xc1, 0x00, 0xe0, 0x00, +0x90, 0x23, 0x24, 0x41, 0x00, 0xae, 0x8e, 0x25, 0x41, 0x00, 0xab, 0x8b, 0x26, 0x41, 0x00, 0xa4, +0x84, 0x27, 0x41, 0x00, 0xa6, 0x86, 0x28, 0x41, 0x00, 0xed, 0x9d, 0x29, 0xc1, 0x00, 0xf1, 0x29, +0xf0, 0x00, 0x2a, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x78, 0x2b, 0x01, 0x01, 0x00, 0x2f, 0x2c, 0x41, +0x00, 0xef, 0x9f, 0x2d, 0x41, 0x00, 0xe7, 0x97, 0x2e, 0x41, 0x00, 0xe1, 0x91, 0x2f, 0x41, 0x00, +0xac, 0x8c, 0x30, 0x41, 0x00, 0xa8, 0x88, 0x31, 0x41, 0x00, 0xe2, 0x92, 0x32, 0x41, 0x00, 0xec, +0x9c, 0x33, 0x41, 0x00, 0xa1, 0x81, 0x34, 0x41, 0x00, 0xee, 0x9e, 0x35, 0x01, 0x00, 0x2e, 0x2c, +0x00, 0x05, 0x02, 0x07, 0x00, 0x00, 0xa0, 0x12, 0x42, 0x03, 0x00, 0x00, 0xfd, 0x36, 0x03, 0x0f, +0x00, 0x00, 0x00, 0x79, 0x00, 0x03, 0x01, 0x01, 0x00, 0x22, 0x04, 0x01, 0x01, 0x00, 0xfc, 0x05, +0x02, 0x01, 0x00, 0x3b, 0xfd, 0x07, 0x01, 0x01, 0x00, 0x3a, 0x08, 0x01, 0x01, 0x00, 0x3f, 0x10, +0x41, 0x00, 0xa9, 0x89, 0x11, 0x41, 0x00, 0xe6, 0x96, 0x12, 0x41, 0x00, 0xe3, 0x93, 0x13, 0x41, +0x00, 0xaa, 0x8a, 0x14, 0x41, 0x00, 0xa5, 0x85, 0x15, 0x41, 0x00, 0xad, 0x8d, 0x16, 0x41, 0x00, +0xa3, 0x83, 0x17, 0x41, 0x00, 0xe8, 0x98, 0x18, 0x41, 0x00, 0xe9, 0x99, 0x19, 0x41, 0x00, 0xa7, +0x87, 0x1a, 0x41, 0x00, 0xe5, 0x95, 0x1b, 0x41, 0x00, 0xea, 0x9a, 0x1e, 0x41, 0x00, 0xe4, 0x94, +0x1f, 0x41, 0x00, 0xeb, 0x9b, 0x20, 0x41, 0x00, 0xa2, 0x82, 0x21, 0x41, 0x00, 0xa0, 0x80, 0x22, +0x41, 0x00, 0xaf, 0x8f, 0x23, 0xc1, 0x00, 0xe0, 0x00, 0x90, 0x23, 0x24, 0x41, 0x00, 0xae, 0x8e, +0x25, 0x41, 0x00, 0xab, 0x8b, 0x26, 0x41, 0x00, 0xa4, 0x84, 0x27, 0x41, 0x00, 0xa6, 0x86, 0x28, +0x41, 0x00, 0xed, 0x9d, 0x29, 0xc1, 0x00, 0xf1, 0x29, 0xf0, 0x00, 0x2a, 0x03, 0x0f, 0x00, 0x00, +0x00, 0x7a, 0x2b, 0x01, 0x01, 0x00, 0x2f, 0x2c, 0x41, 0x00, 0xef, 0x9f, 0x2d, 0x41, 0x00, 0xe7, +0x97, 0x2e, 0x41, 0x00, 0xe1, 0x91, 0x2f, 0x41, 0x00, 0xac, 0x8c, 0x30, 0x41, 0x00, 0xa8, 0x88, +0x31, 0x41, 0x00, 0xe2, 0x92, 0x32, 0x41, 0x00, 0xec, 0x9c, 0x33, 0x41, 0x00, 0xa1, 0x81, 0x34, +0x41, 0x00, 0xee, 0x9e, 0x35, 0x01, 0x00, 0x2e, 0x2c, 0x00, 0x05, 0x02, 0x03, 0x00, 0x00, 0xfd, +0x36, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x03, 0x01, 0x01, 0x00, 0x22, 0x04, 0x01, 0x01, +0x00, 0xef, 0x05, 0x02, 0x05, 0x00, 0x3b, 0xa0, 0x07, 0x01, 0x01, 0x00, 0x3a, 0x08, 0x01, 0x01, +0x00, 0x3f, 0x10, 0x41, 0x00, 0xbd, 0xbe, 0x11, 0x41, 0x00, 0xa4, 0xa5, 0x12, 0x41, 0x00, 0xe7, +0xe8, 0x13, 0x41, 0x00, 0xc6, 0xc7, 0x14, 0x42, 0x00, 0xa8, 0xa9, 0xcf, 0x15, 0x41, 0x00, 0xd4, +0xd5, 0x16, 0x41, 0x00, 0xac, 0xad, 0x17, 0x41, 0x00, 0xf5, 0xf6, 0x18, 0x41, 0x00, 0xf9, 0xfa, +0x19, 0x41, 0x00, 0xf3, 0xf4, 0x1a, 0x41, 0x00, 0xb5, 0xb6, 0x1b, 0x41, 0x00, 0x9e, 0x9f, 0x1e, +0x41, 0x00, 0xaa, 0xab, 0x1f, 0x41, 0x00, 0xf1, 0xf2, 0x20, 0x41, 0x00, 0xeb, 0xec, 0x21, 0x41, +0x00, 0xa0, 0xa1, 0x22, 0x41, 0x00, 0xd8, 0xdd, 0x23, 0x41, 0x00, 0xe1, 0xe2, 0x24, 0x41, 0x00, +0xd6, 0xd7, 0x25, 0x41, 0x00, 0xd0, 0xd1, 0x26, 0x41, 0x00, 0xa6, 0xa7, 0x27, 0x41, 0x00, 0xe9, +0xea, 0x28, 0x41, 0x00, 0xf7, 0xf8, 0x29, 0x41, 0x00, 0x84, 0x85, 0x2a, 0x03, 0x0f, 0x00, 0x00, +0x00, 0x7c, 0x2b, 0x01, 0x01, 0x00, 0x2f, 0x2c, 0xc1, 0x00, 0xde, 0x2c, 0xe0, 0x00, 0x2d, 0x41, +0x00, 0xfb, 0xfc, 0x2e, 0x41, 0x00, 0xe3, 0xe4, 0x2f, 0x41, 0x00, 0xd2, 0xd3, 0x30, 0x41, 0x00, +0xb7, 0xb8, 0x31, 0x41, 0x00, 0xe5, 0xe6, 0x32, 0x41, 0x00, 0xed, 0xee, 0x33, 0x41, 0x00, 0xa2, +0xa3, 0x34, 0x41, 0x00, 0x9c, 0x9d, 0x35, 0x01, 0x00, 0x2e, 0x2c, 0x00, 0x05, 0x02, 0x07, 0x00, +0x00, 0xa0, 0x12, 0x42, 0x03, 0x00, 0x00, 0xcf, 0x36, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x7d, 0x00, +0x03, 0x01, 0x01, 0x00, 0x22, 0x04, 0x01, 0x01, 0x00, 0xef, 0x05, 0x01, 0x01, 0x00, 0x3b, 0x07, +0x01, 0x01, 0x00, 0x3a, 0x08, 0x01, 0x01, 0x00, 0x3f, 0x10, 0x41, 0x00, 0xbd, 0xbe, 0x11, 0x41, +0x00, 0xa4, 0xa5, 0x12, 0x41, 0x00, 0xe7, 0xe8, 0x13, 0x41, 0x00, 0xc6, 0xc7, 0x14, 0x41, 0x00, +0xa8, 0xa9, 0x15, 0x41, 0x00, 0xd4, 0xd5, 0x16, 0x41, 0x00, 0xac, 0xad, 0x17, 0x41, 0x00, 0xf5, +0xf6, 0x18, 0x41, 0x00, 0xf9, 0xfa, 0x19, 0x41, 0x00, 0xf3, 0xf4, 0x1a, 0x41, 0x00, 0xb5, 0xb6, +0x1b, 0x41, 0x00, 0x9e, 0x9f, 0x1e, 0x41, 0x00, 0xaa, 0xab, 0x1f, 0x41, 0x00, 0xf1, 0xf2, 0x20, +0x41, 0x00, 0xeb, 0xec, 0x21, 0x41, 0x00, 0xa0, 0xa1, 0x22, 0x41, 0x00, 0xd8, 0xdd, 0x23, 0x41, +0x00, 0xe1, 0xe2, 0x24, 0x41, 0x00, 0xd6, 0xd7, 0x25, 0x41, 0x00, 0xd0, 0xd1, 0x26, 0x41, 0x00, +0xa6, 0xa7, 0x27, 0x41, 0x00, 0xe9, 0xea, 0x28, 0x41, 0x00, 0xf7, 0xf8, 0x29, 0x41, 0x00, 0x84, +0x85, 0x2a, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x7e, 0x2b, 0x01, 0x01, 0x00, 0x2f, 0x2c, 0xc1, 0x00, +0xde, 0x2c, 0xe0, 0x00, 0x2d, 0x41, 0x00, 0xfb, 0xfc, 0x2e, 0x41, 0x00, 0xe3, 0xe4, 0x2f, 0x41, +0x00, 0xd2, 0xd3, 0x30, 0x41, 0x00, 0xb7, 0xb8, 0x31, 0x41, 0x00, 0xe5, 0xe6, 0x32, 0x41, 0x00, +0xed, 0xee, 0x33, 0x41, 0x00, 0xa2, 0xa3, 0x34, 0x41, 0x00, 0x9c, 0x9d, 0x35, 0x01, 0x00, 0x2e, +0x2c, 0x00, 0x36, 0x03, 0x0f, 0x00, 0x00, 0x00, 0x7f, 0x00 }; + +// Slovakia +Bit8u layout_SK[993] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x09, 0x00, 0x00, 0x53, 0x4b, 0x2c, 0xf5, 0x00, 0x53, 0x4b, 0x05, +0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x03, 0x35, 0x01, 0xad, +0x01, 0x00, 0x00, 0x5a, 0x03, 0x44, 0x03, 0x4b, 0x03, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x4b, +0x03, 0x00, 0x00, 0x63, 0x03, 0x6e, 0x02, 0xd7, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x04, 0x2b, 0x31, +0xc8, 0x03, 0x01, 0x01, 0xa0, 0x32, 0x04, 0x03, 0x05, 0xa0, 0x33, 0xc9, 0x1e, 0x05, 0x01, 0x01, +0xa0, 0x34, 0x06, 0x02, 0x05, 0xa0, 0x35, 0xca, 0x07, 0x01, 0x01, 0xa0, 0x36, 0x08, 0x02, 0x04, +0xec, 0x37, 0xcb, 0x09, 0x02, 0x00, 0xa0, 0x38, 0xfa, 0x0a, 0x02, 0x04, 0xa1, 0x39, 0xcc, 0x0b, +0x01, 0x00, 0x82, 0x30, 0x0c, 0x02, 0x04, 0x3d, 0x25, 0xcd, 0x0d, 0x02, 0x07, 0xcc, 0xa0, 0xce, +0x10, 0x42, 0x03, 0x00, 0x00, 0x5c, 0x11, 0x42, 0x03, 0x00, 0x00, 0x7c, 0x12, 0x41, 0x00, 0x65, +0x45, 0x15, 0x43, 0x04, 0x7a, 0x5a, 0x00, 0x1a, 0x16, 0x41, 0x00, 0x75, 0x55, 0x17, 0x41, 0x00, +0x69, 0x49, 0x18, 0x41, 0x00, 0x6f, 0x4f, 0x19, 0x42, 0x03, 0x00, 0x00, 0x27, 0x1a, 0x02, 0x00, +0xa3, 0x2f, 0xf6, 0x1b, 0x02, 0x00, 0x84, 0x28, 0x9e, 0x1e, 0x42, 0x00, 0x61, 0x41, 0x3c, 0x21, +0x42, 0x03, 0x00, 0x00, 0x5b, 0x22, 0x42, 0x03, 0x00, 0x00, 0x5d, 0x27, 0x02, 0x00, 0x93, 0x22, +0x24, 0x28, 0x02, 0x00, 0xf5, 0x21, 0xe1, 0x29, 0x01, 0x02, 0x3b, 0xca, 0x2b, 0x02, 0x01, 0xa0, +0x29, 0xcf, 0x2c, 0x43, 0x00, 0x79, 0x59, 0x3e, 0x19, 0x2d, 0x42, 0x03, 0x00, 0x00, 0x23, 0x2e, +0x42, 0x00, 0x63, 0x43, 0x26, 0x2f, 0x42, 0x03, 0x00, 0x00, 0x40, 0x30, 0x42, 0x03, 0x00, 0x00, +0x7b, 0x31, 0x42, 0x00, 0x6e, 0x4e, 0x7d, 0x33, 0x01, 0x01, 0x00, 0x3f, 0x34, 0x02, 0x01, 0x00, +0x3a, 0x2a, 0x35, 0x03, 0x04, 0x2d, 0x5f, 0x00, 0x1f, 0x39, 0x00, 0x00, 0x20, 0x56, 0x02, 0x00, +0x26, 0x2a, 0x3c, 0x00, 0x02, 0x02, 0x03, 0x00, 0x00, 0x7e, 0x03, 0x02, 0x06, 0x96, 0x00, 0xc8, +0x04, 0x00, 0x00, 0xe7, 0x05, 0x02, 0x06, 0x9f, 0x00, 0xca, 0x06, 0x02, 0x06, 0x9c, 0x00, 0xcb, +0x07, 0x02, 0x06, 0xa7, 0x00, 0xcc, 0x08, 0x02, 0x03, 0x00, 0x00, 0x60, 0x09, 0x02, 0x07, 0x00, +0x00, 0xcd, 0x0a, 0x02, 0x07, 0x00, 0x00, 0xce, 0x0b, 0x02, 0x07, 0x00, 0x00, 0xcf, 0x0c, 0x02, +0x07, 0x00, 0x00, 0xd0, 0x0d, 0x02, 0x07, 0xce, 0xc8, 0xd1, 0x12, 0x42, 0x03, 0x00, 0x00, 0xaa, +0x13, 0x41, 0x00, 0x72, 0x52, 0x14, 0x41, 0x00, 0x74, 0x54, 0x1f, 0x42, 0x00, 0x73, 0x53, 0xd0, +0x20, 0x42, 0x00, 0x64, 0x44, 0xd1, 0x25, 0x42, 0x03, 0x00, 0x00, 0x88, 0x26, 0x42, 0x00, 0x6c, +0x4c, 0x9d, 0x29, 0x01, 0x03, 0x00, 0xcb, 0x2b, 0x00, 0x00, 0xe5, 0x00, 0xf3, 0x13, 0x63, 0x9f, +0x64, 0xd4, 0x65, 0xd8, 0x6c, 0x96, 0x6e, 0xe5, 0x72, 0xfd, 0x73, 0xe7, 0x74, 0x9c, 0x7a, 0xa7, +0x43, 0xac, 0x44, 0xd2, 0x45, 0xb7, 0x4c, 0x95, 0x4e, 0xd5, 0x52, 0xfc, 0x53, 0xe6, 0x54, 0x9b, +0x5a, 0xa6, 0x20, 0xf3, 0x5e, 0x07, 0x61, 0x83, 0x69, 0x8c, 0x6f, 0x93, 0x41, 0xb6, 0x49, 0xd7, +0x4f, 0xe2, 0x20, 0x5e, 0xf4, 0x03, 0x61, 0xc7, 0x41, 0xc6, 0x20, 0xf4, 0xf8, 0x03, 0x75, 0x85, +0x55, 0xde, 0x20, 0xf8, 0xf2, 0x05, 0x61, 0xa5, 0x65, 0xa9, 0x41, 0xa4, 0x45, 0xa8, 0x20, 0xf2, +0xfa, 0x03, 0x7a, 0xbe, 0x5a, 0xbd, 0x20, 0xfa, 0xef, 0x19, 0x61, 0xa0, 0x63, 0x86, 0x65, 0x82, +0x69, 0xa1, 0x6c, 0x92, 0x6e, 0xe4, 0x6f, 0xa2, 0x72, 0xea, 0x73, 0x98, 0x75, 0xa3, 0x79, 0xec, +0x7a, 0xab, 0x41, 0xb5, 0x43, 0x8f, 0x45, 0x90, 0x49, 0xd6, 0x4c, 0x91, 0x4e, 0xe3, 0x4f, 0xe0, +0x52, 0xe8, 0x53, 0x97, 0x55, 0xe9, 0x59, 0xed, 0x5a, 0x8d, 0x20, 0xef, 0xf1, 0x05, 0x6f, 0x8b, +0x75, 0xfb, 0x4f, 0x8a, 0x55, 0xeb, 0x20, 0xf1, 0xf9, 0x09, 0x61, 0x84, 0x65, 0x89, 0x6f, 0x94, +0x75, 0x81, 0x41, 0x8e, 0x45, 0xd3, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0xf9, 0xf7, 0x07, 0x63, 0x87, +0x73, 0xad, 0x74, 0xee, 0x43, 0x80, 0x53, 0xb8, 0x54, 0xdd, 0x20, 0xf7, 0x00, 0x02, 0x02, 0x03, +0x00, 0x00, 0x7e, 0x03, 0x02, 0x06, 0x8c, 0x00, 0xc8, 0x04, 0x00, 0x00, 0xa8, 0x05, 0x00, 0x00, +0x87, 0x06, 0x00, 0x00, 0x9f, 0x07, 0x00, 0x00, 0x91, 0x08, 0x02, 0x02, 0x98, 0x00, 0x60, 0x09, +0x02, 0x07, 0x00, 0x00, 0xa0, 0x0a, 0x02, 0x07, 0x00, 0x00, 0xcb, 0x0c, 0x02, 0x07, 0x00, 0x00, +0xcc, 0x0d, 0x02, 0x07, 0xcb, 0xc8, 0xa0, 0x13, 0x41, 0x00, 0x72, 0x52, 0x14, 0x41, 0x00, 0x74, +0x54, 0x1b, 0x02, 0x07, 0x00, 0x00, 0xa0, 0x1f, 0x41, 0x00, 0x73, 0x53, 0x20, 0x41, 0x00, 0x64, +0x44, 0x26, 0x41, 0x00, 0x6c, 0x4c, 0x28, 0x00, 0x00, 0xad, 0x29, 0x01, 0x03, 0x00, 0xca, 0x2b, +0x02, 0x06, 0xa4, 0x00, 0xa0, 0x00, 0x76, 0x13, 0x63, 0x87, 0x64, 0x83, 0x65, 0x88, 0x6c, 0x8c, +0x6e, 0xa4, 0x72, 0xa9, 0x73, 0xa8, 0x74, 0x9f, 0x7a, 0x91, 0x43, 0x80, 0x44, 0x85, 0x45, 0x89, +0x4c, 0x9c, 0x4e, 0xa5, 0x52, 0x9e, 0x53, 0x9b, 0x54, 0x86, 0x5a, 0x92, 0x20, 0x76, 0x5e, 0x03, +0x6f, 0x93, 0x4f, 0xa7, 0x20, 0x5e, 0xf8, 0x03, 0x75, 0x96, 0x55, 0xa6, 0x20, 0xf8, 0x27, 0x11, +0x61, 0xa0, 0x65, 0x82, 0x69, 0xa1, 0x6c, 0x8d, 0x6f, 0xa2, 0x72, 0xaa, 0x75, 0xa3, 0x79, 0x98, +0x41, 0x8f, 0x45, 0x90, 0x49, 0x8b, 0x4c, 0x8a, 0x4f, 0x95, 0x52, 0xab, 0x55, 0x97, 0x59, 0x9d, +0x20, 0x27, 0x22, 0x07, 0x61, 0x84, 0x6f, 0x94, 0x75, 0x81, 0x41, 0x8e, 0x4f, 0x99, 0x55, 0x9a, +0x20, 0x22, 0x00, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x00, 0x7e, 0x07, 0x61, 0xc6, 0x6e, 0xa4, +0x6f, 0xe4, 0x41, 0xc7, 0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, 0x5e, 0x0b, 0x61, 0x83, 0x65, 0x88, +0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, 0x49, 0xd7, 0x4f, 0xe2, 0x55, 0xea, +0x20, 0x5e, 0xf8, 0x03, 0x61, 0x86, 0x41, 0x8f, 0x20, 0xf8, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, +0x69, 0x8d, 0x6f, 0x95, 0x75, 0x97, 0x41, 0xb7, 0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, +0x20, 0x60, 0x27, 0x0d, 0x61, 0xa0, 0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x79, 0xec, +0x41, 0xb5, 0x45, 0x90, 0x49, 0xd6, 0x4f, 0xe0, 0x55, 0xe9, 0x59, 0xed, 0x20, 0xef, 0xf9, 0x0c, +0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, 0x45, 0xd3, +0x49, 0xd8, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0xf9, 0xf7, 0x03, 0x63, 0x87, 0x43, 0x80, 0x20, 0xf7, +0x00 }; + +// Spain +Bit8u layout_SP[471] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x1d, 0x00, 0x00, 0x53, 0x50, 0x2c, 0x00, 0x00, 0x45, 0x53, 0x2c, +0xac, 0x00, 0x53, 0x50, 0x2c, 0xac, 0x00, 0x45, 0x53, 0x2c, 0xad, 0x00, 0x53, 0x50, 0x2c, 0xad, +0x00, 0x45, 0x53, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, +0x03, 0x30, 0x01, 0x3d, 0x01, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x3d, 0x01, 0x00, 0x00, 0xb5, +0x01, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x03, 0x00, 0x00, 0x7c, 0x03, 0x02, 0x01, +0x00, 0x22, 0x40, 0x04, 0x02, 0x01, 0x00, 0xfa, 0x23, 0x05, 0x02, 0x07, 0x00, 0x00, 0xc9, 0x07, +0x02, 0x01, 0x00, 0x26, 0xaa, 0x08, 0x01, 0x01, 0x00, 0x2f, 0x09, 0x01, 0x01, 0x00, 0x28, 0x0a, +0x01, 0x01, 0x00, 0x29, 0x0b, 0x01, 0x01, 0x00, 0x3d, 0x0c, 0x01, 0x00, 0x27, 0x3f, 0x0d, 0x01, +0x00, 0xad, 0xa8, 0x12, 0x41, 0x00, 0x65, 0x45, 0x15, 0x41, 0x00, 0x79, 0x59, 0x16, 0x41, 0x00, +0x75, 0x55, 0x17, 0x41, 0x00, 0x69, 0x49, 0x18, 0x41, 0x00, 0x6f, 0x4f, 0x1a, 0x02, 0x03, 0xc8, +0xca, 0x5b, 0x1b, 0x02, 0x00, 0x2b, 0x2a, 0x5d, 0x1e, 0x41, 0x00, 0x61, 0x41, 0x27, 0x42, 0x00, +0xa4, 0xa5, 0x7e, 0x28, 0x02, 0x03, 0xcb, 0xcc, 0x7b, 0x29, 0x03, 0x00, 0xa7, 0xa6, 0x5c, 0x1c, +0x2b, 0x42, 0x00, 0x87, 0x80, 0x7d, 0x31, 0x41, 0x00, 0x6e, 0x4e, 0x33, 0x02, 0x01, 0x00, 0x3b, +0x3c, 0x34, 0x02, 0x01, 0x00, 0x3a, 0x3e, 0x35, 0x03, 0x00, 0x2d, 0x5f, 0x5c, 0x1f, 0x39, 0x00, +0x00, 0x20, 0x56, 0x01, 0x00, 0x3c, 0x3e, 0x00, 0x60, 0x06, 0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, +0x6f, 0x95, 0x75, 0x97, 0x20, 0x60, 0x7e, 0x03, 0x6e, 0xa4, 0x4e, 0xa5, 0x20, 0x7e, 0x5e, 0x06, +0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x20, 0x5e, 0x27, 0x07, 0x61, 0xa0, +0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x45, 0x90, 0x20, 0x27, 0x22, 0x0a, 0x61, 0x84, +0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, 0x4f, 0x99, 0x55, 0x9a, +0x20, 0x22, 0x00, 0x06, 0x02, 0x03, 0x00, 0x00, 0xd5, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x00, +0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, 0x6f, 0x95, 0x75, 0x97, 0x41, 0xb7, 0x45, 0xd4, +0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, 0x20, 0x60, 0x7e, 0x07, 0x61, 0xc6, 0x6e, 0xa4, 0x6f, 0xe4, +0x41, 0xc7, 0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, 0x5e, 0x0b, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, +0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, 0x49, 0xd7, 0x4f, 0xe2, 0x55, 0xea, 0x20, 0x5e, +0xef, 0x0d, 0x61, 0xa0, 0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x79, 0xec, 0x41, 0xb5, +0x45, 0x90, 0x49, 0xd6, 0x4f, 0xe0, 0x55, 0xe9, 0x59, 0xed, 0x20, 0xef, 0xf9, 0x0c, 0x61, 0x84, +0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, 0x8e, 0x45, 0xd3, 0x49, 0xd8, +0x4f, 0x99, 0x55, 0x9a, 0x20, 0xf9, 0x00 }; + +// Finland +Bit8u layout_SU[683] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x1d, 0x00, 0x00, 0x53, 0x55, 0x2c, 0x00, 0x00, 0x53, 0x56, 0x2c, +0x00, 0x00, 0x46, 0x49, 0x2c, 0x99, 0x00, 0x53, 0x55, 0x2c, 0x99, 0x00, 0x53, 0x56, 0x2c, 0x99, +0x00, 0x46, 0x49, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, +0x03, 0x55, 0x01, 0x62, 0x01, 0x00, 0x00, 0x5b, 0x03, 0xdd, 0x01, 0xff, 0x01, 0x00, 0x00, 0x52, +0x03, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0xb5, 0x01, 0xfc, 0x00, 0x06, 0x01, 0x00, 0x00, 0x00, +0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +0x02, 0x01, 0x00, 0x22, 0x40, 0x04, 0x02, 0x03, 0x00, 0x00, 0x9c, 0x05, 0x02, 0x01, 0x00, 0xcf, +0x24, 0x07, 0x01, 0x01, 0x00, 0x26, 0x08, 0x02, 0x01, 0x00, 0x2f, 0x7b, 0x09, 0x03, 0x01, 0x00, +0x28, 0x5b, 0x1b, 0x0a, 0x03, 0x01, 0x00, 0x29, 0x5d, 0x1d, 0x0b, 0x02, 0x01, 0x00, 0x3d, 0x7d, +0x0c, 0x03, 0x00, 0x2b, 0x3f, 0x5c, 0x1c, 0x0d, 0x02, 0x03, 0xcb, 0xc8, 0x7c, 0x10, 0x42, 0x03, +0x00, 0x00, 0x40, 0x12, 0x41, 0x00, 0x65, 0x45, 0x15, 0x41, 0x00, 0x79, 0x59, 0x16, 0x41, 0x00, +0x75, 0x55, 0x17, 0x41, 0x00, 0x69, 0x49, 0x18, 0x41, 0x00, 0x6f, 0x4f, 0x1a, 0x41, 0x00, 0x86, +0x8f, 0x1b, 0x03, 0x07, 0xcc, 0xca, 0xc9, 0x1e, 0x1e, 0x41, 0x00, 0x61, 0x41, 0x27, 0x41, 0x00, +0x94, 0x99, 0x28, 0x41, 0x00, 0x84, 0x8e, 0x29, 0x01, 0x00, 0xf5, 0xab, 0x2b, 0x01, 0x00, 0x27, +0x2a, 0x2e, 0x41, 0x00, 0x63, 0x43, 0x31, 0x41, 0x00, 0x6e, 0x4e, 0x32, 0x42, 0x03, 0x00, 0x00, +0xe6, 0x33, 0x02, 0x01, 0x00, 0x3b, 0x3c, 0x34, 0x02, 0x01, 0x00, 0x3a, 0x3e, 0x35, 0x03, 0x04, +0x2d, 0x5f, 0x00, 0x1f, 0x39, 0x00, 0x00, 0x20, 0x56, 0x02, 0x00, 0x3c, 0x3e, 0x7c, 0x00, 0x05, +0x01, 0x03, 0x00, 0xa0, 0x29, 0x00, 0x00, 0x15, 0x00, 0x60, 0x06, 0x61, 0x85, 0x65, 0x8a, 0x69, +0x8d, 0x6f, 0x95, 0x75, 0x97, 0x20, 0x60, 0x7e, 0x03, 0x6e, 0xa4, 0x4e, 0xa5, 0x20, 0x7e, 0x5e, +0x06, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x20, 0x5e, 0x27, 0x09, 0x61, +0xa0, 0x63, 0x87, 0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x43, 0x80, 0x45, 0x90, 0x20, +0x27, 0x22, 0x0a, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, +0x8e, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0x22, 0x00, 0x06, 0x02, 0x03, 0x00, 0x00, 0xd5, 0x12, 0x42, +0x03, 0x00, 0x00, 0xd5, 0x00, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, 0x6f, 0x95, 0x75, +0x97, 0x41, 0xb7, 0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, 0x20, 0x60, 0x7e, 0x07, 0x61, +0xc6, 0x6e, 0xa4, 0x6f, 0xe4, 0x41, 0xc7, 0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, 0x5e, 0x0b, 0x61, +0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, 0x49, 0xd7, 0x4f, +0xe2, 0x55, 0xea, 0x20, 0x5e, 0xef, 0x0f, 0x61, 0xa0, 0x63, 0x87, 0x65, 0x82, 0x69, 0xa1, 0x6f, +0xa2, 0x75, 0xa3, 0x79, 0xec, 0x41, 0xb5, 0x43, 0x80, 0x45, 0x90, 0x49, 0xd6, 0x4f, 0xe0, 0x55, +0xe9, 0x59, 0xed, 0x20, 0xef, 0xf9, 0x0c, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, +0x81, 0x79, 0x98, 0x41, 0x8e, 0x45, 0xd3, 0x49, 0xd8, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0xf9, 0x00, +0x06, 0x02, 0x03, 0x00, 0x00, 0xd5, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x1f, 0x41, 0x00, 0x73, +0x53, 0x28, 0x42, 0x07, 0x00, 0x00, 0xcd, 0x29, 0x01, 0x03, 0x00, 0xa0, 0x2c, 0x41, 0x00, 0x7a, +0x5a, 0x00, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, 0x6f, 0x95, 0x75, 0x97, 0x41, 0xb7, +0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, 0x20, 0x60, 0x7e, 0x07, 0x61, 0xc6, 0x6e, 0xa4, +0x6f, 0xe4, 0x41, 0xc7, 0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, 0x5e, 0x0b, 0x61, 0x83, 0x65, 0x88, +0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, 0x49, 0xd7, 0x4f, 0xe2, 0x55, 0xea, +0x20, 0x5e, 0x27, 0x0f, 0x61, 0xa0, 0x63, 0x87, 0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, +0x79, 0xec, 0x41, 0xb5, 0x43, 0x80, 0x45, 0x90, 0x49, 0xd6, 0x4f, 0xe0, 0x55, 0xe9, 0x59, 0xed, +0x20, 0x27, 0x22, 0x0d, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, +0x41, 0x8e, 0x45, 0xd3, 0x49, 0xd8, 0x4f, 0x99, 0x55, 0x9a, 0x59, 0xf3, 0x20, 0x22, 0x76, 0x05, +0x73, 0xf9, 0x7a, 0xf7, 0x53, 0xdd, 0x5a, 0xef, 0x20, 0x76, 0x00 }; + +// Sweden +Bit8u layout_SV[683] = { +0x4b, 0x4c, 0x46, 0x00, 0x01, 0x1d, 0x00, 0x00, 0x53, 0x55, 0x2c, 0x00, 0x00, 0x53, 0x56, 0x2c, +0x00, 0x00, 0x46, 0x49, 0x2c, 0x99, 0x00, 0x53, 0x55, 0x2c, 0x99, 0x00, 0x53, 0x56, 0x2c, 0x99, +0x00, 0x46, 0x49, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a, +0x03, 0x55, 0x01, 0x62, 0x01, 0x00, 0x00, 0x5b, 0x03, 0xdd, 0x01, 0xff, 0x01, 0x00, 0x00, 0x52, +0x03, 0x00, 0x00, 0x62, 0x01, 0x00, 0x00, 0xb5, 0x01, 0xfc, 0x00, 0x06, 0x01, 0x00, 0x00, 0x00, +0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, +0x02, 0x01, 0x00, 0x22, 0x40, 0x04, 0x02, 0x03, 0x00, 0x00, 0x9c, 0x05, 0x02, 0x01, 0x00, 0xcf, +0x24, 0x07, 0x01, 0x01, 0x00, 0x26, 0x08, 0x02, 0x01, 0x00, 0x2f, 0x7b, 0x09, 0x03, 0x01, 0x00, +0x28, 0x5b, 0x1b, 0x0a, 0x03, 0x01, 0x00, 0x29, 0x5d, 0x1d, 0x0b, 0x02, 0x01, 0x00, 0x3d, 0x7d, +0x0c, 0x03, 0x00, 0x2b, 0x3f, 0x5c, 0x1c, 0x0d, 0x02, 0x03, 0xcb, 0xc8, 0x7c, 0x10, 0x42, 0x03, +0x00, 0x00, 0x40, 0x12, 0x41, 0x00, 0x65, 0x45, 0x15, 0x41, 0x00, 0x79, 0x59, 0x16, 0x41, 0x00, +0x75, 0x55, 0x17, 0x41, 0x00, 0x69, 0x49, 0x18, 0x41, 0x00, 0x6f, 0x4f, 0x1a, 0x41, 0x00, 0x86, +0x8f, 0x1b, 0x03, 0x07, 0xcc, 0xca, 0xc9, 0x1e, 0x1e, 0x41, 0x00, 0x61, 0x41, 0x27, 0x41, 0x00, +0x94, 0x99, 0x28, 0x41, 0x00, 0x84, 0x8e, 0x29, 0x01, 0x00, 0xf5, 0xab, 0x2b, 0x01, 0x00, 0x27, +0x2a, 0x2e, 0x41, 0x00, 0x63, 0x43, 0x31, 0x41, 0x00, 0x6e, 0x4e, 0x32, 0x42, 0x03, 0x00, 0x00, +0xe6, 0x33, 0x02, 0x01, 0x00, 0x3b, 0x3c, 0x34, 0x02, 0x01, 0x00, 0x3a, 0x3e, 0x35, 0x03, 0x04, +0x2d, 0x5f, 0x00, 0x1f, 0x39, 0x00, 0x00, 0x20, 0x56, 0x02, 0x00, 0x3c, 0x3e, 0x7c, 0x00, 0x05, +0x01, 0x03, 0x00, 0xa0, 0x29, 0x00, 0x00, 0x15, 0x00, 0x60, 0x06, 0x61, 0x85, 0x65, 0x8a, 0x69, +0x8d, 0x6f, 0x95, 0x75, 0x97, 0x20, 0x60, 0x7e, 0x03, 0x6e, 0xa4, 0x4e, 0xa5, 0x20, 0x7e, 0x5e, +0x06, 0x61, 0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x20, 0x5e, 0x27, 0x09, 0x61, +0xa0, 0x63, 0x87, 0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, 0x43, 0x80, 0x45, 0x90, 0x20, +0x27, 0x22, 0x0a, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, 0x41, +0x8e, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0x22, 0x00, 0x06, 0x02, 0x03, 0x00, 0x00, 0xd5, 0x12, 0x42, +0x03, 0x00, 0x00, 0xd5, 0x00, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, 0x6f, 0x95, 0x75, +0x97, 0x41, 0xb7, 0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, 0x20, 0x60, 0x7e, 0x07, 0x61, +0xc6, 0x6e, 0xa4, 0x6f, 0xe4, 0x41, 0xc7, 0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, 0x5e, 0x0b, 0x61, +0x83, 0x65, 0x88, 0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, 0x49, 0xd7, 0x4f, +0xe2, 0x55, 0xea, 0x20, 0x5e, 0xef, 0x0f, 0x61, 0xa0, 0x63, 0x87, 0x65, 0x82, 0x69, 0xa1, 0x6f, +0xa2, 0x75, 0xa3, 0x79, 0xec, 0x41, 0xb5, 0x43, 0x80, 0x45, 0x90, 0x49, 0xd6, 0x4f, 0xe0, 0x55, +0xe9, 0x59, 0xed, 0x20, 0xef, 0xf9, 0x0c, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, +0x81, 0x79, 0x98, 0x41, 0x8e, 0x45, 0xd3, 0x49, 0xd8, 0x4f, 0x99, 0x55, 0x9a, 0x20, 0xf9, 0x00, +0x06, 0x02, 0x03, 0x00, 0x00, 0xd5, 0x12, 0x42, 0x03, 0x00, 0x00, 0xd5, 0x1f, 0x41, 0x00, 0x73, +0x53, 0x28, 0x42, 0x07, 0x00, 0x00, 0xcd, 0x29, 0x01, 0x03, 0x00, 0xa0, 0x2c, 0x41, 0x00, 0x7a, +0x5a, 0x00, 0x60, 0x0b, 0x61, 0x85, 0x65, 0x8a, 0x69, 0x8d, 0x6f, 0x95, 0x75, 0x97, 0x41, 0xb7, +0x45, 0xd4, 0x49, 0xde, 0x4f, 0xe3, 0x55, 0xeb, 0x20, 0x60, 0x7e, 0x07, 0x61, 0xc6, 0x6e, 0xa4, +0x6f, 0xe4, 0x41, 0xc7, 0x4e, 0xa5, 0x4f, 0xe5, 0x20, 0x7e, 0x5e, 0x0b, 0x61, 0x83, 0x65, 0x88, +0x69, 0x8c, 0x6f, 0x93, 0x75, 0x96, 0x41, 0xb6, 0x45, 0xd2, 0x49, 0xd7, 0x4f, 0xe2, 0x55, 0xea, +0x20, 0x5e, 0x27, 0x0f, 0x61, 0xa0, 0x63, 0x87, 0x65, 0x82, 0x69, 0xa1, 0x6f, 0xa2, 0x75, 0xa3, +0x79, 0xec, 0x41, 0xb5, 0x43, 0x80, 0x45, 0x90, 0x49, 0xd6, 0x4f, 0xe0, 0x55, 0xe9, 0x59, 0xed, +0x20, 0x27, 0x22, 0x0d, 0x61, 0x84, 0x65, 0x89, 0x69, 0x8b, 0x6f, 0x94, 0x75, 0x81, 0x79, 0x98, +0x41, 0x8e, 0x45, 0xd3, 0x49, 0xd8, 0x4f, 0x99, 0x55, 0x9a, 0x59, 0xf3, 0x20, 0x22, 0x76, 0x05, +0x73, 0xf9, 0x7a, 0xf7, 0x53, 0xdd, 0x5a, 0xef, 0x20, 0x76, 0x00 }; diff --git a/src/dos/dos_programs.cpp b/src/dos/dos_programs.cpp index 6a43bf0b..c6dd2146 100644 --- a/src/dos/dos_programs.cpp +++ b/src/dos/dos_programs.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: dos_programs.cpp,v 1.62 2006-06-22 13:15:07 qbix79 Exp $ */ +/* $Id: dos_programs.cpp,v 1.63 2006-10-27 13:37:14 c2woody Exp $ */ #include #include @@ -882,6 +882,70 @@ void IMGMOUNT_ProgramStart(Program * * make) { } +Bitu DOS_SwitchKeyboardLayout(const char* new_layout); +Bitu DOS_LoadKeyboardLayout(const char * layoutname, Bit32s codepage, const char * codepagefile); + +class KEYB : public Program { +public: + void Run(void); +}; + +void KEYB::Run(void) { + if (cmd->FindCommand(1,temp_line)) { + if (cmd->FindString("?",temp_line,false)) { + WriteOut(MSG_Get("PROGRAM_KEYB_SHOWHELP")); + } else { + /* first parameter is layout ID */ + Bitu keyb_error=0; + std::string cp_string; + if (cmd->FindCommand(2,cp_string)) { + /* second parameter is codepage number */ + Bit32s par_cp=atoi(cp_string.c_str()); + char cp_file_name[256]; + if (cmd->FindCommand(3,cp_string)) { + /* third parameter is codepage file */ + strcpy(cp_file_name, cp_string.c_str()); + } else { + /* no codepage file specified, use automatic selection */ + strcpy(cp_file_name, "auto"); + } + + keyb_error=DOS_LoadKeyboardLayout(temp_line.c_str(), par_cp, cp_file_name); + } else keyb_error=DOS_SwitchKeyboardLayout(temp_line.c_str()); + switch (keyb_error) { + case KEYB_NOERROR: + WriteOut(MSG_Get("PROGRAM_KEYB_NOERROR"),temp_line.c_str(),dos.loaded_codepage); + break; + case KEYB_FILENOTFOUND: + WriteOut(MSG_Get("PROGRAM_KEYB_FILENOTFOUND"),temp_line.c_str()); + WriteOut(MSG_Get("PROGRAM_KEYB_SHOWHELP")); + break; + case KEYB_INVALIDFILE: + WriteOut(MSG_Get("PROGRAM_KEYB_INVALIDFILE"),temp_line.c_str()); + break; + case KEYB_LAYOUTNOTFOUND: + WriteOut(MSG_Get("PROGRAM_KEYB_LAYOUTNOTFOUND"),temp_line.c_str(),dos.loaded_codepage); + break; + case KEYB_INVALIDCPFILE: + WriteOut(MSG_Get("PROGRAM_KEYB_INVCPFILE"),temp_line.c_str()); + WriteOut(MSG_Get("PROGRAM_KEYB_SHOWHELP")); + break; + default: + LOG(LOG_DOSMISC,LOG_ERROR)("KEYB:Invalid returncode %x",keyb_error); + break; + } + } + } else { + /* no parameter in the command line, just output codepage info */ + WriteOut(MSG_Get("PROGRAM_KEYB_INFO"),dos.loaded_codepage); + } +}; + +static void KEYB_ProgramStart(Program * * make) { + *make=new KEYB; +} + + void DOS_SetupPrograms(void) { /*Add Messages */ @@ -1048,6 +1112,20 @@ void DOS_SetupPrograms(void) { MSG_Add("PROGRAM_IMGMOUNT_CANT_CREATE","Can't create drive from file.\n"); MSG_Add("PROGRAM_IMGMOUNT_MOUNT_NUMBER","Drive number %d mounted as %s\n"); + MSG_Add("PROGRAM_KEYB_INFO","Codepage %i has been loaded\n"); + MSG_Add("PROGRAM_KEYB_SHOWHELP", + "\033[32;1mKEYB\033[0m [keyboard layout ID[ codepage number[ codepage file]]]\n\n" + "Some examples:\n" + " \033[32;1mKEYB\033[0m: Display currently loaded codepage.\n" + " \033[32;1mKEYB\033[0m sp: Load the spanish (SP) layout, use an appropriate codepage.\n" + " \033[32;1mKEYB\033[0m sp 850: Load the spanish (SP) layout, use codepage 850.\n" + " \033[32;1mKEYB\033[0m sp 850 mycp.cpi: Same as above, but use file mycp.cpi.\n"); + MSG_Add("PROGRAM_KEYB_NOERROR","Keyboard layout %s loaded for codepage %i\n"); + MSG_Add("PROGRAM_KEYB_FILENOTFOUND","Keyboard file %s not found\n\n"); + MSG_Add("PROGRAM_KEYB_INVALIDFILE","Keyboard file %s invalid\n"); + MSG_Add("PROGRAM_KEYB_LAYOUTNOTFOUND","No layout in %s for codepage %i\n"); + MSG_Add("PROGRAM_KEYB_INVCPFILE","None or invalid codepage file for layout %s\n\n"); + /*regular setup*/ PROGRAMS_MakeFile("MOUNT.COM",MOUNT_ProgramStart); PROGRAMS_MakeFile("MEM.COM",MEM_ProgramStart); @@ -1056,4 +1134,5 @@ void DOS_SetupPrograms(void) { PROGRAMS_MakeFile("INTRO.COM",INTRO_ProgramStart); PROGRAMS_MakeFile("BOOT.COM",BOOT_ProgramStart); PROGRAMS_MakeFile("IMGMOUNT.COM", IMGMOUNT_ProgramStart); + PROGRAMS_MakeFile("KEYB.COM", KEYB_ProgramStart); } diff --git a/src/dosbox.cpp b/src/dosbox.cpp index 2c8ae63b..54c4c33b 100644 --- a/src/dosbox.cpp +++ b/src/dosbox.cpp @@ -16,7 +16,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* $Id: dosbox.cpp,v 1.102 2006-08-05 09:06:44 qbix79 Exp $ */ +/* $Id: dosbox.cpp,v 1.103 2006-10-27 13:37:14 c2woody Exp $ */ #include #include @@ -432,10 +432,13 @@ void DOSBOX_Init(void) { secprop->AddInitFunction(&EMS_Init,true);//done secprop->Add_bool("ems",true); secprop->Add_string("umb","true"); + secprop->AddInitFunction(&DOS_KeyboardLayout_Init,true); + secprop->Add_string("keyboardlayout", "none"); MSG_Add("DOS_CONFIGFILE_HELP", "xms -- Enable XMS support.\n" "ems -- Enable EMS support.\n" "umb -- Enable UMB support (false,true,max).\n" + "keyboardlayout -- Language code of the keyboard layout (or none).\n" ); // Mscdex secprop->AddInitFunction(&MSCDEX_Init); diff --git a/src/ints/bios_keyboard.cpp b/src/ints/bios_keyboard.cpp index fae8a6e6..aa99c174 100644 --- a/src/ints/bios_keyboard.cpp +++ b/src/ints/bios_keyboard.cpp @@ -33,7 +33,6 @@ static Bitu call_int16,call_irq1,call_irq6; /* Nice table from BOCHS i should feel bad for ripping this */ #define none 0 -#define MAX_SCAN_CODE 0x58 static struct { Bit16u normal; Bit16u shift; @@ -131,7 +130,7 @@ static struct { { 0x8600, 0x8800, 0x8a00, 0x8c00 } /* F12 */ }; -static bool add_key_forced(Bit16u code) { +bool BIOS_AddKeyToBuffer(Bit16u code) { if (mem_readb(BIOS_KEYBOARD_FLAGS2)&8) return true; Bit16u start,end,head,tail,ttail; if (machine==MCH_PCJR) { @@ -157,7 +156,7 @@ static bool add_key_forced(Bit16u code) { } static void add_key(Bit16u code) { - if (code!=0) add_key_forced(code); + if (code!=0) BIOS_AddKeyToBuffer(code); } static bool get_key(Bit16u &code) { @@ -240,6 +239,7 @@ static Bitu IRQ1_Handler(void) { #else flags2&=~(0x40+0x20);//remove numlock/capslock pressed (hack for sdl only reporting states) #endif + if (DOS_LayoutKey(scancode,flags1,flags2,flags3)) return CBRET_NONE; switch (scancode) { /* First the hard ones */ case 0xfa: /* ack. Do nothing for now */ @@ -551,7 +551,7 @@ static Bitu INT16_Handler(void) { } break; case 0x05: /* STORE KEYSTROKE IN KEYBOARD BUFFER */ - if (add_key_forced(reg_cx)) reg_al=0; + if (BIOS_AddKeyToBuffer(reg_cx)) reg_al=0; else reg_al=1; break; case 0x12: /* GET EXTENDED SHIFT STATES */ diff --git a/src/ints/int10_memory.cpp b/src/ints/int10_memory.cpp index 7079e45c..3a7c8fbf 100644 --- a/src/ints/int10_memory.cpp +++ b/src/ints/int10_memory.cpp @@ -117,7 +117,29 @@ void INT10_SetupRomMemory(void) { //Reserve checksum location checksumlocation = int10.rom.used++; } -}; +} + +void INT10_ReloadRomFonts(void) { + // 16x8 font + PhysPt font16pt=Real2Phys(int10.rom.font_16); + for (Bitu i=0;i<256*16;i++) { + phys_writeb(font16pt+i,int10_font_16[i]); + } + // 14x8 font + PhysPt font14pt=Real2Phys(int10.rom.font_14); + for (Bitu i=0;i<256*14;i++) { + phys_writeb(font14pt+i,int10_font_14[i]); + } + // 8x8 fonts + PhysPt font8pt=Real2Phys(int10.rom.font_8_first); + for (Bitu i=0;i<128*8;i++) { + phys_writeb(font8pt+i,int10_font_08[i]); + } + font8pt=Real2Phys(int10.rom.font_8_second); + for (Bitu i=0;i<128*8;i++) { + phys_writeb(font8pt+i,int10_font_08[i+128*8]); + } +} void INT10_SetupRomMemoryChecksum(void) { if (machine == MCH_VGA) { //EGA/VGA. Just to be safe diff --git a/visualc_net/dosbox.vcproj b/visualc_net/dosbox.vcproj index f8c9714d..26e93462 100644 --- a/visualc_net/dosbox.vcproj +++ b/visualc_net/dosbox.vcproj @@ -325,6 +325,9 @@ + +