From: srs5694 Date: Fri, 25 Jan 2013 01:26:33 +0000 (-0500) Subject: Support for loading fonts (as PNG files); new default font. X-Git-Url: https://code.delx.au/refind/commitdiff_plain/f5b5cdef011a3c64904632224c07c01d62050a40 Support for loading fonts (as PNG files); new default font. --- diff --git a/NEWS.txt b/NEWS.txt index a4b5d8b..c03d9ca 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -1,6 +1,15 @@ 0.6.6 (?/??/2013): ------------------ +- Added new "font" token to refind.conf, which enables specifying a font in + the form of a PNG file. This file must contain monospace glyphs for the + 95 characters from ASCII 32 to 126 (space through tilde), inclusive, plus + a glyph to be displayed for characters outside of this range, for a total + of 96 glyphs. + +- Replaced the old font (inherited from rEFInd) with an anti-aliased + version of Luxi Mono Regular 14 point. + - Fixed bug that caused rEFInd to ignore manual boot stanzas in files included via the "include" token in refind.conf. diff --git a/docs/refind/configfile.html b/docs/refind/configfile.html index bc9cf98..a1dbf40 100644 --- a/docs/refind/configfile.html +++ b/docs/refind/configfile.html @@ -327,7 +327,7 @@ default_selection elilo loader filename - Sets the filename for the boot loader. You may use either Unix-style slashes (/) or Windows/EFI-style backslashes (\) to separate directory elements. In either case, the references are to files on the ESP from which rEFInd launched or to the one identified by a preceding volume token. This option should normally be the first in the body of an OS stanza; if it's not, some other options may be ignored. An exception is if you want to boot a loader from a volume other than the one on which rEFInd resides, in which case volume should precede loader. + Sets the filename for the boot loader. You may use either Unix-style slashes (/) or Windows/EFI-style backslashes (\) to separate directory elements. In either case, the references are to files on the ESP from which rEFInd launched or to the one identified by a preceding volume token. The filename is specified as a path relative to the root of the filesystem, so if the file is in a directory, you must include its complete path, as in \EFI\myloader\loader.efi. This option should normally be the first in the body of an OS stanza; if it's not, some other options may be ignored. An exception is if you want to boot a loader from a volume other than the one on which rEFInd resides, in which case volume should precede loader. initrd diff --git a/fonts/damaged.png b/fonts/damaged.png deleted file mode 100644 index e3efcfb..0000000 Binary files a/fonts/damaged.png and /dev/null differ diff --git a/libeg/egemb_font.h b/libeg/egemb_font.h index fa5c043..57b27fc 100644 --- a/libeg/egemb_font.h +++ b/libeg/egemb_font.h @@ -1,302 +1,585 @@ -static const UINT8 egemb_font_data[3587] = { - 0xff, 0x00, 0xdd, 0x00, 0x80, 0xff, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, - 0xbc, 0x00, 0x00, 0xff, 0x81, 0x00, 0x04, 0xff, 0xff, 0x00, 0xff, 0xff, - 0x81, 0x00, 0x02, 0xff, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x82, 0x00, - 0x00, 0xff, 0x8b, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x81, 0x00, - 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0xa1, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x80, 0xff, 0x81, 0x00, 0x01, 0xff, 0xff, 0x82, 0x00, 0x80, 0xff, 0x81, - 0x00, 0x80, 0xff, 0x83, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x81, 0xff, - 0x81, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x82, 0xff, 0x80, 0x00, 0x80, - 0xff, 0x81, 0x00, 0x80, 0xff, 0xaa, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x82, 0xff, 0x81, 0x00, - 0x81, 0xff, 0x00, 0x00, 0x81, 0xff, 0x80, 0x00, 0x83, 0xff, 0x01, 0x00, - 0x00, 0x83, 0xff, 0x01, 0x00, 0x00, 0x81, 0xff, 0x00, 0x00, 0x80, 0xff, - 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x82, 0xff, 0x80, 0x00, 0x81, 0xff, - 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x80, 0xff, - 0x80, 0x00, 0x80, 0xff, 0x00, 0x00, 0x83, 0xff, 0x00, 0x00, 0x80, 0xff, - 0x01, 0x00, 0x00, 0x80, 0xff, 0x80, 0x00, 0x81, 0xff, 0x81, 0x00, 0x80, - 0xff, 0x01, 0x00, 0x00, 0x82, 0xff, 0x81, 0x00, 0x04, 0xff, 0xff, 0x00, - 0xff, 0x00, 0x87, 0xff, 0x00, 0x00, 0x83, 0xff, 0x00, 0x00, 0x83, 0xff, - 0x00, 0x00, 0x82, 0xff, 0x80, 0x00, 0x82, 0xff, 0x00, 0x00, 0x80, 0xff, - 0x00, 0x00, 0x82, 0xff, 0x80, 0x00, 0x80, 0xff, 0x80, 0x00, 0x00, 0xff, - 0x84, 0x00, 0x80, 0xff, 0x90, 0x00, 0x00, 0xff, 0x87, 0x00, 0x01, 0xff, - 0xff, 0x8d, 0x00, 0x01, 0xff, 0xff, 0x88, 0x00, 0x80, 0xff, 0x85, 0x00, - 0x01, 0xff, 0xff, 0x85, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x01, 0xff, 0xff, 0x84, 0x00, 0x01, 0xff, 0xff, 0xe6, 0x00, 0x00, - 0xff, 0x82, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x99, 0x00, 0x00, - 0xff, 0x81, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x82, 0x00, 0x02, 0xff, - 0x00, 0xff, 0x80, 0x00, 0x80, 0xff, 0x80, 0x00, 0x02, 0xff, 0x00, 0xff, - 0x8a, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, - 0x82, 0x00, 0x82, 0xff, 0x81, 0x00, 0x00, 0xff, 0x9a, 0x00, 0x03, 0xff, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x81, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x00, 0xff, 0x81, 0x00, 0x02, 0xff, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, - 0x83, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x00, 0xff, 0x90, 0x00, 0x01, 0xff, 0xff, 0x85, 0x00, 0x01, 0xff, 0xff, - 0x85, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, - 0xff, 0x81, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, - 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x06, 0xff, 0x00, 0x00, 0xff, 0x00, - 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x00, 0xff, 0x80, 0x00, 0x02, 0xff, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x84, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x00, 0xff, 0x82, 0x00, 0x0e, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, - 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x06, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x11, 0xff, 0x00, 0x00, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, - 0xff, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, - 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x83, 0x00, - 0x00, 0xff, 0x85, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x8b, 0x00, - 0x00, 0xff, 0x87, 0x00, 0x00, 0xff, 0x8e, 0x00, 0x00, 0xff, 0x87, 0x00, - 0x00, 0xff, 0x89, 0x00, 0x00, 0xff, 0x91, 0x00, 0x00, 0xff, 0x85, 0x00, - 0x00, 0xff, 0xb3, 0x00, 0x00, 0xff, 0xae, 0x00, 0x00, 0xff, 0x83, 0x00, - 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x8a, 0x00, 0x01, 0xff, 0xff, 0x89, - 0x00, 0x00, 0xff, 0x81, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x81, 0x00, - 0x02, 0xff, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, - 0x84, 0x00, 0x01, 0xff, 0xff, 0x82, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, - 0xff, 0x83, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, - 0xff, 0x99, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, - 0xff, 0x81, 0x00, 0x00, 0xff, 0x85, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, - 0xff, 0x81, 0x00, 0x02, 0xff, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x82, - 0x00, 0x00, 0xff, 0x87, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x01, - 0xff, 0xff, 0x83, 0x00, 0x01, 0xff, 0xff, 0x82, 0x00, 0x00, 0xff, 0x89, - 0x00, 0x00, 0xff, 0x83, 0x00, 0x0a, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x02, 0xff, 0x00, 0xff, 0x80, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x83, 0x00, - 0x00, 0xff, 0x80, 0x00, 0x05, 0xff, 0x00, 0x00, 0xff, 0x00, 0xff, 0x82, - 0x00, 0x02, 0xff, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, - 0x82, 0x00, 0x0e, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, - 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x06, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x85, 0x00, - 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x02, 0xff, 0x00, 0xff, 0x81, 0x00, 0x02, 0xff, 0x00, 0xff, - 0x83, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, - 0x85, 0x00, 0x00, 0xff, 0x81, 0x00, 0x02, 0xff, 0x00, 0xff, 0x8f, 0x00, - 0x80, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0xff, 0xff, 0x81, 0x00, 0x81, - 0xff, 0x80, 0x00, 0x03, 0xff, 0xff, 0x00, 0xff, 0x80, 0x00, 0x80, 0xff, - 0x80, 0x00, 0x82, 0xff, 0x80, 0x00, 0x09, 0xff, 0xff, 0x00, 0xff, 0xff, - 0x00, 0xff, 0x00, 0xff, 0xff, 0x80, 0x00, 0x80, 0xff, 0x81, 0x00, 0x81, - 0xff, 0x80, 0x00, 0x01, 0xff, 0x00, 0x80, 0xff, 0x81, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x80, 0xff, 0x08, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, - 0xff, 0xff, 0x81, 0x00, 0x80, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x00, - 0xff, 0xff, 0x81, 0x00, 0x0a, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0x00, 0xff, 0xff, 0x80, 0x00, 0x81, 0xff, 0x01, 0x00, 0x00, 0x82, - 0xff, 0x07, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x80, 0xff, - 0x00, 0x00, 0x83, 0xff, 0x00, 0x00, 0x82, 0xff, 0x04, 0x00, 0x00, 0xff, - 0xff, 0x00, 0x80, 0xff, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x82, 0xff, - 0x81, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, - 0x89, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x88, 0x00, 0x00, 0xff, 0x88, - 0x00, 0x82, 0xff, 0x02, 0x00, 0x00, 0xff, 0x86, 0x00, 0x01, 0xff, 0xff, - 0x80, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, - 0x83, 0x00, 0x00, 0xff, 0x82, 0x00, 0x02, 0xff, 0x00, 0xff, 0x82, 0x00, - 0x00, 0xff, 0x99, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x82, 0x00, - 0x01, 0xff, 0xff, 0x81, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x80, 0xff, 0x80, 0x00, 0x81, 0xff, 0x83, 0x00, 0x00, 0xff, 0x81, 0x00, - 0x80, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x01, 0xff, 0xff, 0x83, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, 0x01, 0xff, - 0xff, 0x82, 0x00, 0x82, 0xff, 0x81, 0x00, 0x01, 0xff, 0xff, 0x84, 0x00, - 0x07, 0xff, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x80, 0x00, 0x02, - 0xff, 0x00, 0xff, 0x80, 0x00, 0x81, 0xff, 0x80, 0x00, 0x00, 0xff, 0x83, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x02, 0xff, 0x00, 0x00, 0x80, 0xff, 0x82, - 0x00, 0x80, 0xff, 0x80, 0x00, 0x00, 0xff, 0x83, 0x00, 0x82, 0xff, 0x81, - 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x80, 0x00, 0x02, 0xff, 0x00, - 0xff, 0x82, 0x00, 0x00, 0xff, 0x82, 0x00, 0x0e, 0xff, 0x00, 0xff, 0x00, - 0xff, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x06, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x80, 0xff, 0x82, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x02, 0xff, 0x00, 0xff, 0x80, 0x00, - 0x04, 0xff, 0x00, 0xff, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x82, 0x00, - 0x02, 0xff, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, - 0x83, 0x00, 0x00, 0xff, 0x85, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x00, 0xff, 0x8d, 0x00, 0x00, 0xff, 0x80, 0x00, 0x0a, 0xff, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x0a, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x82, 0x00, 0x0b, 0xff, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x81, - 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, - 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x81, 0x00, 0x0e, 0xff, 0x00, 0xff, - 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x0e, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, - 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x01, 0xff, 0xff, 0x81, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x82, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x06, 0xff, 0x00, 0x00, 0xff, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x06, 0xff, 0x00, - 0x00, 0xff, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, - 0xff, 0x83, 0x00, 0x00, 0xff, 0x8c, 0x00, 0x00, 0xff, 0x88, 0x00, 0x00, - 0xff, 0x89, 0x00, 0x02, 0xff, 0x00, 0xff, 0x81, 0x00, 0x80, 0xff, 0x80, - 0x00, 0x80, 0xff, 0x82, 0x00, 0x00, 0xff, 0x8b, 0x00, 0x00, 0xff, 0x83, - 0x00, 0x00, 0xff, 0x82, 0x00, 0x04, 0xff, 0x00, 0xff, 0x00, 0x00, 0x84, - 0xff, 0x85, 0x00, 0x82, 0xff, 0x88, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, - 0xff, 0x85, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, - 0x83, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x82, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x81, 0xff, 0x8c, 0x00, 0x00, 0xff, 0x8f, 0x00, 0x00, 0xff, 0x82, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x04, 0xff, 0x00, 0xff, 0x00, 0xff, 0x80, - 0x00, 0x02, 0xff, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, - 0xff, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x80, 0x00, 0x05, 0xff, - 0x00, 0x00, 0xff, 0x00, 0xff, 0x82, 0x00, 0x02, 0xff, 0x00, 0xff, 0x80, - 0x00, 0x02, 0xff, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0xff, 0x80, 0x00, - 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x81, 0x00, 0x03, 0xff, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x80, 0xff, 0x82, 0x00, 0x00, 0xff, 0x82, 0x00, 0x0e, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x80, 0xff, 0x80, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x02, 0xff, 0x00, 0x00, 0x81, 0xff, 0x84, - 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x02, 0xff, 0x00, 0xff, 0x80, 0x00, 0x04, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, - 0xff, 0x83, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, - 0xff, 0x84, 0x00, 0x00, 0xff, 0x96, 0x00, 0x81, 0xff, 0x02, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x02, 0xff, 0x00, 0x00, 0x82, 0xff, 0x80, 0x00, 0x00, 0xff, - 0x82, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x80, 0xff, 0x83, 0x00, 0x00, 0xff, 0x81, 0x00, 0x07, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x83, - 0x00, 0x80, 0xff, 0x81, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x07, 0xff, 0x00, 0x00, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x80, 0x00, 0x01, 0xff, 0xff, 0x82, 0x00, - 0x03, 0xff, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, - 0xff, 0x83, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x82, 0x00, 0x03, - 0xff, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x95, 0x00, 0x82, 0xff, - 0x05, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x04, 0xff, 0x00, 0xff, 0x00, 0xff, 0x88, 0x00, 0x00, 0xff, 0x83, - 0x00, 0x00, 0xff, 0x8a, 0x00, 0x00, 0xff, 0x98, 0x00, 0x00, 0xff, 0x81, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x82, - 0x00, 0x00, 0xff, 0x86, 0x00, 0x02, 0xff, 0x00, 0x00, 0x83, 0xff, 0x82, - 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x82, 0x00, - 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x83, 0x00, - 0x00, 0xff, 0x8d, 0x00, 0x01, 0xff, 0xff, 0x82, 0x00, 0x82, 0xff, 0x81, - 0x00, 0x01, 0xff, 0xff, 0x82, 0x00, 0x00, 0xff, 0x81, 0x00, 0x06, 0xff, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x82, 0xff, 0x02, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x82, 0x00, - 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, - 0xff, 0x81, 0x00, 0x00, 0xff, 0x81, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x81, 0x00, 0x06, 0xff, 0x00, - 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x0a, 0xff, 0x00, 0x00, 0xff, - 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x80, 0x00, 0x06, 0xff, 0x00, - 0x00, 0xff, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, - 0xff, 0x81, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x02, - 0xff, 0x00, 0xff, 0x80, 0x00, 0x04, 0xff, 0x00, 0xff, 0x00, 0xff, 0x80, - 0x00, 0x02, 0xff, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, - 0xff, 0x83, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, - 0xff, 0x95, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x82, 0x00, - 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, - 0xff, 0x81, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x80, 0x00, 0x02, - 0xff, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x81, 0x00, 0x07, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x86, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x02, 0xff, 0x00, 0xff, 0x80, 0x00, 0x04, - 0xff, 0x00, 0xff, 0x00, 0xff, 0x80, 0x00, 0x01, 0xff, 0xff, 0x82, 0x00, - 0x02, 0xff, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, - 0x84, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, - 0x00, 0xff, 0xff, 0x82, 0x00, 0x00, 0xff, 0x97, 0x00, 0x02, 0xff, 0x00, - 0xff, 0x80, 0x00, 0x80, 0xff, 0x83, 0x00, 0x08, 0xff, 0x00, 0xff, 0x00, - 0x00, 0xff, 0x00, 0x00, 0xff, 0x89, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, - 0xff, 0x8a, 0x00, 0x00, 0xff, 0x83, 0x00, 0x01, 0xff, 0xff, 0x88, 0x00, - 0x01, 0xff, 0xff, 0x82, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x83, 0x00, - 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x81, 0x00, 0x01, 0xff, - 0xff, 0x83, 0x00, 0x01, 0xff, 0xff, 0x82, 0x00, 0x00, 0xff, 0x89, 0x00, - 0x00, 0xff, 0x89, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x06, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x82, 0x00, - 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, - 0xff, 0x81, 0x00, 0x00, 0xff, 0x81, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x06, 0xff, - 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x0a, 0xff, 0x00, 0x00, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, - 0x80, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x07, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, - 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x81, 0x00, 0x07, 0xff, 0x00, 0xff, - 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, - 0xff, 0x81, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, - 0xff, 0x85, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x95, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, - 0x03, 0xff, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, - 0x81, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, - 0x00, 0x00, 0xff, 0x82, 0x00, 0x00, 0xff, 0x81, 0x00, 0x07, 0xff, 0x00, - 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, - 0xff, 0x80, 0x00, 0x03, 0xff, 0x00, 0x00, 0xff, 0x80, 0x00, 0x03, 0xff, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x82, - 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x80, - 0x00, 0x06, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x02, - 0xff, 0x00, 0xff, 0x80, 0x00, 0x0a, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, - 0x00, 0xff, 0x00, 0x00, 0xff, 0x82, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, - 0x00, 0xff, 0x80, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, 0x83, 0x00, - 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x98, 0x00, 0x00, 0xff, 0x88, 0x00, - 0x02, 0xff, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x84, 0x00, 0x00, 0xff, - 0x81, 0x00, 0x03, 0xff, 0xff, 0x00, 0xff, 0x88, 0x00, 0x00, 0xff, 0x83, - 0x00, 0x00, 0xff, 0x8a, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x89, - 0x00, 0x01, 0xff, 0xff, 0x82, 0x00, 0x00, 0xff, 0x83, 0x00, 0x80, 0xff, - 0x80, 0x00, 0x82, 0xff, 0x01, 0x00, 0x00, 0x82, 0xff, 0x80, 0x00, 0x80, - 0xff, 0x83, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x80, 0xff, 0x81, 0x00, - 0x80, 0xff, 0x82, 0x00, 0x00, 0xff, 0x82, 0x00, 0x80, 0xff, 0x80, 0x00, - 0x80, 0xff, 0x82, 0x00, 0x01, 0xff, 0xff, 0x82, 0x00, 0x01, 0xff, 0xff, - 0x84, 0x00, 0x01, 0xff, 0xff, 0x85, 0x00, 0x01, 0xff, 0xff, 0x84, 0x00, - 0x01, 0xff, 0xff, 0x81, 0x00, 0x00, 0xff, 0x80, 0x00, 0x01, 0xff, 0x00, - 0x80, 0xff, 0x00, 0x00, 0x85, 0xff, 0x81, 0x00, 0x80, 0xff, 0x01, 0x00, - 0x00, 0x81, 0xff, 0x80, 0x00, 0x83, 0xff, 0x01, 0x00, 0x00, 0x80, 0xff, - 0x82, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x80, - 0xff, 0x00, 0x00, 0x82, 0xff, 0x80, 0x00, 0x01, 0xff, 0xff, 0x80, 0x00, - 0x80, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x00, 0x82, 0xff, 0x00, 0x00, - 0x80, 0xff, 0x00, 0x00, 0x83, 0xff, 0x02, 0x00, 0xff, 0xff, 0x80, 0x00, - 0x80, 0xff, 0x80, 0x00, 0x80, 0xff, 0x82, 0x00, 0x80, 0xff, 0x01, 0x00, - 0x00, 0x80, 0xff, 0x80, 0x00, 0x05, 0xff, 0x00, 0xff, 0x00, 0xff, 0xff, - 0x81, 0x00, 0x80, 0xff, 0x81, 0x00, 0x80, 0xff, 0x82, 0x00, 0x00, 0xff, - 0x82, 0x00, 0x06, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, - 0x03, 0xff, 0xff, 0x00, 0x00, 0x80, 0xff, 0x80, 0x00, 0x82, 0xff, 0x80, - 0x00, 0x00, 0xff, 0x85, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x96, - 0x00, 0x87, 0xff, 0x81, 0x00, 0x80, 0xff, 0x81, 0x00, 0x82, 0xff, 0x01, - 0x00, 0x00, 0x81, 0xff, 0x01, 0x00, 0x00, 0x82, 0xff, 0x80, 0x00, 0x81, - 0xff, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x82, - 0xff, 0x82, 0x00, 0x05, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x81, 0xff, - 0x00, 0x00, 0x82, 0xff, 0x00, 0x00, 0x87, 0xff, 0x00, 0x00, 0x80, 0xff, - 0x01, 0x00, 0x00, 0x80, 0xff, 0x80, 0x00, 0x81, 0xff, 0x81, 0x00, 0x81, - 0xff, 0x01, 0x00, 0x00, 0x82, 0xff, 0x01, 0x00, 0x00, 0x81, 0xff, 0x82, - 0x00, 0x80, 0xff, 0x80, 0x00, 0x04, 0xff, 0xff, 0x00, 0xff, 0xff, 0x80, - 0x00, 0x00, 0xff, 0x82, 0x00, 0x0a, 0xff, 0x00, 0xff, 0x00, 0x00, 0xff, - 0xff, 0x00, 0x00, 0xff, 0xff, 0x81, 0x00, 0x00, 0xff, 0x81, 0x00, 0x82, - 0xff, 0x81, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, - 0xff, 0x89, 0x00, 0x01, 0xff, 0xff, 0x96, 0x00, 0x02, 0xff, 0x00, 0xff, - 0x83, 0x00, 0x00, 0xff, 0x99, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, 0xff, - 0x91, 0x00, 0x01, 0xff, 0xff, 0x8f, 0x00, 0x00, 0xff, 0xd1, 0x00, 0x00, - 0xff, 0x9f, 0x00, 0x80, 0xff, 0xf2, 0x00, 0x80, 0xff, 0xbf, 0x00, 0x00, - 0xff, 0x85, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, 0xff, 0xc3, 0x00, 0x00, - 0xff, 0x90, 0x00, 0x00, 0xff, 0xa3, 0x00, 0x00, 0xff, 0x87, 0x00, 0x00, - 0xff, 0xb2, 0x00, 0x00, 0xff, 0x8a, 0x00, 0x00, 0xff, 0x83, 0x00, 0x00, - 0xff, 0x83, 0x00, 0x00, 0xff, 0xca, 0x00, 0x00, 0xff, 0x81, 0x00, 0x00, - 0xff, 0x91, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0xc1, 0x00, 0x80, - 0xff, 0x88, 0x00, 0x80, 0xff, 0xc0, 0x00, 0x80, 0xff, 0x8e, 0x00, 0x80, - 0xff, 0xa3, 0x00, 0x80, 0xff, 0x85, 0x00, 0x80, 0xff, 0xaf, 0x00, 0x81, - 0xff, 0x8a, 0x00, 0x00, 0xff, 0x88, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, - 0x00, 0xff, 0x00, 0xc2, 0x00, 0x84, 0xff, 0xff, 0x00, 0xdb, 0x00, +static const UINT8 egemb_luxi_mono_regular_14_data[6982] = { + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, + 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xd9, 0x00, 0x88, 0x00, + 0x01, 0x78, 0xe0, 0x81, 0x00, 0x05, 0x4a, 0xff, 0x51, 0x00, 0xea, 0xad, + 0x81, 0x00, 0x1a, 0x79, 0x77, 0x00, 0xc5, 0x28, 0x00, 0x07, 0x8e, 0xe9, + 0xf4, 0xe2, 0x88, 0x00, 0x34, 0xdd, 0xd5, 0x23, 0x00, 0x00, 0x3f, 0xaa, + 0x00, 0x00, 0x5c, 0xe4, 0xea, 0x62, 0x82, 0x00, 0x02, 0xc2, 0xff, 0x29, + 0x83, 0x00, 0x08, 0x3f, 0xe4, 0x82, 0x00, 0x00, 0x30, 0xdf, 0x91, 0x03, + 0x83, 0x00, 0x01, 0x65, 0xd6, 0xa6, 0x00, 0x08, 0x9d, 0x84, 0x00, 0x00, + 0x62, 0xd0, 0xdf, 0xa0, 0x0c, 0x80, 0x00, 0x03, 0x19, 0x67, 0xb7, 0x24, + 0x80, 0x00, 0x0d, 0x64, 0xc0, 0xdf, 0xea, 0xbe, 0x30, 0x00, 0x00, 0x55, + 0xc7, 0xe0, 0xe8, 0xb5, 0x25, 0x82, 0x00, 0x05, 0x6e, 0xff, 0x38, 0x00, + 0x00, 0x14, 0x82, 0xff, 0x09, 0x28, 0x00, 0x00, 0x17, 0xa4, 0xdb, 0xde, + 0xaa, 0x26, 0x00, 0x83, 0xff, 0x0f, 0x3c, 0x00, 0x01, 0x76, 0xdd, 0xe4, + 0xca, 0x40, 0x00, 0x00, 0x10, 0x9b, 0xdb, 0xde, 0x8e, 0x05, 0xa7, 0x00, + 0x05, 0x5d, 0xcd, 0xed, 0xe7, 0xd4, 0x5c, 0x80, 0x00, 0x04, 0x37, 0xb9, + 0xe2, 0xd2, 0x3c, 0x81, 0x00, 0x0b, 0x95, 0xf5, 0x08, 0x00, 0x00, 0x70, + 0xea, 0xff, 0xe1, 0xe7, 0xe2, 0x65, 0x80, 0x00, 0x50, 0x25, 0xb1, 0xe1, + 0xdf, 0xbb, 0x56, 0x93, 0xf5, 0xf7, 0xe8, 0xe1, 0xa9, 0x1c, 0x00, 0x70, + 0xe8, 0xff, 0xe4, 0xe0, 0xe0, 0xf4, 0x34, 0x38, 0xe0, 0xf8, 0xf4, 0xe0, + 0xe0, 0xe3, 0xc0, 0x00, 0x00, 0x56, 0xc3, 0xe4, 0xda, 0xad, 0x20, 0x82, + 0xfb, 0xf1, 0x2a, 0x00, 0xbb, 0xff, 0xe4, 0x00, 0xcb, 0xe0, 0xf0, 0xfc, + 0xe0, 0xe0, 0x43, 0x00, 0x04, 0xe0, 0xe0, 0xea, 0xff, 0xe1, 0xb6, 0x70, + 0xf4, 0xf8, 0x62, 0x0b, 0xeb, 0xf8, 0x58, 0x5b, 0xe0, 0xf7, 0xf4, 0xe0, + 0x35, 0x00, 0x00, 0xc2, 0xff, 0x43, 0x80, 0x00, 0x4c, 0xc1, 0xf5, 0x8e, + 0xf8, 0x5b, 0x00, 0x00, 0x69, 0xf7, 0xcc, 0x00, 0x00, 0x69, 0xd0, 0xdf, + 0xa3, 0x11, 0x00, 0x5b, 0xe2, 0xff, 0xea, 0xe4, 0xee, 0xa4, 0x0a, 0x00, + 0x00, 0x66, 0xcf, 0xde, 0xa0, 0x0f, 0x00, 0x5b, 0xf1, 0xfa, 0xe0, 0xef, + 0xd4, 0x43, 0x00, 0x00, 0x06, 0x90, 0xde, 0xe6, 0xdd, 0x88, 0x00, 0x94, + 0xe9, 0xe0, 0xef, 0xfd, 0xe0, 0xe0, 0xf8, 0x82, 0xf8, 0xf4, 0x7b, 0x00, + 0x90, 0xf7, 0xe1, 0xc0, 0xff, 0xe4, 0x23, 0x00, 0x20, 0xe6, 0xf7, 0xd8, + 0xf4, 0x3c, 0x80, 0x00, 0x13, 0x89, 0xfb, 0xab, 0xff, 0xf2, 0x2e, 0x00, + 0x5b, 0xf3, 0xea, 0xc1, 0xff, 0xec, 0x4d, 0x00, 0x51, 0xed, 0xf3, 0x2e, + 0xdb, 0x80, 0xe0, 0x0d, 0xe8, 0xff, 0x4f, 0x00, 0x00, 0x4c, 0xfd, 0xe4, + 0xe4, 0x5d, 0x00, 0x20, 0xf1, 0x11, 0x83, 0x00, 0x04, 0x04, 0xe4, 0xe4, + 0xf2, 0xb4, 0x82, 0x00, 0x01, 0x07, 0x3f, 0x8a, 0x00, 0x02, 0x10, 0xd4, + 0x88, 0x88, 0x00, 0x02, 0x84, 0xf9, 0xa0, 0x8e, 0x00, 0x03, 0xcc, 0xeb, + 0xff, 0x24, 0x88, 0x00, 0x04, 0x5e, 0xdf, 0xf0, 0xe0, 0x93, 0x85, 0x00, + 0x02, 0x7a, 0xf8, 0xac, 0x85, 0x00, 0x02, 0x64, 0xff, 0x20, 0x83, 0x00, + 0x06, 0x40, 0xff, 0x44, 0x00, 0x72, 0xf7, 0xb4, 0x83, 0x00, 0x04, 0xe1, + 0xe4, 0xee, 0xff, 0x04, 0xf2, 0x00, 0x03, 0x0a, 0x9d, 0xed, 0xc7, 0x81, + 0x00, 0x01, 0x4c, 0xb4, 0x81, 0x00, 0x03, 0x68, 0xf5, 0xca, 0x37, 0x89, + 0x00, 0x05, 0x5d, 0xcd, 0xed, 0xe7, 0xd4, 0x5c, 0x89, 0x00, 0x01, 0x78, + 0xe0, 0x81, 0x00, 0x05, 0x34, 0xff, 0x3a, 0x00, 0xd4, 0x97, 0x81, 0x00, + 0x1a, 0xbb, 0x36, 0x0c, 0xe3, 0x01, 0x00, 0x78, 0xd6, 0x56, 0xa0, 0x2c, + 0xd8, 0x00, 0xb5, 0x4e, 0x69, 0x97, 0x00, 0x05, 0xc7, 0x1c, 0x00, 0x07, + 0xf6, 0x4e, 0x62, 0xec, 0x82, 0x00, 0x02, 0xa4, 0xff, 0x0c, 0x82, 0x00, + 0x02, 0x3c, 0xf3, 0x44, 0x81, 0x00, 0x02, 0x0b, 0xc4, 0x9b, 0x81, 0x00, + 0x06, 0x30, 0x0a, 0x47, 0xb1, 0x00, 0x38, 0x01, 0xa2, 0x00, 0x10, 0x16, + 0xf2, 0x19, 0x00, 0x5a, 0xf1, 0x2c, 0x09, 0xae, 0xbd, 0x01, 0x23, 0xc7, + 0xe3, 0xb9, 0xff, 0x28, 0x80, 0x00, 0x0d, 0xd8, 0x66, 0x02, 0x09, 0xae, + 0xe3, 0x09, 0x00, 0x80, 0x79, 0x02, 0x10, 0xc6, 0xc8, 0x81, 0x00, 0x07, + 0x19, 0xe0, 0xfa, 0x38, 0x00, 0x00, 0x14, 0xee, 0x81, 0x3c, 0x09, 0x0a, + 0x00, 0x16, 0xe1, 0x96, 0x0c, 0x10, 0xc7, 0x48, 0x00, 0x81, 0x50, 0x11, + 0x5c, 0xf0, 0x1e, 0x00, 0x66, 0xd5, 0x1f, 0x01, 0x6c, 0xf2, 0x0a, 0x01, + 0xb8, 0xa2, 0x04, 0x17, 0xcb, 0x9e, 0xa7, 0x00, 0x14, 0x9c, 0x86, 0x0f, + 0x01, 0x7e, 0xfe, 0x2a, 0x00, 0x38, 0xce, 0x2c, 0x01, 0x34, 0xdc, 0x06, + 0x00, 0x00, 0x01, 0xdc, 0xff, 0x45, 0x80, 0x00, 0x36, 0x50, 0xff, 0x08, + 0x00, 0x85, 0xfc, 0x1b, 0x00, 0x24, 0xef, 0x95, 0x0c, 0x08, 0x89, 0x90, + 0x00, 0xa8, 0xb4, 0x00, 0x1b, 0xbd, 0xeb, 0x14, 0x00, 0x3c, 0xff, 0x20, + 0x00, 0x00, 0xa0, 0x34, 0x00, 0x00, 0xbc, 0x9c, 0x00, 0x00, 0x14, 0xc0, + 0x00, 0x6a, 0xf5, 0x4a, 0x02, 0x17, 0xd4, 0x38, 0x00, 0xd4, 0x84, 0x00, + 0x00, 0x24, 0xff, 0x38, 0x80, 0x00, 0x01, 0x7c, 0xe0, 0x84, 0x00, 0x0a, + 0x50, 0xff, 0x08, 0x00, 0x00, 0x9c, 0xbc, 0x00, 0x01, 0xb0, 0x5b, 0x80, + 0x00, 0x01, 0xb8, 0xa0, 0x81, 0x00, 0x42, 0x40, 0xff, 0x8a, 0x00, 0x00, + 0x0f, 0xfb, 0xa4, 0x00, 0xbc, 0xdc, 0x05, 0x00, 0x00, 0xb8, 0x24, 0x00, + 0x70, 0xe2, 0x21, 0x07, 0x95, 0xd0, 0x06, 0x00, 0x10, 0xff, 0x4c, 0x00, + 0x33, 0xfe, 0x71, 0x00, 0x6a, 0xe4, 0x22, 0x08, 0x99, 0xca, 0x05, 0x00, + 0x88, 0xd0, 0x00, 0x04, 0xa6, 0xec, 0x06, 0x00, 0x74, 0xde, 0x14, 0x00, + 0x4a, 0xe0, 0x00, 0x94, 0x44, 0x00, 0x78, 0xe4, 0x00, 0x00, 0xdc, 0x00, + 0xbc, 0xa0, 0x80, 0x00, 0x04, 0xb8, 0x20, 0x24, 0xff, 0x45, 0x80, 0x00, + 0x14, 0x56, 0x8e, 0x72, 0xaa, 0x00, 0x17, 0x56, 0x00, 0x06, 0xd4, 0x00, + 0xa9, 0xd6, 0x04, 0x00, 0x04, 0xca, 0x13, 0x08, 0xe1, 0xac, 0x80, 0x00, + 0x03, 0xad, 0x48, 0x00, 0xd4, 0x80, 0x00, 0x06, 0x88, 0xed, 0x0f, 0x00, + 0x00, 0x4c, 0xe0, 0x82, 0x00, 0x01, 0xac, 0x75, 0x86, 0x00, 0x01, 0x7c, + 0xb4, 0x82, 0x00, 0x02, 0x65, 0xcc, 0x01, 0x8a, 0x00, 0x02, 0x1e, 0xdf, + 0x27, 0x88, 0x00, 0x01, 0xbc, 0xa0, 0x8f, 0x00, 0x02, 0x38, 0xff, 0x24, + 0x87, 0x00, 0x05, 0x08, 0xf9, 0x85, 0x04, 0x12, 0xdf, 0x86, 0x00, 0x01, + 0xb0, 0xac, 0x85, 0x00, 0x02, 0x4f, 0xc8, 0x19, 0x83, 0x00, 0x06, 0x32, + 0xc8, 0x36, 0x00, 0x00, 0xa8, 0xb4, 0x85, 0x00, 0x02, 0x54, 0xff, 0x04, + 0xb9, 0x00, 0x02, 0x48, 0xff, 0x10, 0xb3, 0x00, 0x02, 0x83, 0xcf, 0x21, + 0x82, 0x00, 0x01, 0x4c, 0xb4, 0x82, 0x00, 0x03, 0x0c, 0x7e, 0xe6, 0x02, + 0x88, 0x00, 0x05, 0x9c, 0x86, 0x0f, 0x01, 0x7e, 0xfe, 0x89, 0x00, 0x01, + 0x78, 0xe0, 0x81, 0x00, 0x05, 0x1f, 0xff, 0x23, 0x00, 0xbf, 0x82, 0x80, + 0x00, 0x1b, 0x07, 0xe7, 0x04, 0x48, 0xa8, 0x00, 0x00, 0xb8, 0x87, 0x3c, + 0xa0, 0x07, 0x98, 0x00, 0xd5, 0x1c, 0x39, 0xb8, 0x00, 0x73, 0x74, 0x00, + 0x00, 0x17, 0xff, 0x1e, 0x55, 0xec, 0x82, 0x00, 0x01, 0x86, 0xed, 0x82, + 0x00, 0x02, 0x04, 0xdb, 0x86, 0x83, 0x00, 0x02, 0x21, 0xfd, 0x32, 0x80, + 0x00, 0x06, 0xc1, 0xe9, 0x71, 0x60, 0xbd, 0xff, 0x2d, 0xa2, 0x00, 0x10, + 0x7e, 0xa2, 0x00, 0x01, 0xd2, 0x89, 0x00, 0x00, 0x24, 0xff, 0x35, 0x13, + 0x28, 0x01, 0x30, 0xff, 0x29, 0x80, 0x00, 0x0e, 0xd8, 0x14, 0x00, 0x00, + 0x3a, 0xff, 0x36, 0x00, 0x64, 0x4b, 0x00, 0x00, 0x63, 0xfd, 0x04, 0x80, + 0x00, 0x07, 0xa6, 0x68, 0xf4, 0x38, 0x00, 0x00, 0x14, 0xe8, 0x83, 0x00, + 0x06, 0x83, 0xde, 0x02, 0x00, 0x00, 0x87, 0x3d, 0x82, 0x00, 0x12, 0x89, + 0x7c, 0x00, 0x00, 0xaa, 0xa0, 0x00, 0x00, 0x21, 0xff, 0x24, 0x29, 0xff, + 0x28, 0x00, 0x00, 0x3b, 0xfc, 0x1b, 0x93, 0x00, 0x01, 0x26, 0x7c, 0x85, + 0x00, 0x02, 0x42, 0x5e, 0x01, 0x83, 0x00, 0x14, 0x9c, 0x4b, 0x00, 0x00, + 0x1e, 0xff, 0x53, 0x00, 0xba, 0x25, 0x0a, 0x92, 0xb0, 0xe9, 0x30, 0x00, + 0x00, 0x28, 0xc1, 0xdf, 0x8e, 0x80, 0x00, 0x29, 0x50, 0xff, 0x08, 0x00, + 0x38, 0xff, 0x40, 0x00, 0x9a, 0xdd, 0x02, 0x00, 0x00, 0x4b, 0x7e, 0x00, + 0xa8, 0xb4, 0x00, 0x00, 0x11, 0xf7, 0x83, 0x00, 0x3c, 0xff, 0x20, 0x00, + 0x00, 0x82, 0x2b, 0x00, 0x00, 0xbc, 0x9c, 0x00, 0x00, 0x0f, 0x8d, 0x09, + 0xea, 0x7f, 0x80, 0x00, 0x09, 0x98, 0x32, 0x00, 0xd4, 0x84, 0x00, 0x00, + 0x24, 0xff, 0x38, 0x80, 0x00, 0x01, 0x7c, 0xe0, 0x84, 0x00, 0x0a, 0x50, + 0xff, 0x08, 0x00, 0x00, 0x9c, 0xbc, 0x00, 0x55, 0xb4, 0x01, 0x80, 0x00, + 0x01, 0xb8, 0xa0, 0x81, 0x00, 0x42, 0x40, 0xec, 0xd1, 0x00, 0x00, 0x53, + 0xfa, 0xa4, 0x00, 0xbc, 0xff, 0x66, 0x00, 0x00, 0xb8, 0x24, 0x0b, 0xee, + 0x5d, 0x00, 0x00, 0x06, 0xf0, 0x5d, 0x00, 0x10, 0xff, 0x4c, 0x00, 0x00, + 0xd1, 0xa4, 0x08, 0xea, 0x60, 0x00, 0x00, 0x08, 0xf3, 0x56, 0x00, 0x88, + 0xd0, 0x00, 0x00, 0x4f, 0xff, 0x23, 0x00, 0xb0, 0xa1, 0x00, 0x00, 0x08, + 0xe0, 0x00, 0x87, 0x3e, 0x00, 0x78, 0xe4, 0x00, 0x00, 0xc8, 0x00, 0xbc, + 0xa0, 0x80, 0x00, 0x04, 0xb8, 0x20, 0x00, 0xdb, 0x8e, 0x80, 0x00, 0x20, + 0x9e, 0x45, 0x55, 0xc7, 0x00, 0x5c, 0xfc, 0x07, 0x21, 0xb8, 0x00, 0x26, + 0xfc, 0x61, 0x00, 0x64, 0x7c, 0x00, 0x00, 0x60, 0xff, 0x33, 0x00, 0x36, + 0xc1, 0x01, 0x00, 0xc4, 0x00, 0x00, 0x19, 0xf6, 0x75, 0x80, 0x00, 0x01, + 0x4c, 0xe0, 0x82, 0x00, 0x02, 0x3b, 0xe2, 0x04, 0x85, 0x00, 0x01, 0x7c, + 0xb4, 0x81, 0x00, 0x03, 0x03, 0xdb, 0xef, 0x45, 0x8b, 0x00, 0x01, 0x2d, + 0x49, 0x88, 0x00, 0x01, 0xbc, 0xa0, 0x8f, 0x00, 0x02, 0x38, 0xff, 0x24, + 0x87, 0x00, 0x02, 0x22, 0xff, 0x3c, 0x89, 0x00, 0x01, 0xb0, 0xac, 0x93, + 0x00, 0x01, 0xa8, 0xb4, 0x85, 0x00, 0x02, 0x54, 0xff, 0x04, 0xb9, 0x00, + 0x02, 0x48, 0xff, 0x10, 0xb3, 0x00, 0x01, 0xb1, 0x91, 0x83, 0x00, 0x01, + 0x4c, 0xb4, 0x83, 0x00, 0x02, 0x2c, 0xff, 0x18, 0x88, 0x00, 0x05, 0x9c, + 0x4b, 0x00, 0x00, 0x1e, 0xff, 0x89, 0x00, 0x01, 0x70, 0xd7, 0x81, 0x00, + 0x13, 0x0a, 0xe8, 0x0d, 0x00, 0x9b, 0x64, 0x00, 0x24, 0xe4, 0xee, 0xf5, + 0xe4, 0xf6, 0xed, 0xe0, 0x0a, 0x91, 0xbc, 0x3e, 0xa0, 0x80, 0x00, 0x06, + 0xaf, 0x57, 0x75, 0x93, 0x1b, 0xc7, 0x05, 0x80, 0x00, 0x03, 0xe1, 0x55, + 0xc5, 0x78, 0x82, 0x00, 0x01, 0x69, 0xd0, 0x82, 0x00, 0x02, 0x4e, 0xfe, + 0x1f, 0x84, 0x00, 0x01, 0xb2, 0xb3, 0x80, 0x00, 0x05, 0x04, 0x24, 0x5f, + 0x41, 0x38, 0x0e, 0x81, 0x00, 0x01, 0x4c, 0xb4, 0x9c, 0x00, 0x06, 0x07, + 0xe8, 0x32, 0x00, 0x21, 0xff, 0x47, 0x80, 0x00, 0x01, 0xe3, 0x85, 0x80, + 0x00, 0x02, 0x30, 0xff, 0x29, 0x80, 0x00, 0x06, 0x2c, 0x02, 0x00, 0x00, + 0x53, 0xff, 0x23, 0x82, 0x00, 0x01, 0x77, 0xea, 0x80, 0x00, 0x08, 0x43, + 0xca, 0x03, 0xf4, 0x38, 0x00, 0x00, 0x14, 0xe8, 0x83, 0x00, 0x01, 0xe3, + 0x87, 0x86, 0x00, 0x13, 0x2d, 0xd7, 0x08, 0x00, 0x00, 0x7b, 0xf6, 0x45, + 0x00, 0x74, 0xdc, 0x02, 0x4e, 0xff, 0x0f, 0x00, 0x00, 0x0b, 0xff, 0x5e, + 0x80, 0x00, 0x02, 0xd0, 0xff, 0x38, 0x82, 0x00, 0x02, 0xd0, 0xff, 0x38, + 0x83, 0x00, 0x03, 0x06, 0x7b, 0xf2, 0x70, 0x85, 0x00, 0x03, 0x27, 0xda, + 0xbc, 0x24, 0x82, 0x00, 0x14, 0x20, 0x0d, 0x00, 0x00, 0x65, 0xf7, 0x1e, + 0x20, 0xb8, 0x00, 0xa7, 0x51, 0x01, 0x99, 0x49, 0x00, 0x00, 0x71, 0x7a, + 0x9a, 0xd7, 0x80, 0x00, 0x09, 0x50, 0xff, 0x08, 0x00, 0x4d, 0xff, 0x21, + 0x00, 0xef, 0x87, 0x83, 0x00, 0x01, 0xa8, 0xb4, 0x80, 0x00, 0x05, 0xae, + 0xc8, 0x00, 0x3c, 0xff, 0x20, 0x83, 0x00, 0x01, 0xbc, 0x9c, 0x81, 0x00, + 0x02, 0x47, 0xff, 0x2a, 0x83, 0x00, 0x06, 0xd4, 0x84, 0x00, 0x00, 0x24, + 0xff, 0x38, 0x80, 0x00, 0x01, 0x7c, 0xe0, 0x84, 0x00, 0x09, 0x50, 0xff, + 0x08, 0x00, 0x00, 0x9c, 0xbc, 0x12, 0xd9, 0x1c, 0x81, 0x00, 0x01, 0xb8, + 0xa0, 0x81, 0x00, 0x12, 0x40, 0xad, 0xfc, 0x19, 0x00, 0x9c, 0xbd, 0xa4, + 0x00, 0xbc, 0xb6, 0xe3, 0x08, 0x00, 0xb8, 0x24, 0x54, 0xff, 0x11, 0x80, + 0x00, 0x0c, 0xab, 0xba, 0x00, 0x10, 0xff, 0x4c, 0x00, 0x00, 0xcd, 0x97, + 0x4f, 0xff, 0x15, 0x80, 0x00, 0x10, 0xb0, 0xb4, 0x00, 0x88, 0xd0, 0x00, + 0x00, 0x63, 0xf1, 0x04, 0x00, 0xa0, 0xde, 0x15, 0x00, 0x00, 0x0b, 0x81, + 0x00, 0x01, 0x78, 0xe4, 0x81, 0x00, 0x01, 0xbc, 0xa0, 0x80, 0x00, 0x20, + 0xb8, 0x20, 0x00, 0x92, 0xd7, 0x00, 0x00, 0x01, 0xda, 0x08, 0x37, 0xe4, + 0x00, 0x8a, 0xfd, 0x30, 0x3e, 0x9b, 0x00, 0x00, 0x9b, 0xe2, 0x10, 0xcc, + 0x0c, 0x00, 0x00, 0x03, 0xd6, 0xb8, 0x00, 0xbc, 0x3b, 0x82, 0x00, 0x02, + 0x94, 0xe6, 0x0a, 0x80, 0x00, 0x01, 0x4c, 0xe0, 0x82, 0x00, 0x02, 0x01, + 0xcb, 0x56, 0x85, 0x00, 0x01, 0x7c, 0xb4, 0x81, 0x00, 0x03, 0x58, 0xc9, + 0x64, 0xbf, 0x90, 0x00, 0x0d, 0x2f, 0xa2, 0xdf, 0xef, 0xea, 0x6e, 0x00, + 0x00, 0xbc, 0xa0, 0x46, 0xcd, 0xe6, 0x67, 0x80, 0x00, 0x33, 0x4e, 0xc9, + 0xe7, 0xdb, 0xa6, 0x00, 0x00, 0x02, 0x7b, 0xd9, 0xf7, 0xe7, 0xff, 0x24, + 0x00, 0x01, 0x5d, 0xcd, 0xe4, 0xd4, 0x4f, 0x00, 0x00, 0xf5, 0xfa, 0xff, + 0xfa, 0xf8, 0xf8, 0x3e, 0x00, 0x1c, 0xae, 0xe6, 0xde, 0xcd, 0xe1, 0xbd, + 0x00, 0xb0, 0xac, 0x4a, 0xd2, 0xea, 0x5a, 0x00, 0x00, 0xe1, 0xe4, 0xee, + 0xff, 0x04, 0x80, 0x00, 0x0e, 0x2f, 0xe4, 0xe4, 0xea, 0xff, 0x2c, 0x00, + 0x00, 0xa8, 0xb4, 0x00, 0x6f, 0xf9, 0xf1, 0x6b, 0x80, 0x00, 0x28, 0x54, + 0xff, 0x04, 0x00, 0x00, 0xd0, 0xe8, 0x57, 0xe4, 0x51, 0x75, 0xec, 0x4f, + 0x88, 0xff, 0xac, 0x4a, 0xd2, 0xea, 0x5a, 0x00, 0x00, 0x06, 0x85, 0xdb, + 0xe4, 0xb7, 0x25, 0x00, 0x94, 0xff, 0xa0, 0x46, 0xcd, 0xe6, 0x67, 0x00, + 0x00, 0x02, 0x7b, 0xd9, 0x80, 0xff, 0x2b, 0x24, 0x80, 0xff, 0xff, 0x9c, + 0x4f, 0xd7, 0xe1, 0x64, 0x00, 0x18, 0xaf, 0xeb, 0xed, 0xde, 0x93, 0x00, + 0x2f, 0xf8, 0xfb, 0xff, 0xf9, 0xf8, 0xf1, 0x00, 0x7a, 0xf8, 0xa8, 0x00, + 0x00, 0xe7, 0xff, 0x20, 0x92, 0xff, 0xef, 0x64, 0x00, 0x6f, 0xf0, 0xf2, + 0xcf, 0xf7, 0x3f, 0x80, 0x00, 0x13, 0x89, 0xfb, 0xa2, 0xf8, 0xfc, 0x5d, + 0x00, 0x4f, 0xf7, 0xed, 0xa0, 0xff, 0xef, 0x64, 0x00, 0x6f, 0xf0, 0xf2, + 0x04, 0xe7, 0x80, 0xe4, 0x02, 0xf1, 0xff, 0x37, 0x80, 0x00, 0x01, 0x98, + 0xb4, 0x83, 0x00, 0x01, 0x4c, 0xb4, 0x83, 0x00, 0x02, 0x4c, 0xfb, 0x06, + 0x88, 0x00, 0x05, 0x20, 0x0d, 0x00, 0x00, 0x65, 0xf7, 0x89, 0x00, 0x01, + 0x63, 0xca, 0x8a, 0x00, 0x0a, 0x6e, 0x7f, 0x00, 0xba, 0x32, 0x00, 0x00, + 0x2f, 0xf1, 0xcf, 0xa0, 0x80, 0x00, 0x05, 0x2c, 0xd2, 0xc6, 0x1d, 0xa8, + 0x3e, 0x80, 0x00, 0x03, 0x02, 0xc8, 0xf9, 0x68, 0x83, 0x00, 0x01, 0x25, + 0x52, 0x82, 0x00, 0x01, 0x83, 0xd7, 0x85, 0x00, 0x02, 0x70, 0xf2, 0x01, + 0x80, 0x00, 0x04, 0x42, 0xd8, 0x7c, 0xa2, 0x02, 0x81, 0x00, 0x01, 0x4c, + 0xb4, 0x9c, 0x00, 0x06, 0x5f, 0xc1, 0x00, 0x00, 0x3e, 0xff, 0x2d, 0x80, + 0x00, 0x01, 0xca, 0xa1, 0x80, 0x00, 0x02, 0x30, 0xff, 0x29, 0x83, 0x00, + 0x03, 0x01, 0xb0, 0xd9, 0x01, 0x80, 0x00, 0x1b, 0x04, 0x43, 0xea, 0x65, + 0x00, 0x00, 0x06, 0xd5, 0x33, 0x00, 0xf4, 0x38, 0x00, 0x00, 0x14, 0xf9, + 0xe8, 0xc5, 0x6f, 0x05, 0x00, 0x07, 0xff, 0x6c, 0x97, 0xdd, 0xd1, 0x5c, + 0x82, 0x00, 0x01, 0xb6, 0x53, 0x80, 0x00, 0x0e, 0x07, 0xba, 0xfc, 0x97, + 0xe5, 0x26, 0x00, 0x36, 0xff, 0x29, 0x00, 0x00, 0x34, 0xff, 0x7a, 0x80, + 0x00, 0x02, 0xd0, 0xff, 0x38, 0x82, 0x00, 0x02, 0xd0, 0xff, 0x38, 0x82, + 0x00, 0x05, 0x3b, 0xd5, 0xc3, 0x2a, 0x00, 0x4f, 0x83, 0xf0, 0x06, 0xad, + 0x00, 0x08, 0x84, 0xf2, 0x79, 0x06, 0x83, 0x00, 0x1e, 0x52, 0xec, 0x4d, + 0x00, 0x44, 0x8b, 0x1e, 0xd4, 0x01, 0x00, 0xb7, 0x4c, 0x00, 0x00, 0xba, + 0x34, 0x55, 0xff, 0x20, 0x00, 0x00, 0x50, 0xff, 0x08, 0x1c, 0xca, 0x9b, + 0x00, 0x0d, 0xff, 0x64, 0x83, 0x00, 0x01, 0xa8, 0xb4, 0x80, 0x00, 0x07, + 0x8f, 0xe6, 0x00, 0x3c, 0xff, 0x20, 0x00, 0x92, 0x81, 0x00, 0x08, 0xbc, + 0x9c, 0x00, 0x3c, 0x56, 0x00, 0x65, 0xff, 0x0b, 0x83, 0x00, 0x06, 0xd4, + 0x84, 0x00, 0x00, 0x24, 0xff, 0x38, 0x80, 0x00, 0x01, 0x7c, 0xe0, 0x84, + 0x00, 0x08, 0x50, 0xff, 0x08, 0x00, 0x00, 0x9c, 0xbc, 0xa0, 0x65, 0x82, + 0x00, 0x01, 0xb8, 0xa0, 0x81, 0x00, 0x11, 0x40, 0x9c, 0xc7, 0x5e, 0x01, + 0xd9, 0x80, 0xa4, 0x00, 0xbc, 0x38, 0xfa, 0x71, 0x00, 0xb8, 0x24, 0x76, + 0xf3, 0x81, 0x00, 0x0b, 0x8e, 0xdc, 0x00, 0x10, 0xff, 0x4c, 0x00, 0x09, + 0xf1, 0x68, 0x73, 0xf5, 0x81, 0x00, 0x0f, 0x90, 0xd8, 0x00, 0x88, 0xd0, + 0x01, 0x28, 0xd8, 0x74, 0x00, 0x00, 0x26, 0xda, 0xe9, 0x59, 0x02, 0x82, + 0x00, 0x01, 0x78, 0xe4, 0x81, 0x00, 0x01, 0xbc, 0xa0, 0x80, 0x00, 0x17, + 0xb8, 0x20, 0x00, 0x49, 0xff, 0x20, 0x00, 0x2f, 0xb3, 0x00, 0x19, 0xfd, + 0x04, 0xb7, 0xbb, 0x5c, 0x5c, 0x7e, 0x00, 0x00, 0x1d, 0xf8, 0xce, 0x6d, + 0x81, 0x00, 0x03, 0x51, 0xff, 0x82, 0xb4, 0x82, 0x00, 0x02, 0x20, 0xfa, + 0x68, 0x81, 0x00, 0x01, 0x4c, 0xe0, 0x83, 0x00, 0x01, 0x5a, 0xc6, 0x85, + 0x00, 0x01, 0x7c, 0xb4, 0x80, 0x00, 0x05, 0x01, 0xd1, 0x50, 0x07, 0xe5, + 0x38, 0x8f, 0x00, 0x2b, 0x74, 0x9a, 0x15, 0x04, 0x8d, 0xf6, 0x01, 0x00, + 0xbc, 0xcd, 0xb2, 0x45, 0x84, 0xff, 0x2b, 0x00, 0x4a, 0xff, 0x57, 0x01, + 0x27, 0xf4, 0x00, 0x00, 0x7e, 0xe9, 0x46, 0x1a, 0x5e, 0xff, 0x24, 0x00, + 0x66, 0xdf, 0x22, 0x00, 0x4e, 0xfa, 0x1f, 0x00, 0x00, 0x24, 0xff, 0x38, + 0x81, 0x00, 0x0e, 0xc6, 0xb8, 0x09, 0x1b, 0xe1, 0x7c, 0x28, 0x00, 0xb0, + 0xd6, 0xb5, 0x39, 0xa5, 0xed, 0x03, 0x80, 0x00, 0x02, 0x54, 0xff, 0x04, + 0x83, 0x00, 0x0a, 0x30, 0xff, 0x2c, 0x00, 0x00, 0xa8, 0xb4, 0x00, 0x57, + 0xc5, 0x13, 0x81, 0x00, 0x3b, 0x54, 0xff, 0x04, 0x00, 0x00, 0x5e, 0xf2, + 0x9a, 0x9c, 0xd3, 0x96, 0xb3, 0xa1, 0x0f, 0xb9, 0xd6, 0xb5, 0x39, 0xa5, + 0xed, 0x03, 0x00, 0x90, 0xda, 0x1a, 0x04, 0x89, 0xe8, 0x0c, 0x0c, 0xc2, + 0xcd, 0xa7, 0x32, 0x73, 0xff, 0x2b, 0x00, 0x7e, 0xe6, 0x45, 0x1a, 0x5e, + 0xff, 0x24, 0x20, 0x40, 0xcd, 0xd0, 0xc3, 0x5d, 0xaa, 0x90, 0x00, 0xa0, + 0xb6, 0x0f, 0x03, 0x36, 0xec, 0x80, 0x00, 0x02, 0x48, 0xff, 0x10, 0x81, + 0x00, 0x09, 0xb4, 0xa8, 0x00, 0x00, 0x3c, 0xff, 0x20, 0x03, 0xe5, 0x91, + 0x80, 0x00, 0x14, 0x9e, 0x4a, 0x6a, 0xca, 0x00, 0x42, 0xd6, 0x0b, 0x0d, + 0xcd, 0x00, 0x50, 0xfd, 0x41, 0x00, 0x21, 0xcb, 0x0d, 0x03, 0xe5, 0x91, + 0x80, 0x00, 0x09, 0x9e, 0x4b, 0x00, 0xd8, 0x00, 0x00, 0x0d, 0xd6, 0xbc, + 0x03, 0x80, 0x00, 0x01, 0x7a, 0xbc, 0x83, 0x00, 0x01, 0x4c, 0xb4, 0x83, + 0x00, 0x01, 0x58, 0xdf, 0x8c, 0x00, 0x02, 0x52, 0xec, 0x4d, 0x89, 0x00, + 0x01, 0x55, 0xbc, 0x8a, 0x00, 0x04, 0x9e, 0x51, 0x01, 0xe5, 0x08, 0x80, + 0x00, 0x03, 0x36, 0xe7, 0xf1, 0x55, 0x82, 0x00, 0x0d, 0x43, 0xa2, 0x7b, + 0xdb, 0x62, 0x02, 0x9c, 0xaa, 0xfb, 0x3f, 0x0e, 0xe7, 0xeb, 0x20, 0x86, + 0x00, 0x01, 0xaa, 0xbc, 0x85, 0x00, 0x0a, 0x53, 0xff, 0x17, 0x00, 0x00, + 0x01, 0xba, 0x75, 0x0f, 0xe7, 0x33, 0x81, 0x00, 0x01, 0x4c, 0xb4, 0x9b, + 0x00, 0x07, 0x01, 0xd0, 0x51, 0x00, 0x00, 0x52, 0xff, 0x21, 0x80, 0x00, + 0x01, 0xbd, 0xb5, 0x80, 0x00, 0x02, 0x30, 0xff, 0x2a, 0x83, 0x00, 0x02, + 0x70, 0xf0, 0x29, 0x80, 0x00, 0x1d, 0xb6, 0xf6, 0xff, 0x98, 0x0a, 0x00, + 0x00, 0x79, 0x94, 0x00, 0x00, 0xf4, 0x38, 0x00, 0x00, 0x01, 0x01, 0x09, + 0x52, 0xeb, 0xa4, 0x00, 0x20, 0xff, 0xe4, 0x52, 0x05, 0x4b, 0xfe, 0x3d, + 0x80, 0x00, 0x02, 0x37, 0xdc, 0x03, 0x80, 0x00, 0x0e, 0x05, 0xad, 0xb8, + 0xfa, 0xd7, 0x21, 0x00, 0x04, 0xd5, 0xa4, 0x0a, 0x21, 0xbd, 0xf9, 0x87, + 0x80, 0x00, 0x02, 0x1e, 0x24, 0x08, 0x82, 0x00, 0x02, 0x1e, 0x24, 0x08, + 0x80, 0x00, 0x07, 0x10, 0x97, 0xed, 0x65, 0x02, 0x00, 0x00, 0x0b, 0x83, + 0x20, 0x00, 0x17, 0x80, 0x00, 0x03, 0x2c, 0xc5, 0xd3, 0x39, 0x81, 0x00, + 0x1f, 0x42, 0xe9, 0x30, 0x00, 0x00, 0x60, 0x74, 0x4b, 0xad, 0x00, 0x19, + 0xfd, 0x4c, 0x00, 0x0b, 0xe4, 0x03, 0x13, 0xfe, 0x68, 0x00, 0x00, 0x50, + 0xff, 0xe5, 0xff, 0xcf, 0x1a, 0x00, 0x21, 0xff, 0x52, 0x83, 0x00, 0x01, + 0xa8, 0xb4, 0x80, 0x00, 0x07, 0x7f, 0xf2, 0x00, 0x3c, 0xff, 0xe4, 0xe0, + 0xf1, 0x81, 0x00, 0x07, 0xbc, 0xf4, 0xe0, 0xeb, 0x80, 0x00, 0x79, 0xfa, + 0x84, 0x00, 0x06, 0xd4, 0xf1, 0xe0, 0xe0, 0xe5, 0xff, 0x38, 0x80, 0x00, + 0x01, 0x7c, 0xe0, 0x84, 0x00, 0x08, 0x50, 0xff, 0x08, 0x00, 0x00, 0x9c, + 0xd8, 0xff, 0x62, 0x82, 0x00, 0x01, 0xb8, 0xa0, 0x81, 0x00, 0x11, 0x40, + 0x9c, 0x81, 0xa5, 0x2e, 0xb3, 0x78, 0xa4, 0x00, 0xbc, 0x18, 0x94, 0xea, + 0x0d, 0xb8, 0x24, 0x8d, 0xe5, 0x81, 0x00, 0x0b, 0x7e, 0xf4, 0x00, 0x10, + 0xff, 0x4c, 0x0b, 0x93, 0xe0, 0x09, 0x8c, 0xe5, 0x81, 0x00, 0x07, 0x7e, + 0xf5, 0x00, 0x88, 0xfa, 0xe5, 0xfe, 0xa7, 0x81, 0x00, 0x04, 0x0c, 0x9a, + 0xfe, 0xc0, 0x1c, 0x81, 0x00, 0x01, 0x78, 0xe4, 0x81, 0x00, 0x01, 0xbc, + 0xa0, 0x80, 0x00, 0x11, 0xb8, 0x20, 0x00, 0x0a, 0xf8, 0x68, 0x00, 0x77, + 0x6a, 0x00, 0x02, 0xfa, 0x1e, 0xc9, 0x7c, 0x89, 0x79, 0x61, 0x80, 0x00, + 0x02, 0xa7, 0xfe, 0x12, 0x81, 0x00, 0x03, 0x01, 0xc9, 0xff, 0x30, 0x82, + 0x00, 0x02, 0x9f, 0xdd, 0x05, 0x81, 0x00, 0x01, 0x4c, 0xe0, 0x83, 0x00, + 0x02, 0x06, 0xe5, 0x37, 0x84, 0x00, 0x01, 0x7c, 0xb4, 0x80, 0x00, 0x05, + 0x4b, 0xd5, 0x02, 0x00, 0x72, 0xb2, 0x8f, 0x00, 0x21, 0x0d, 0x0b, 0x00, + 0x00, 0x4c, 0xff, 0x0c, 0x00, 0xbc, 0xd7, 0x0d, 0x00, 0x04, 0xee, 0x7e, + 0x00, 0xc2, 0xb7, 0x00, 0x00, 0x01, 0xbc, 0x00, 0x06, 0xf1, 0x74, 0x00, + 0x00, 0x38, 0xff, 0x24, 0x01, 0xe7, 0x6e, 0x80, 0x00, 0x06, 0xeb, 0x6a, + 0x00, 0x00, 0x24, 0xff, 0x38, 0x80, 0x00, 0x0f, 0x16, 0xff, 0x43, 0x00, + 0x00, 0x82, 0xbd, 0x00, 0x00, 0xb0, 0xe7, 0x14, 0x00, 0x4c, 0xff, 0x1b, + 0x80, 0x00, 0x02, 0x54, 0xff, 0x04, 0x83, 0x00, 0x09, 0x30, 0xff, 0x2c, + 0x00, 0x00, 0xa8, 0xb4, 0x5e, 0xba, 0x0d, 0x82, 0x00, 0x3b, 0x54, 0xff, + 0x04, 0x00, 0x00, 0x50, 0xff, 0x25, 0x6a, 0xf6, 0x0f, 0x82, 0xbc, 0x00, + 0xb0, 0xe7, 0x14, 0x00, 0x4c, 0xff, 0x1b, 0x0b, 0xfa, 0x6b, 0x00, 0x00, + 0x0c, 0xf9, 0x68, 0x00, 0xbc, 0xd6, 0x0b, 0x00, 0x02, 0xeb, 0x7e, 0x06, + 0xf1, 0x6f, 0x00, 0x00, 0x38, 0xff, 0x24, 0x00, 0x00, 0xbc, 0xe3, 0x14, + 0x00, 0x4d, 0x7e, 0x00, 0xbb, 0xc2, 0x0e, 0x00, 0x00, 0x7c, 0x80, 0x00, + 0x02, 0x48, 0xff, 0x10, 0x81, 0x00, 0x2d, 0xb4, 0xa8, 0x00, 0x00, 0x3c, + 0xff, 0x20, 0x00, 0x88, 0xeb, 0x06, 0x00, 0x0b, 0xda, 0x04, 0x40, 0xf4, + 0x02, 0x86, 0xfd, 0x42, 0x36, 0xa4, 0x00, 0x00, 0x95, 0xe6, 0x19, 0xc0, + 0x31, 0x00, 0x00, 0x88, 0xeb, 0x06, 0x00, 0x0b, 0xdc, 0x05, 0x00, 0x4e, + 0x00, 0x01, 0xa9, 0xe3, 0x15, 0x80, 0x00, 0x02, 0x17, 0xc5, 0x69, 0x83, + 0x00, 0x01, 0x4c, 0xb4, 0x83, 0x00, 0x0c, 0x17, 0xec, 0x40, 0x02, 0x00, + 0x00, 0x67, 0xe2, 0x9e, 0x0b, 0x00, 0x59, 0x61, 0x80, 0x00, 0x02, 0x42, + 0xe9, 0x30, 0x8a, 0x00, 0x01, 0x48, 0xaf, 0x8a, 0x00, 0x03, 0xce, 0x22, + 0x1a, 0xd2, 0x82, 0x00, 0x03, 0x69, 0xd7, 0xfe, 0x65, 0x80, 0x00, 0x0d, + 0x06, 0xc7, 0x36, 0xd2, 0x0f, 0xde, 0x5c, 0xe0, 0x05, 0x9a, 0xce, 0x03, + 0x65, 0x92, 0x87, 0x00, 0x01, 0xc3, 0xac, 0x85, 0x00, 0x02, 0x40, 0xff, + 0x2e, 0x80, 0x00, 0x0d, 0x04, 0x0b, 0x00, 0x0d, 0x00, 0x00, 0x4f, 0xf0, + 0xf0, 0xf5, 0xfc, 0xf0, 0xf0, 0xad, 0x86, 0x00, 0x00, 0xed, 0x82, 0xf0, + 0x00, 0x5e, 0x88, 0x00, 0x07, 0x41, 0xde, 0x03, 0x00, 0x00, 0x3e, 0xff, + 0x2e, 0x80, 0x00, 0x01, 0xca, 0xa0, 0x80, 0x00, 0x02, 0x30, 0xff, 0x2a, + 0x82, 0x00, 0x02, 0x61, 0xea, 0x38, 0x82, 0x00, 0x0b, 0x02, 0x2a, 0xbe, + 0xcc, 0x07, 0x20, 0xde, 0x10, 0x00, 0x00, 0xf4, 0x38, 0x83, 0x00, 0x05, + 0x5b, 0xff, 0x27, 0x13, 0xff, 0x96, 0x80, 0x00, 0x01, 0xc3, 0x9a, 0x80, + 0x00, 0x01, 0xb8, 0x70, 0x81, 0x00, 0x0e, 0x9e, 0xba, 0x02, 0x31, 0xe1, + 0xe5, 0x20, 0x00, 0x21, 0xb5, 0xe4, 0xbe, 0x38, 0xfc, 0x6b, 0x8d, 0x00, + 0x03, 0x12, 0xdc, 0xec, 0x20, 0x8d, 0x00, 0x03, 0x02, 0xa6, 0xfe, 0x57, + 0x80, 0x00, 0x01, 0xbe, 0x81, 0x80, 0x00, 0x1a, 0x4d, 0x8a, 0x57, 0xb1, + 0x00, 0x74, 0xb7, 0x4c, 0x00, 0x4d, 0xa7, 0x00, 0x00, 0xcc, 0xb1, 0x00, + 0x00, 0x50, 0xff, 0x08, 0x16, 0xa5, 0xe7, 0x1b, 0x09, 0xff, 0x65, 0x83, + 0x00, 0x01, 0xa8, 0xb4, 0x80, 0x00, 0x07, 0x93, 0xd5, 0x00, 0x3c, 0xff, + 0x20, 0x00, 0xd8, 0x81, 0x00, 0x15, 0xbc, 0x9c, 0x00, 0x58, 0x80, 0x00, + 0x61, 0xff, 0x0d, 0x00, 0x20, 0xe0, 0xf0, 0x5e, 0x00, 0xd4, 0x84, 0x00, + 0x00, 0x24, 0xff, 0x38, 0x80, 0x00, 0x01, 0x7c, 0xe0, 0x84, 0x00, 0x09, + 0x50, 0xff, 0x08, 0x00, 0x00, 0x9c, 0xbc, 0x8f, 0xf4, 0x25, 0x81, 0x00, + 0x01, 0xb8, 0xa0, 0x81, 0x00, 0x11, 0x40, 0x9c, 0x3b, 0xea, 0x78, 0x69, + 0x78, 0xa4, 0x00, 0xbc, 0x18, 0x19, 0xf6, 0x7c, 0xb8, 0x24, 0x76, 0xf4, + 0x81, 0x00, 0x0b, 0x8c, 0xdb, 0x00, 0x10, 0xff, 0xea, 0xdb, 0xa3, 0x19, + 0x00, 0x72, 0xf1, 0x81, 0x00, 0x08, 0x89, 0xe7, 0x00, 0x88, 0xd0, 0x00, + 0x92, 0xe8, 0x08, 0x82, 0x00, 0x03, 0x2f, 0xd8, 0xed, 0x22, 0x80, 0x00, + 0x01, 0x78, 0xe4, 0x81, 0x00, 0x01, 0xbc, 0xa1, 0x80, 0x00, 0x17, 0xb9, + 0x20, 0x00, 0x00, 0xb8, 0xb1, 0x00, 0xbf, 0x21, 0x00, 0x00, 0xde, 0x4c, + 0xb9, 0x51, 0xb6, 0x97, 0x43, 0x00, 0x00, 0x13, 0xce, 0xf3, 0x7a, 0x82, + 0x00, 0x01, 0x79, 0xe1, 0x82, 0x00, 0x02, 0x28, 0xfd, 0x5b, 0x82, 0x00, + 0x01, 0x4c, 0xe0, 0x84, 0x00, 0x01, 0x79, 0xa8, 0x84, 0x00, 0x01, 0x7c, + 0xb4, 0x80, 0x00, 0x06, 0xc4, 0x5d, 0x00, 0x00, 0x0c, 0xec, 0x2d, 0x8e, + 0x00, 0x09, 0x0d, 0x80, 0xcb, 0xe0, 0xeb, 0xff, 0x0c, 0x00, 0xbc, 0xa0, + 0x80, 0x00, 0x04, 0xd0, 0x9b, 0x00, 0xec, 0x86, 0x82, 0x00, 0x0a, 0x25, + 0xff, 0x42, 0x00, 0x00, 0x38, 0xff, 0x24, 0x16, 0xff, 0xea, 0x80, 0xe0, + 0x06, 0xee, 0x7f, 0x00, 0x00, 0x24, 0xff, 0x38, 0x80, 0x00, 0x0f, 0x11, + 0xff, 0x3e, 0x00, 0x00, 0x81, 0xbd, 0x00, 0x00, 0xb0, 0xac, 0x00, 0x00, + 0x34, 0xff, 0x24, 0x80, 0x00, 0x02, 0x54, 0xff, 0x04, 0x83, 0x00, 0x08, + 0x30, 0xff, 0x2c, 0x00, 0x00, 0xa8, 0xdf, 0xfd, 0x53, 0x83, 0x00, 0x17, + 0x54, 0xff, 0x04, 0x00, 0x00, 0x50, 0xe9, 0x00, 0x68, 0xd1, 0x00, 0x7c, + 0xbc, 0x00, 0xb0, 0xac, 0x00, 0x00, 0x34, 0xff, 0x24, 0x2e, 0xff, 0x43, + 0x80, 0x00, 0x04, 0xdd, 0x92, 0x00, 0xbc, 0xa0, 0x80, 0x00, 0x0d, 0xcf, + 0x9b, 0x25, 0xff, 0x40, 0x00, 0x00, 0x38, 0xff, 0x24, 0x00, 0x00, 0xbc, + 0x9c, 0x82, 0x00, 0x05, 0x45, 0xe6, 0xf2, 0xa5, 0x51, 0x02, 0x80, 0x00, + 0x02, 0x48, 0xff, 0x10, 0x81, 0x00, 0x1c, 0xb4, 0xa8, 0x00, 0x00, 0x3c, + 0xff, 0x20, 0x00, 0x29, 0xff, 0x4f, 0x00, 0x5c, 0x8d, 0x00, 0x16, 0xff, + 0x1f, 0xbe, 0xaa, 0x7f, 0x60, 0x7b, 0x00, 0x00, 0x09, 0xd2, 0xea, 0x6e, + 0x80, 0x00, 0x05, 0x29, 0xff, 0x4f, 0x00, 0x5c, 0x90, 0x81, 0x00, 0x02, + 0x71, 0xfa, 0x37, 0x80, 0x00, 0x02, 0xa8, 0xfd, 0xa4, 0x84, 0x00, 0x01, + 0x4c, 0xb4, 0x84, 0x00, 0x0b, 0x3f, 0xff, 0xe8, 0x23, 0x07, 0xf4, 0x43, + 0xa2, 0xc5, 0x13, 0xac, 0x6d, 0x80, 0x00, 0x01, 0xbe, 0x81, 0x8b, 0x00, + 0x01, 0x26, 0x67, 0x88, 0x00, 0x07, 0x8b, 0xe2, 0xfc, 0xe1, 0xea, 0xf4, + 0xe0, 0x7d, 0x80, 0x00, 0x14, 0x68, 0x74, 0x85, 0xed, 0x01, 0x00, 0x00, + 0x78, 0x6b, 0x4f, 0xa2, 0x00, 0xc0, 0xa6, 0xab, 0x00, 0x1e, 0xf7, 0x62, + 0x8c, 0x6b, 0x87, 0x00, 0x01, 0xa3, 0xc4, 0x85, 0x00, 0x02, 0x57, 0xff, + 0x0d, 0x86, 0x00, 0x07, 0x0b, 0x20, 0x20, 0x63, 0xbe, 0x20, 0x20, 0x17, + 0x86, 0x00, 0x83, 0x20, 0x00, 0x0d, 0x88, 0x00, 0x01, 0xb1, 0x6f, 0x80, + 0x00, 0x02, 0x21, 0xff, 0x48, 0x80, 0x00, 0x01, 0xe3, 0x84, 0x80, 0x00, + 0x02, 0x30, 0xff, 0x2b, 0x81, 0x00, 0x02, 0x5c, 0xea, 0x2f, 0x85, 0x00, + 0x04, 0x28, 0xff, 0x4c, 0x6c, 0xfb, 0x80, 0xf0, 0x02, 0xff, 0xf4, 0xb1, + 0x82, 0x00, 0x05, 0x21, 0xff, 0x50, 0x01, 0xf7, 0x6f, 0x80, 0x00, 0x06, + 0xa8, 0xb1, 0x00, 0x00, 0x35, 0xff, 0x1d, 0x80, 0x00, 0x07, 0x0b, 0xf9, + 0x4b, 0x00, 0x00, 0x1c, 0xfc, 0x77, 0x82, 0x00, 0x02, 0x22, 0xff, 0x48, + 0x8e, 0x00, 0x03, 0x21, 0xb7, 0xdd, 0x45, 0x80, 0x00, 0x00, 0x4f, 0x83, + 0xf0, 0x00, 0xad, 0x80, 0x00, 0x04, 0x17, 0xa6, 0xe8, 0x57, 0x01, 0x80, + 0x00, 0x01, 0xe8, 0x5d, 0x80, 0x00, 0x1a, 0x2b, 0xb7, 0x2d, 0xe1, 0x1f, + 0xa4, 0x8c, 0x4c, 0x00, 0x96, 0xec, 0xe0, 0xe0, 0xf1, 0xf4, 0x07, 0x00, + 0x50, 0xff, 0x08, 0x00, 0x0a, 0xfa, 0x7a, 0x00, 0xe8, 0x8d, 0x83, 0x00, + 0x01, 0xa8, 0xb4, 0x80, 0x00, 0x05, 0xb7, 0xb1, 0x00, 0x3c, 0xff, 0x20, + 0x83, 0x00, 0x01, 0xbc, 0x9c, 0x81, 0x00, 0x02, 0x40, 0xff, 0x34, 0x80, + 0x00, 0x09, 0xf8, 0x64, 0x00, 0xd4, 0x84, 0x00, 0x00, 0x24, 0xff, 0x38, + 0x80, 0x00, 0x01, 0x7c, 0xe0, 0x80, 0x00, 0x0e, 0x1f, 0x4e, 0x00, 0x00, + 0x50, 0xff, 0x08, 0x00, 0x00, 0x9c, 0xbc, 0x08, 0xd2, 0xca, 0x05, 0x80, + 0x00, 0x01, 0xb8, 0xa0, 0x80, 0x00, 0x13, 0x7a, 0x40, 0x9c, 0x05, 0xf2, + 0xe6, 0x20, 0x78, 0xa4, 0x00, 0xbc, 0x18, 0x00, 0x8a, 0xf0, 0xca, 0x24, + 0x53, 0xff, 0x12, 0x80, 0x00, 0x05, 0xa7, 0xb9, 0x00, 0x10, 0xff, 0x4c, + 0x81, 0x00, 0x02, 0x4c, 0xff, 0x09, 0x80, 0x00, 0x0b, 0x9f, 0xc8, 0x00, + 0x88, 0xd0, 0x00, 0x21, 0xfd, 0x66, 0x00, 0x00, 0x37, 0x80, 0x00, 0x02, + 0x1c, 0xfe, 0x6e, 0x80, 0x00, 0x01, 0x78, 0xe4, 0x81, 0x00, 0x01, 0xa9, + 0xad, 0x80, 0x00, 0x07, 0xc6, 0x15, 0x00, 0x00, 0x6f, 0xf4, 0x13, 0xd2, + 0x80, 0x00, 0x0d, 0xc0, 0x96, 0x8c, 0x25, 0xe2, 0xb4, 0x26, 0x00, 0x00, + 0x8a, 0x58, 0x81, 0xf0, 0x12, 0x81, 0x00, 0x01, 0x78, 0xe0, 0x82, 0x00, + 0x09, 0xaa, 0xd3, 0x02, 0x00, 0x17, 0x13, 0x00, 0x00, 0x4c, 0xe0, 0x84, + 0x00, 0x02, 0x13, 0xf2, 0x1d, 0x83, 0x00, 0x01, 0x7c, 0xb4, 0x98, 0x00, + 0x09, 0xa9, 0xde, 0x36, 0x03, 0x4c, 0xff, 0x0c, 0x00, 0xbc, 0xa0, 0x80, + 0x00, 0x04, 0xd9, 0x88, 0x00, 0xe7, 0x8b, 0x82, 0x00, 0x0a, 0x38, 0xff, + 0x3b, 0x00, 0x00, 0x38, 0xff, 0x24, 0x11, 0xff, 0x65, 0x84, 0x00, 0x02, + 0x24, 0xff, 0x38, 0x81, 0x00, 0x0e, 0xb5, 0xb2, 0x0b, 0x23, 0xe2, 0x63, + 0x00, 0x00, 0xb0, 0xac, 0x00, 0x00, 0x34, 0xff, 0x24, 0x80, 0x00, 0x02, + 0x54, 0xff, 0x04, 0x83, 0x00, 0x09, 0x30, 0xff, 0x2c, 0x00, 0x00, 0xa8, + 0xb4, 0x84, 0xf3, 0x2f, 0x82, 0x00, 0x17, 0x54, 0xff, 0x04, 0x00, 0x00, + 0x50, 0xe8, 0x00, 0x68, 0xd0, 0x00, 0x7c, 0xbc, 0x00, 0xb0, 0xac, 0x00, + 0x00, 0x34, 0xff, 0x24, 0x2f, 0xff, 0x43, 0x80, 0x00, 0x04, 0xdd, 0x92, + 0x00, 0xbc, 0xa0, 0x80, 0x00, 0x0d, 0xda, 0x88, 0x38, 0xff, 0x3f, 0x00, + 0x00, 0x38, 0xff, 0x24, 0x00, 0x00, 0xbc, 0x9c, 0x83, 0x00, 0x0a, 0x08, + 0x61, 0xb0, 0xfa, 0xd7, 0x19, 0x00, 0x00, 0x48, 0xff, 0x11, 0x81, 0x00, + 0x1c, 0xb4, 0xa8, 0x00, 0x00, 0x3c, 0xff, 0x20, 0x00, 0x00, 0xca, 0xad, + 0x00, 0xba, 0x2f, 0x00, 0x01, 0xed, 0x50, 0xc2, 0x62, 0xbd, 0x8a, 0x51, + 0x00, 0x00, 0x09, 0xcd, 0xf7, 0x6d, 0x81, 0x00, 0x04, 0xca, 0xad, 0x00, + 0xba, 0x32, 0x80, 0x00, 0x02, 0x3e, 0xfc, 0x67, 0x82, 0x00, 0x02, 0x1c, + 0xbf, 0x53, 0x83, 0x00, 0x01, 0x4c, 0xb4, 0x83, 0x00, 0x0c, 0x0f, 0xdb, + 0x35, 0x00, 0x00, 0x1d, 0xcd, 0x00, 0x02, 0x88, 0xfb, 0xe4, 0x14, 0x80, + 0x00, 0x01, 0xe8, 0x5d, 0x99, 0x00, 0x1e, 0x40, 0xad, 0x00, 0x8c, 0x61, + 0x00, 0x00, 0x03, 0x73, 0x00, 0x68, 0x74, 0x3e, 0xfd, 0x04, 0x00, 0x1e, + 0xc2, 0x03, 0x50, 0xa2, 0x00, 0xbe, 0x9b, 0xb9, 0x00, 0x00, 0x74, 0xe8, + 0xd6, 0x10, 0x87, 0x00, 0x01, 0x7e, 0xe4, 0x85, 0x00, 0x01, 0x76, 0xe4, + 0x8a, 0x00, 0x01, 0x4c, 0xb4, 0x83, 0x00, 0x02, 0x1e, 0x24, 0x08, 0x8a, + 0x00, 0x02, 0x1e, 0x24, 0x08, 0x81, 0x00, 0x02, 0x24, 0xef, 0x0e, 0x80, + 0x00, 0x07, 0x01, 0xd1, 0x8a, 0x00, 0x00, 0x22, 0xff, 0x35, 0x80, 0x00, + 0x02, 0x30, 0xff, 0x2b, 0x80, 0x00, 0x02, 0x2d, 0xf1, 0x30, 0x82, 0x00, + 0x07, 0x9c, 0x1e, 0x00, 0x00, 0x24, 0xff, 0x4e, 0x0e, 0x81, 0x20, 0x0d, + 0xf6, 0x51, 0x18, 0x00, 0x2e, 0x59, 0x00, 0x00, 0x41, 0xff, 0x2d, 0x00, + 0xaf, 0x9f, 0x80, 0x00, 0x05, 0xc3, 0x8b, 0x00, 0x00, 0x85, 0xd6, 0x81, + 0x00, 0x02, 0x18, 0xff, 0x41, 0x80, 0x00, 0x09, 0xe4, 0x84, 0x00, 0xbb, + 0x03, 0x00, 0x00, 0x7c, 0xe3, 0x05, 0x80, 0x00, 0x02, 0x1e, 0x24, 0x08, + 0x82, 0x00, 0x02, 0x1e, 0x24, 0x08, 0x81, 0x00, 0x06, 0x01, 0x58, 0xe8, + 0xa4, 0x16, 0x00, 0x0a, 0x83, 0x1c, 0x06, 0x15, 0x00, 0x02, 0x63, 0xed, + 0x99, 0x11, 0x87, 0x00, 0x1b, 0x02, 0xcf, 0x2a, 0x98, 0xdf, 0x38, 0x88, + 0xf3, 0x1c, 0xda, 0x11, 0x00, 0x00, 0x34, 0xff, 0x43, 0x00, 0x50, 0xff, + 0x08, 0x00, 0x00, 0xea, 0x8c, 0x00, 0x8b, 0xe9, 0x08, 0x82, 0x00, 0x12, + 0xa8, 0xb4, 0x00, 0x00, 0x18, 0xfb, 0x50, 0x00, 0x3c, 0xff, 0x20, 0x00, + 0x00, 0x37, 0x68, 0x00, 0x00, 0xbc, 0x9c, 0x81, 0x00, 0x02, 0x05, 0xdf, + 0x97, 0x80, 0x00, 0x09, 0xf8, 0x64, 0x00, 0xd4, 0x84, 0x00, 0x00, 0x24, + 0xff, 0x38, 0x80, 0x00, 0x01, 0x7c, 0xe0, 0x80, 0x00, 0x0e, 0x40, 0xb5, + 0x00, 0x00, 0x5d, 0xfb, 0x02, 0x00, 0x00, 0x9c, 0xbc, 0x00, 0x2b, 0xf8, + 0x86, 0x80, 0x00, 0x01, 0xb8, 0xa0, 0x80, 0x00, 0x1c, 0xd8, 0x40, 0x9c, + 0x00, 0xb0, 0xd7, 0x00, 0x78, 0xa4, 0x00, 0xbc, 0x18, 0x00, 0x13, 0xf2, + 0xff, 0x24, 0x0a, 0xed, 0x5d, 0x00, 0x00, 0x04, 0xec, 0x5c, 0x00, 0x10, + 0xff, 0x4c, 0x81, 0x00, 0x11, 0x19, 0xfc, 0x4b, 0x00, 0x00, 0x01, 0xde, + 0x7c, 0x00, 0x88, 0xd0, 0x00, 0x00, 0xa7, 0xda, 0x03, 0x00, 0xeb, 0x80, + 0x00, 0x02, 0x02, 0xf2, 0x58, 0x80, 0x00, 0x01, 0x78, 0xe4, 0x81, 0x00, + 0x0c, 0x89, 0xd6, 0x01, 0x00, 0x02, 0xdc, 0x01, 0x00, 0x00, 0x27, 0xff, + 0x92, 0x8f, 0x80, 0x00, 0x0d, 0xa3, 0xe1, 0x60, 0x03, 0xf7, 0xe1, 0x0a, + 0x00, 0x1a, 0xc6, 0x02, 0x0e, 0xec, 0x89, 0x81, 0x00, 0x01, 0x78, 0xe0, + 0x81, 0x00, 0x0a, 0x32, 0xff, 0x4e, 0x00, 0x00, 0x78, 0x64, 0x00, 0x00, + 0x4c, 0xe0, 0x85, 0x00, 0x01, 0x98, 0x89, 0x83, 0x00, 0x01, 0x7c, 0xb4, + 0x98, 0x00, 0x12, 0xef, 0x80, 0x00, 0x00, 0x4e, 0xff, 0x0c, 0x00, 0xbc, + 0xa0, 0x00, 0x00, 0x10, 0xf8, 0x5b, 0x00, 0xb8, 0xcc, 0x01, 0x81, 0x00, + 0x0a, 0x1c, 0xff, 0x63, 0x00, 0x00, 0x65, 0xff, 0x24, 0x00, 0xdd, 0xae, + 0x84, 0x00, 0x02, 0x24, 0xff, 0x38, 0x81, 0x00, 0x0e, 0x16, 0xf1, 0xe1, + 0xd2, 0x6c, 0x01, 0x00, 0x00, 0xb0, 0xac, 0x00, 0x00, 0x34, 0xff, 0x24, + 0x80, 0x00, 0x02, 0x54, 0xff, 0x04, 0x83, 0x00, 0x0a, 0x30, 0xff, 0x2c, + 0x00, 0x00, 0xa8, 0xb4, 0x02, 0xb3, 0xe3, 0x1a, 0x81, 0x00, 0x30, 0x54, + 0xff, 0x04, 0x00, 0x00, 0x50, 0xe8, 0x00, 0x68, 0xd0, 0x00, 0x7c, 0xbc, + 0x00, 0xb0, 0xac, 0x00, 0x00, 0x34, 0xff, 0x24, 0x0c, 0xfa, 0x69, 0x00, + 0x00, 0x0d, 0xf9, 0x69, 0x00, 0xbc, 0xa0, 0x00, 0x00, 0x11, 0xf9, 0x5b, + 0x1c, 0xff, 0x6c, 0x00, 0x00, 0x7c, 0xff, 0x24, 0x00, 0x00, 0xbc, 0x9c, + 0x82, 0x00, 0x0b, 0x96, 0x0b, 0x00, 0x00, 0x24, 0xfc, 0x63, 0x00, 0x00, + 0x47, 0xff, 0x23, 0x81, 0x00, 0x0c, 0xac, 0xb9, 0x00, 0x00, 0x75, 0xff, + 0x20, 0x00, 0x00, 0x6b, 0xfa, 0x2e, 0xce, 0x80, 0x00, 0x0d, 0xc2, 0xaf, + 0x8d, 0x26, 0xf5, 0xba, 0x28, 0x00, 0x00, 0x95, 0x78, 0x68, 0xf9, 0x30, + 0x80, 0x00, 0x0d, 0x6b, 0xfa, 0x2e, 0xd2, 0x01, 0x00, 0x00, 0x19, 0xe8, + 0xa0, 0x01, 0x00, 0x33, 0x40, 0x80, 0x00, 0x01, 0x77, 0xaa, 0x83, 0x00, + 0x01, 0x4c, 0xb4, 0x83, 0x00, 0x01, 0x4a, 0xdb, 0x85, 0x00, 0x01, 0x10, + 0x05, 0x91, 0x00, 0x02, 0x62, 0x98, 0x08, 0x88, 0x00, 0x1e, 0x7f, 0x6e, + 0x00, 0xcc, 0x22, 0x00, 0x00, 0x04, 0xed, 0x00, 0x68, 0x74, 0x77, 0xd2, + 0x00, 0x00, 0xab, 0x37, 0x00, 0x22, 0xd0, 0x09, 0xdf, 0x3c, 0xfa, 0x43, + 0x00, 0x29, 0xf7, 0xca, 0x07, 0x87, 0x00, 0x02, 0x2e, 0xff, 0x36, 0x84, + 0x00, 0x01, 0xca, 0xa2, 0x8a, 0x00, 0x01, 0x4c, 0xb4, 0x83, 0x00, 0x02, + 0xd0, 0xff, 0x38, 0x8a, 0x00, 0x02, 0xd0, 0xff, 0x38, 0x81, 0x00, 0x01, + 0x92, 0x8e, 0x82, 0x00, 0x06, 0x59, 0xf1, 0x2d, 0x0a, 0xad, 0xbd, 0x01, + 0x80, 0x00, 0x07, 0x30, 0xff, 0x2b, 0x00, 0x00, 0x08, 0xd9, 0xba, 0x81, + 0x3c, 0x08, 0x23, 0x00, 0xbc, 0x58, 0x02, 0x0f, 0xad, 0xe6, 0x11, 0x82, + 0x00, 0x16, 0xf4, 0x38, 0x00, 0x00, 0x4c, 0xb6, 0x04, 0x17, 0xca, 0xb7, + 0x01, 0x00, 0x3b, 0xf6, 0x4e, 0x01, 0x44, 0xf6, 0x23, 0x00, 0x00, 0xca, + 0xa6, 0x82, 0x00, 0x0d, 0xc3, 0xc1, 0x14, 0x01, 0x5a, 0xf9, 0x2f, 0x00, + 0xe0, 0x3b, 0x02, 0x4c, 0xf4, 0x5e, 0x81, 0x00, 0x02, 0xd0, 0xff, 0x38, + 0x82, 0x00, 0x02, 0xd0, 0xff, 0x38, 0x83, 0x00, 0x03, 0x11, 0x9a, 0xec, + 0x58, 0x85, 0x00, 0x03, 0x1d, 0xc1, 0xd5, 0x3b, 0x83, 0x00, 0x02, 0x18, + 0x98, 0x51, 0x81, 0x00, 0x08, 0x47, 0xdb, 0x3a, 0x03, 0x0f, 0x18, 0x00, + 0x28, 0xbc, 0x80, 0x00, 0x26, 0x01, 0xe4, 0x8c, 0x00, 0x50, 0xff, 0x08, + 0x01, 0x5a, 0xff, 0x52, 0x00, 0x19, 0xe5, 0xb7, 0x25, 0x09, 0x43, 0x82, + 0x00, 0xa8, 0xb4, 0x00, 0x20, 0xc8, 0xc3, 0x03, 0x00, 0x3c, 0xff, 0x20, + 0x00, 0x00, 0x4c, 0x90, 0x00, 0x00, 0xbc, 0x9c, 0x82, 0x00, 0x0e, 0x57, + 0xfb, 0x75, 0x13, 0x18, 0xfa, 0x64, 0x00, 0xd4, 0x84, 0x00, 0x00, 0x24, + 0xff, 0x38, 0x80, 0x00, 0x01, 0x7c, 0xe0, 0x80, 0x00, 0x05, 0x40, 0xdb, + 0x14, 0x01, 0xa9, 0xcd, 0x80, 0x00, 0x0a, 0x9c, 0xbc, 0x00, 0x00, 0x6c, + 0xfe, 0x3f, 0x00, 0x00, 0xb8, 0xa0, 0x80, 0x00, 0x1c, 0xd8, 0x40, 0x9c, + 0x00, 0x46, 0x5b, 0x00, 0x78, 0xa4, 0x00, 0xbc, 0x18, 0x00, 0x00, 0x80, + 0xff, 0x24, 0x00, 0x70, 0xe3, 0x23, 0x07, 0x8d, 0xcf, 0x06, 0x00, 0x10, + 0xff, 0x4c, 0x82, 0x00, 0x16, 0x9e, 0xc4, 0x05, 0x00, 0x57, 0xea, 0x16, + 0x00, 0x88, 0xd0, 0x00, 0x00, 0x32, 0xff, 0x53, 0x00, 0xf8, 0x62, 0x08, + 0x02, 0x79, 0xe8, 0x12, 0x80, 0x00, 0x01, 0x78, 0xe4, 0x81, 0x00, 0x05, + 0x2c, 0xff, 0x5a, 0x01, 0x64, 0x99, 0x80, 0x00, 0x03, 0x01, 0xde, 0xfc, + 0x46, 0x80, 0x00, 0x0e, 0x85, 0xff, 0x33, 0x00, 0xce, 0xec, 0x00, 0x00, + 0x97, 0x4a, 0x00, 0x00, 0x73, 0xf7, 0x1b, 0x80, 0x00, 0x01, 0x78, 0xe0, + 0x81, 0x00, 0x0a, 0xb6, 0xc7, 0x01, 0x00, 0x00, 0x78, 0x64, 0x00, 0x00, + 0x4c, 0xe0, 0x85, 0x00, 0x02, 0x29, 0xee, 0x0b, 0x82, 0x00, 0x01, 0x7c, + 0xb4, 0x98, 0x00, 0x2b, 0xd4, 0xb8, 0x08, 0x25, 0xd7, 0xff, 0x0c, 0x00, + 0xbc, 0xb3, 0x20, 0x24, 0xa4, 0xdf, 0x06, 0x00, 0x3a, 0xfe, 0x96, 0x28, + 0x21, 0x66, 0x08, 0x00, 0xc7, 0xae, 0x02, 0x40, 0xc8, 0xff, 0x24, 0x00, + 0x53, 0xff, 0x81, 0x22, 0x23, 0x65, 0x3c, 0x00, 0x00, 0x24, 0xff, 0x38, + 0x81, 0x00, 0x04, 0xa0, 0x97, 0x12, 0x10, 0x0c, 0x80, 0x00, 0x06, 0xb0, + 0xac, 0x00, 0x00, 0x34, 0xff, 0x24, 0x80, 0x00, 0x02, 0x54, 0xff, 0x04, + 0x83, 0x00, 0x0b, 0x30, 0xff, 0x2c, 0x00, 0x00, 0xa8, 0xb4, 0x00, 0x0e, + 0xd6, 0xcd, 0x0b, 0x80, 0x00, 0x30, 0x54, 0xff, 0x04, 0x00, 0x00, 0x50, + 0xe8, 0x00, 0x68, 0xd0, 0x00, 0x7c, 0xbc, 0x00, 0xb0, 0xac, 0x00, 0x00, + 0x34, 0xff, 0x24, 0x00, 0x91, 0xd8, 0x18, 0x03, 0x8b, 0xe9, 0x0d, 0x00, + 0xbc, 0xb3, 0x20, 0x24, 0xa6, 0xdf, 0x06, 0x00, 0xc7, 0xcd, 0x3b, 0x7c, + 0xbe, 0xff, 0x24, 0x00, 0x00, 0xbc, 0x9c, 0x82, 0x00, 0x1c, 0xd4, 0x6b, + 0x1c, 0x01, 0x32, 0xfc, 0x37, 0x00, 0x00, 0x2e, 0xff, 0x69, 0x1f, 0x68, + 0x0b, 0x00, 0x83, 0xed, 0x11, 0x49, 0xd8, 0xff, 0x20, 0x00, 0x00, 0x13, + 0xfa, 0xd7, 0x72, 0x80, 0x00, 0x1e, 0x98, 0xfc, 0x50, 0x01, 0xea, 0xf6, + 0x05, 0x00, 0x50, 0xbe, 0x03, 0x01, 0xae, 0xd8, 0x0b, 0x00, 0x00, 0x13, + 0xfa, 0xd7, 0x77, 0x00, 0x00, 0x05, 0xc3, 0xd2, 0x0e, 0x04, 0x04, 0x63, + 0x78, 0x80, 0x00, 0x01, 0x8a, 0xc1, 0x83, 0x00, 0x01, 0x4c, 0xb4, 0x83, + 0x00, 0x02, 0x5c, 0xf1, 0x01, 0x89, 0x00, 0x02, 0x18, 0x98, 0x51, 0x8b, + 0x00, 0x02, 0xa4, 0xff, 0x0c, 0x88, 0x00, 0x10, 0xbd, 0x2f, 0x10, 0xe0, + 0x01, 0x00, 0x00, 0x04, 0xf0, 0xd3, 0xc0, 0xc7, 0xec, 0x49, 0x00, 0x48, + 0x9a, 0x80, 0x00, 0x0b, 0x8b, 0xe5, 0x6f, 0x00, 0x59, 0xda, 0xe4, 0xc2, + 0x62, 0xee, 0xec, 0x21, 0x87, 0x00, 0x01, 0xa7, 0xa7, 0x83, 0x00, 0x02, + 0x3b, 0xfa, 0x2b, 0x8a, 0x00, 0x01, 0x22, 0x4f, 0x83, 0x00, 0x02, 0xd0, + 0xff, 0x2d, 0x8a, 0x00, 0x02, 0xd0, 0xff, 0x38, 0x80, 0x00, 0x02, 0x10, + 0xf0, 0x21, 0x83, 0x00, 0x0e, 0x66, 0xd5, 0xe1, 0xa1, 0x0c, 0x00, 0x36, + 0xe4, 0xe4, 0xea, 0xff, 0xe9, 0xe4, 0xe4, 0x3f, 0x83, 0xff, 0x07, 0x94, + 0x00, 0x8b, 0xda, 0xe7, 0xe9, 0xb2, 0x2a, 0x81, 0x00, 0x0b, 0xbd, 0xe4, + 0xff, 0xeb, 0x84, 0x00, 0x3a, 0xd6, 0xea, 0xe0, 0x92, 0x0e, 0x80, 0x00, + 0x09, 0x4b, 0xcb, 0xe6, 0xc6, 0x3a, 0x00, 0x00, 0x11, 0xfe, 0x8d, 0x82, + 0x00, 0x0c, 0x17, 0x9f, 0xe4, 0xe4, 0xc5, 0x43, 0x00, 0x00, 0x84, 0xcf, + 0xe7, 0xc1, 0x4e, 0x82, 0x00, 0x02, 0xd0, 0xff, 0x38, 0x82, 0x00, 0x02, + 0xd0, 0xff, 0x2d, 0x85, 0x00, 0x01, 0x3c, 0x92, 0x85, 0x00, 0x02, 0x4c, + 0x7c, 0x06, 0x84, 0x00, 0x02, 0x28, 0xff, 0x88, 0x82, 0x00, 0x33, 0x3e, + 0xbd, 0xe5, 0xd6, 0x50, 0x00, 0xc6, 0xf4, 0x7a, 0x00, 0x00, 0xaf, 0xf9, + 0xf8, 0x8e, 0xed, 0xff, 0xe5, 0xee, 0xe1, 0x7c, 0x01, 0x00, 0x00, 0x1a, + 0xa8, 0xe3, 0xef, 0xb9, 0x41, 0x96, 0xf7, 0xf8, 0xeb, 0xdf, 0x96, 0x0a, + 0x00, 0x7c, 0xfa, 0xff, 0xf9, 0xf8, 0xf8, 0xfb, 0x90, 0x39, 0xe4, 0xf9, + 0xf6, 0xe4, 0x6b, 0x81, 0x00, 0x29, 0x46, 0xbe, 0xef, 0xe7, 0xa1, 0x1e, + 0x84, 0xfc, 0xf3, 0x2b, 0x00, 0xbe, 0xff, 0xe7, 0x00, 0xcf, 0xe4, 0xf2, + 0xfd, 0xe4, 0xe4, 0x44, 0x23, 0xa9, 0xd8, 0xe8, 0xce, 0x36, 0x00, 0x00, + 0x72, 0xf6, 0xf9, 0x81, 0x00, 0xa9, 0xff, 0xf6, 0x7d, 0xf8, 0xfe, 0xfd, + 0x80, 0xf8, 0x03, 0xe0, 0xc4, 0xf6, 0x2f, 0x80, 0x00, 0x17, 0xe7, 0xf6, + 0x90, 0xf9, 0xc7, 0x00, 0x00, 0x0f, 0xed, 0x24, 0x00, 0x00, 0x6b, 0xd4, + 0xe0, 0xa3, 0x10, 0x00, 0x5d, 0xe6, 0xff, 0xed, 0xe4, 0x36, 0x80, 0x00, + 0x1d, 0x0e, 0xad, 0xd9, 0xba, 0xdb, 0x38, 0x00, 0x5d, 0xf3, 0xfb, 0xa1, + 0x00, 0x00, 0xbb, 0xf5, 0x32, 0x70, 0xc7, 0xeb, 0xe3, 0xb8, 0x2c, 0x00, + 0x00, 0x39, 0xe4, 0xf2, 0xfd, 0xe4, 0x96, 0x80, 0x00, 0x04, 0x5b, 0xda, + 0xe3, 0xa5, 0x0e, 0x81, 0x00, 0x02, 0x95, 0xf6, 0x08, 0x80, 0x00, 0x19, + 0x67, 0xfe, 0x09, 0x00, 0xa2, 0xcf, 0x00, 0x96, 0xfd, 0xe5, 0x08, 0x00, + 0xe2, 0xff, 0xef, 0x0f, 0x00, 0xe1, 0xf2, 0xfd, 0xe4, 0x5a, 0x00, 0x00, + 0xfc, 0xfd, 0x80, 0xf8, 0x05, 0xfc, 0x64, 0x00, 0x00, 0x4c, 0xe0, 0x86, + 0x00, 0x01, 0xb7, 0x6a, 0x82, 0x00, 0x01, 0x7c, 0xb4, 0x98, 0x00, 0x0d, + 0x3c, 0xd7, 0xeb, 0xc2, 0x79, 0xff, 0xdf, 0x00, 0xbc, 0xff, 0xff, 0xf0, + 0xb3, 0x1d, 0x80, 0x00, 0x1f, 0x41, 0xc5, 0xf3, 0xed, 0xb2, 0x07, 0x00, + 0x24, 0xc9, 0xe1, 0x97, 0x3e, 0xff, 0xe5, 0x00, 0x00, 0x48, 0xc5, 0xf2, + 0xec, 0xb4, 0x28, 0x00, 0xe1, 0xe8, 0xff, 0xeb, 0xe4, 0xab, 0x00, 0x00, + 0x92, 0x81, 0xff, 0x11, 0xdd, 0x29, 0x7a, 0xf8, 0xf7, 0x64, 0x00, 0xce, + 0xff, 0xe8, 0x00, 0xe1, 0xe4, 0xee, 0xff, 0xe5, 0xe4, 0x7d, 0x81, 0x00, + 0x4a, 0x39, 0xff, 0x27, 0x00, 0x72, 0xf7, 0xf8, 0x56, 0x00, 0x66, 0xff, + 0xed, 0x08, 0xe1, 0xe4, 0xee, 0xff, 0xe5, 0xe4, 0x7d, 0xc2, 0xfe, 0x5d, + 0x68, 0xfb, 0x48, 0x7c, 0xf9, 0x96, 0xf8, 0xf7, 0x64, 0x00, 0xce, 0xff, + 0xe8, 0x00, 0x06, 0x89, 0xdf, 0xe4, 0xb8, 0x26, 0x00, 0x00, 0xbc, 0xf2, + 0xed, 0xf0, 0xb3, 0x1d, 0x00, 0x00, 0x24, 0xc9, 0xe9, 0x8c, 0x3a, 0xff, + 0x24, 0x72, 0xe4, 0xf9, 0xf6, 0xe4, 0xe4, 0x21, 0x00, 0x00, 0x6e, 0xca, + 0xef, 0xeb, 0xd3, 0x5e, 0x80, 0x00, 0x0d, 0x01, 0xa0, 0xf6, 0xe8, 0x9d, + 0x07, 0x00, 0x16, 0xc3, 0xec, 0xa4, 0x46, 0xff, 0xeb, 0x80, 0x00, 0x02, + 0xac, 0xfc, 0x18, 0x80, 0x00, 0x17, 0x6e, 0xff, 0x14, 0x00, 0xae, 0xd5, + 0x00, 0x88, 0xf8, 0xee, 0x00, 0x00, 0xda, 0xff, 0xed, 0x21, 0x00, 0x00, + 0xac, 0xfe, 0x1c, 0x00, 0x00, 0x28, 0x83, 0xff, 0x00, 0x78, 0x80, 0x00, + 0x01, 0xab, 0xa1, 0x83, 0x00, 0x01, 0x4c, 0xb4, 0x83, 0x00, 0x02, 0x39, + 0xff, 0x12, 0x89, 0x00, 0x02, 0x28, 0xff, 0x88, 0xa1, 0x00, 0x04, 0x03, + 0x35, 0xa7, 0xad, 0x26, 0x9a, 0x00, 0x03, 0x1e, 0xdf, 0x7b, 0x04, 0x80, + 0x00, 0x02, 0x32, 0xe5, 0x69, 0x93, 0x00, 0x02, 0x10, 0xfc, 0x0e, 0x90, + 0x00, 0x01, 0x74, 0xad, 0xdd, 0x00, 0x02, 0x10, 0xfc, 0x0e, 0xff, 0x00, + 0xa8, 0x00, 0x04, 0x14, 0x82, 0xe4, 0x6e, 0x18, 0xc7, 0x00, 0x01, 0x4c, + 0xe0, 0x86, 0x00, 0x02, 0x46, 0xd9, 0x02, 0x81, 0x00, 0x01, 0x7c, 0xb4, + 0x87, 0x00, 0x85, 0xf0, 0x00, 0x62, 0xb4, 0x00, 0x07, 0x12, 0xd0, 0x46, + 0x00, 0x01, 0x23, 0xf1, 0x7f, 0x8e, 0x00, 0x05, 0xc7, 0x03, 0x00, 0x53, + 0xff, 0x0a, 0xa7, 0x00, 0x01, 0xbc, 0xa0, 0x87, 0x00, 0x02, 0x38, 0xff, + 0x24, 0xb8, 0x00, 0x01, 0x35, 0xbc, 0x8b, 0x00, 0x01, 0xaa, 0x91, 0x83, + 0x00, 0x01, 0x4c, 0xb4, 0x83, 0x00, 0x02, 0x2e, 0xff, 0x13, 0xb2, 0x00, + 0x01, 0x2e, 0x33, 0x9c, 0x00, 0x07, 0x1b, 0xab, 0xa4, 0x00, 0x00, 0x44, + 0xd5, 0x54, 0x94, 0x00, 0x01, 0x90, 0x95, 0x90, 0x00, 0x02, 0x04, 0xe1, + 0x3c, 0xdd, 0x00, 0x01, 0x90, 0x95, 0xff, 0x00, 0xab, 0x00, 0x03, 0x4f, + 0xe3, 0xe1, 0x16, 0xc6, 0x00, 0x01, 0x4c, 0xe0, 0x86, 0x00, 0x02, 0x01, + 0xd5, 0x4b, 0x81, 0x00, 0x01, 0x7c, 0xb4, 0x87, 0x00, 0x85, 0x20, 0x00, + 0x0d, 0xb4, 0x00, 0x07, 0x55, 0xfd, 0x31, 0x02, 0x0d, 0x4e, 0xf9, 0x4b, + 0x8e, 0x00, 0x04, 0xe8, 0x36, 0x05, 0xb6, 0xb1, 0xa8, 0x00, 0x01, 0xbc, + 0xa0, 0x87, 0x00, 0x02, 0x38, 0xff, 0x24, 0xb8, 0x00, 0x01, 0x8f, 0x5d, + 0x8b, 0x00, 0x03, 0x65, 0xde, 0x24, 0x01, 0x81, 0x00, 0x01, 0x4c, 0xb4, + 0x82, 0x00, 0x02, 0x09, 0x96, 0xcc, 0xd6, 0x00, 0x04, 0x07, 0x00, 0x00, + 0x07, 0x01, 0x95, 0x00, 0x01, 0x2c, 0x02, 0x90, 0x00, 0x02, 0x1c, 0x75, + 0x01, 0xdd, 0x00, 0x01, 0x2c, 0x02, 0xff, 0x00, 0xac, 0x00, 0x01, 0x09, + 0x19, 0xc7, 0x00, 0x04, 0x48, 0xee, 0xe0, 0xe0, 0x5b, 0x84, 0x00, 0x07, + 0x41, 0x50, 0x00, 0x04, 0xe0, 0xe0, 0xe8, 0xa9, 0xc7, 0x00, 0x06, 0x0c, + 0x9d, 0xe7, 0xf1, 0xec, 0xc9, 0x5e, 0x8f, 0x00, 0x04, 0x90, 0xe6, 0xe8, + 0xb0, 0x17, 0xa7, 0x00, 0x04, 0x82, 0xf8, 0xf4, 0xe0, 0x46, 0x84, 0x00, + 0x03, 0xcc, 0xeb, 0xff, 0xe5, 0xb6, 0x00, 0x04, 0x1d, 0xe4, 0xf9, 0xe9, + 0x24, 0x8a, 0x00, 0x03, 0x03, 0x83, 0xe0, 0xc7, 0x81, 0x00, 0x01, 0x28, + 0x5d, 0x81, 0x00, 0x03, 0x6a, 0xec, 0xb6, 0x22, 0x90, 0x00, }; -static EG_EMBEDDED_IMAGE egemb_font = { 672, 12, EG_EIPIXELMODE_ALPHA, EG_EICOMPMODE_RLE, egemb_font_data, 3587 }; +static EG_EMBEDDED_IMAGE egemb_font = { 768, 14, EG_EIPIXELMODE_GRAY_ALPHA, EG_EICOMPMODE_RLE, egemb_luxi_mono_regular_14_data, 6982 }; diff --git a/libeg/libeg.h b/libeg/libeg.h index c81aaea..fab56ac 100644 --- a/libeg/libeg.h +++ b/libeg/libeg.h @@ -118,8 +118,12 @@ VOID egFillImageArea(IN OUT EG_IMAGE *CompImage, IN EG_PIXEL *Color); VOID egComposeImage(IN OUT EG_IMAGE *CompImage, IN EG_IMAGE *TopImage, IN UINTN PosX, IN UINTN PosY); +UINTN egGetFontHeight(VOID); +UINTN egGetFontCellWidth(VOID); +UINTN egComputeTextWidth(IN CHAR16 *Text); VOID egMeasureText(IN CHAR16 *Text, OUT UINTN *Width, OUT UINTN *Height); VOID egRenderText(IN CHAR16 *Text, IN OUT EG_IMAGE *CompImage, IN UINTN PosX, IN UINTN PosY, IN UINT8 BGBrightness); +VOID egLoadFont(IN CHAR16 *Filename); VOID egClearScreen(IN EG_PIXEL *Color); VOID egDrawImage(IN EG_IMAGE *Image, IN UINTN ScreenPosX, IN UINTN ScreenPosY); @@ -131,7 +135,6 @@ VOID egDrawImageArea(IN EG_IMAGE *Image, VOID egDisplayMessage(IN CHAR16 *Text, EG_PIXEL *BGColor); EG_IMAGE * egCopyScreen(VOID); VOID egScreenShot(VOID); -//UINT32 egGetGraphicsMode(VOID); BOOLEAN egSetTextMode(UINT32 RequestedMode); #endif /* __LIBEG_LIBEG_H__ */ diff --git a/libeg/screen.c b/libeg/screen.c index 378847e..9049d85 100644 --- a/libeg/screen.c +++ b/libeg/screen.c @@ -236,7 +236,6 @@ BOOLEAN egSetTextMode(UINT32 RequestedMode) { BOOLEAN ChangedIt = FALSE; if ((RequestedMode != DONT_CHANGE_TEXT_MODE) && (RequestedMode != ST->ConOut->Mode->Mode)) { -// SwitchToGraphics(); Status = refit_call2_wrapper(ST->ConOut->SetMode, ST->ConOut, RequestedMode); if (Status == EFI_SUCCESS) { ChangedIt = TRUE; @@ -431,12 +430,13 @@ VOID egDisplayMessage(IN CHAR16 *Text, EG_PIXEL *BGColor) { EG_IMAGE *Box; if ((Text != NULL) && (BGColor != NULL)) { - BoxWidth = (StrLen(Text) + 2) * FONT_CELL_WIDTH; + egMeasureText(Text, &BoxWidth, &BoxHeight); + BoxWidth += 14; + BoxHeight *= 2; if (BoxWidth > egScreenWidth) BoxWidth = egScreenWidth; - BoxHeight = 2 * FONT_CELL_HEIGHT; Box = egCreateFilledImage(BoxWidth, BoxHeight, FALSE, BGColor); - egRenderText(Text, Box, FONT_CELL_WIDTH, FONT_CELL_HEIGHT / 2, (BGColor->r + BGColor->g + BGColor->b) / 3); + egRenderText(Text, Box, 7, BoxHeight / 4, (BGColor->r + BGColor->g + BGColor->b) / 3); egDrawImage(Box, (egScreenWidth - BoxWidth) / 2, (egScreenHeight - BoxHeight) / 2); } // if non-NULL inputs } // VOID egDisplayMessage() diff --git a/libeg/text.c b/libeg/text.c index 2084356..6f2f405 100644 --- a/libeg/text.c +++ b/libeg/text.c @@ -38,22 +38,52 @@ //#include "../refind/screen.h" #include "egemb_font.h" -#define FONT_CELL_WIDTH (7) -#define FONT_CELL_HEIGHT (12) +#define FONT_NUM_CHARS 96 -static EG_IMAGE *BlackFontImage = NULL; -static EG_IMAGE *WhiteFontImage = NULL; +static EG_IMAGE *BaseFontImage = NULL; +static EG_IMAGE *DarkFontImage = NULL; +static EG_IMAGE *LightFontImage = NULL; + +static UINTN FontCellWidth = 7; // // Text rendering // +static VOID egPrepareFont() { + if (BaseFontImage == NULL) { + BaseFontImage = egPrepareEmbeddedImage(&egemb_font, TRUE); + } + if (BaseFontImage != NULL) + FontCellWidth = BaseFontImage->Width / FONT_NUM_CHARS; +} // VOID egPrepareFont(); + +UINTN egGetFontHeight(VOID) { + egPrepareFont(); + return BaseFontImage->Height; +} // UINTN egGetFontHeight() + +UINTN egGetFontCellWidth(VOID) { + return FontCellWidth; +} + +UINTN egComputeTextWidth(IN CHAR16 *Text) { + UINTN Width = 0; + + egPrepareFont(); + if (Text != NULL) + Width = FontCellWidth * StrLen(Text); + return Width; +} // UINTN egComputeTextWidth() + VOID egMeasureText(IN CHAR16 *Text, OUT UINTN *Width, OUT UINTN *Height) { + egPrepareFont(); + if (Width != NULL) - *Width = StrLen(Text) * FONT_CELL_WIDTH; + *Width = StrLen(Text) * FontCellWidth; if (Height != NULL) - *Height = FONT_CELL_HEIGHT; + *Height = BaseFontImage->Height; } VOID egRenderText(IN CHAR16 *Text, IN OUT EG_IMAGE *CompImage, IN UINTN PosX, IN UINTN PosY, IN UINT8 BGBrightness) @@ -65,33 +95,35 @@ VOID egRenderText(IN CHAR16 *Text, IN OUT EG_IMAGE *CompImage, IN UINTN PosX, IN UINTN TextLength; UINTN i, c; + egPrepareFont(); + // clip the text if (Text) TextLength = StrLen(Text); else TextLength = 0; - if (TextLength * FONT_CELL_WIDTH + PosX > CompImage->Width) - TextLength = (CompImage->Width - PosX) / FONT_CELL_WIDTH; + if (TextLength * FontCellWidth + PosX > CompImage->Width) + TextLength = (CompImage->Width - PosX) / FontCellWidth; if (BGBrightness < 128) { - if (WhiteFontImage == NULL) { - WhiteFontImage = egPrepareEmbeddedImage(&egemb_font, TRUE); - if (WhiteFontImage == NULL) + if (LightFontImage == NULL) { + LightFontImage = egCopyImage(BaseFontImage); + if (LightFontImage == NULL) return; - for (i = 0; i < (WhiteFontImage->Width * WhiteFontImage->Height); i++) { - WhiteFontImage->PixelData[i].r = 255 - WhiteFontImage->PixelData[i].r; - WhiteFontImage->PixelData[i].g = 255 - WhiteFontImage->PixelData[i].g; - WhiteFontImage->PixelData[i].b = 255 - WhiteFontImage->PixelData[i].b; + for (i = 0; i < (LightFontImage->Width * LightFontImage->Height); i++) { + LightFontImage->PixelData[i].r = 255 - LightFontImage->PixelData[i].r; + LightFontImage->PixelData[i].g = 255 - LightFontImage->PixelData[i].g; + LightFontImage->PixelData[i].b = 255 - LightFontImage->PixelData[i].b; } // for } // if - FontImage = WhiteFontImage; + FontImage = LightFontImage; } else { - if (BlackFontImage == NULL) - BlackFontImage = egPrepareEmbeddedImage(&egemb_font, TRUE); - if (BlackFontImage == NULL) + if (DarkFontImage == NULL) + DarkFontImage = egCopyImage(BaseFontImage); + if (DarkFontImage == NULL) return; - FontImage = BlackFontImage; + FontImage = DarkFontImage; } // if/else // render it @@ -106,11 +138,22 @@ VOID egRenderText(IN CHAR16 *Text, IN OUT EG_IMAGE *CompImage, IN UINTN PosX, IN c = 95; else c -= 32; - egRawCompose(BufferPtr, FontPixelData + c * FONT_CELL_WIDTH, - FONT_CELL_WIDTH, FONT_CELL_HEIGHT, + egRawCompose(BufferPtr, FontPixelData + c * FontCellWidth, + FontCellWidth, FontImage->Height, BufferLineOffset, FontLineOffset); - BufferPtr += FONT_CELL_WIDTH; + BufferPtr += FontCellWidth; } } +// Load a font bitmap from the specified file +VOID egLoadFont(IN CHAR16 *Filename) { + if (BaseFontImage) + egFreeImage(BaseFontImage); + + BaseFontImage = egLoadImage(SelfDir, Filename, TRUE); + if (BaseFontImage == NULL) + Print(L"Note: Font image file %s is invalid! Using default font!\n"); + egPrepareFont(); +} // BOOLEAN egLoadFont() + /* EOF */ diff --git a/refind.conf-sample b/refind.conf-sample index e5380f8..b7ccc2e 100644 --- a/refind.conf-sample +++ b/refind.conf-sample @@ -58,6 +58,17 @@ timeout 20 #selection_big selection-big.bmp #selection_small selection-small.bmp +# Set the font to be used for all textual displays in graphics mode. +# The font must be a PNG file with alpha channel transparency. It must +# contain ASCII characters 32-126 (space through tilde), inclusive, plus +# a glyph to be displayed in place of characters outside of this range, +# for a total of 96 glyphs. Only monospaced fonts are supported. Fonts +# may be of any size, although large fonts can produce display +# irregularities. +# The default is rEFInd's built-in font, Luxi Mono Regular 12 point. +# +#font myfont.png + # Use text mode only. When enabled, this option forces rEFInd into text mode. # Passing this option a "0" value causes graphics mode to be used. Pasing # it no value or any non-0 value causes text mode to be used. diff --git a/refind/config.c b/refind/config.c index 88388b5..63cfad6 100644 --- a/refind/config.c +++ b/refind/config.c @@ -511,6 +511,9 @@ VOID ReadConfig(CHAR16 *FileName) } } // for (graphics_on tokens) + } else if ((StriCmp(TokenList[0], L"font") == 0) && (TokenCount == 2)) { + egLoadFont(TokenList[1]); + } else if (StriCmp(TokenList[0], L"scan_all_linux_kernels") == 0) { if ((TokenCount >= 2) && (StriCmp(TokenList[1], L"0") == 0)) { GlobalConfig.ScanAllLinux = FALSE; diff --git a/refind/main.c b/refind/main.c index 3e1061a..d5ec6ce 100644 --- a/refind/main.c +++ b/refind/main.c @@ -128,7 +128,7 @@ static VOID AboutrEFInd(VOID) if (AboutMenu.EntryCount == 0) { AboutMenu.TitleImage = BuiltinIcon(BUILTIN_ICON_FUNC_ABOUT); - AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.6.5.5"); + AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.6.5.6"); AddMenuInfoLine(&AboutMenu, L""); AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2006-2010 Christoph Pfisterer"); AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2012 Roderick W. Smith"); @@ -2044,7 +2044,6 @@ efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) // further bootstrap (now with config available) MokProtocol = SecureBootSetup(); -// ScanVolumes(); LoadDrivers(); ScanForBootloaders(); ScanForTools(); diff --git a/refind/menu.c b/refind/menu.c index 071017b..8b072c1 100644 --- a/refind/menu.c +++ b/refind/menu.c @@ -71,8 +71,8 @@ static CHAR16 ArrowDown[2] = { ARROW_DOWN, 0 }; // Text and icon spacing constants.... #define TEXT_YMARGIN (2) -#define TEXT_XMARGIN (8) -#define TEXT_LINE_HEIGHT (FONT_CELL_HEIGHT + TEXT_YMARGIN * 2) +//#define TEXT_XMARGIN (8) +//#define TEXT_LINE_HEIGHT (FONT_CELL_HEIGHT + TEXT_YMARGIN * 2) #define TITLEICON_SPACING (16) #define ROW0_TILESIZE (144) @@ -363,6 +363,7 @@ static UINTN RunGenericMenu(IN REFIT_MENU_SCREEN *Screen, IN MENU_STYLE_FUNC Sty INTN ShortcutEntry; BOOLEAN HaveTimeout = FALSE; UINTN TimeoutCountdown = 0; + INTN PreviousTime = -1, CurrentTime; CHAR16 TimeoutMessage[256]; CHAR16 KeyAsString[2]; UINTN MenuExit; @@ -393,8 +394,12 @@ static UINTN RunGenericMenu(IN REFIT_MENU_SCREEN *Screen, IN MENU_STYLE_FUNC Sty } if (HaveTimeout) { - SPrint(TimeoutMessage, 255, L"%s in %d seconds", Screen->TimeoutText, (TimeoutCountdown + 5) / 10); - StyleFunc(Screen, &State, MENU_FUNCTION_PAINT_TIMEOUT, TimeoutMessage); + CurrentTime = (TimeoutCountdown + 5) / 10; + if (CurrentTime != PreviousTime) { + SPrint(TimeoutMessage, 255, L"%s in %d seconds", Screen->TimeoutText, CurrentTime); + StyleFunc(Screen, &State, MENU_FUNCTION_PAINT_TIMEOUT, TimeoutMessage); + PreviousTime = CurrentTime; + } } // read key press (and wait for it if applicable) @@ -405,7 +410,7 @@ static UINTN RunGenericMenu(IN REFIT_MENU_SCREEN *Screen, IN MENU_STYLE_FUNC Sty MenuExit = MENU_EXIT_TIMEOUT; break; } else if (HaveTimeout) { - refit_call1_wrapper(BS->Stall, 100000); + refit_call1_wrapper(BS->Stall, 100000); // Pause for 100 ms TimeoutCountdown--; } else refit_call3_wrapper(BS->WaitForEvent, 1, &ST->ConIn->WaitForKey, &index); @@ -632,17 +637,23 @@ static VOID TextMenuStyle(IN REFIT_MENU_SCREEN *Screen, IN SCROLL_STATE *State, // graphical generic style // +inline static UINTN TextLineHeight(VOID) { + return egGetFontHeight() + TEXT_YMARGIN * 2; +} // UINTN TextLineHeight() + // // Display a submenu // -// Display text with a solid background (MenuBackgroundPixel or SelectionBackgroundPixel) +// Display text with a solid background (MenuBackgroundPixel or SelectionBackgroundPixel). +// Indents text by one character and placed TEXT_YMARGIN pixels down from the +// specified XPos and YPos locations. static VOID DrawText(IN CHAR16 *Text, IN BOOLEAN Selected, IN UINTN FieldWidth, IN UINTN XPos, IN UINTN YPos) { EG_IMAGE *TextBuffer; EG_PIXEL Bg; - TextBuffer = egCreateImage(FieldWidth, TEXT_LINE_HEIGHT, FALSE); + TextBuffer = egCreateImage(FieldWidth, TextLineHeight(), FALSE); egFillImage(TextBuffer, &MenuBackgroundPixel); Bg = MenuBackgroundPixel; @@ -653,7 +664,7 @@ static VOID DrawText(IN CHAR16 *Text, IN BOOLEAN Selected, IN UINTN FieldWidth, } // render the text - egRenderText(Text, TextBuffer, TEXT_XMARGIN, TEXT_YMARGIN, (Bg.r + Bg.g + Bg.b) / 3); + egRenderText(Text, TextBuffer, egGetFontCellWidth(), TEXT_YMARGIN, (Bg.r + Bg.g + Bg.b) / 3); egDrawImageWithTransparency(TextBuffer, NULL, XPos, YPos, TextBuffer->Width, TextBuffer->Height); // BltImage(TextBuffer, XPos, YPos); } @@ -677,37 +688,46 @@ static UINT8 AverageBrightness(EG_IMAGE *Image) { return (UINT8) (Sum / (Image->Width * Image->Height * 3)); } // UINT8 AverageBrightness() -// Display text against the screen's background image +// Display text against the screen's background image. Special case: If Text is NULL +// or 0-length, clear the line. Does NOT indent the text or reposition it relative +// to the specified XPos and YPos values. static VOID DrawTextWithTransparency(IN CHAR16 *Text, IN UINTN XPos, IN UINTN YPos) { - UINTN TextWidth, TextPosX; - EG_IMAGE *TextBuffer; + UINTN TextWidth; + EG_IMAGE *TextBuffer = NULL; - TextBuffer = egCropImage(GlobalConfig.ScreenBackground, XPos, YPos, LAYOUT_TEXT_WIDTH, TEXT_LINE_HEIGHT); + if (Text == NULL) + Text = L""; - // render the text egMeasureText(Text, &TextWidth, NULL); - if (TextWidth > TextBuffer->Width) - TextPosX = 0; - else - TextPosX = (TextBuffer->Width - TextWidth) / 2; - egRenderText(Text, TextBuffer, TextPosX, 0, AverageBrightness(TextBuffer)); + if (TextWidth == 0) { + TextWidth = UGAWidth; + XPos = 0; + } + + TextBuffer = egCropImage(GlobalConfig.ScreenBackground, XPos, YPos, TextWidth, TextLineHeight()); + if (TextBuffer == NULL) { + Print(L"Error: NULL TextBuffer in DrawTextWithTransparency()\n"); + return; + } + + // render the text + egRenderText(Text, TextBuffer, 0, 0, AverageBrightness(TextBuffer)); egDrawImageWithTransparency(TextBuffer, NULL, XPos, YPos, TextBuffer->Width, TextBuffer->Height); + egFreeImage(TextBuffer); } // Compute the size & position of the window that will hold a subscreen's information. -static VOID ComputeSubScreenWindowSize(REFIT_MENU_SCREEN *Screen, IN SCROLL_STATE *State, UINTN *XPos, UINTN *YPos, UINTN *Width, UINTN *Height, UINTN *LineWidth) { +static VOID ComputeSubScreenWindowSize(REFIT_MENU_SCREEN *Screen, IN SCROLL_STATE *State, UINTN *XPos, UINTN *YPos, + UINTN *Width, UINTN *Height, UINTN *LineWidth) { UINTN i, ItemWidth, HintTop, BannerBottomEdge, TitleWidth; + UINTN FontCellWidth = egGetFontCellWidth(); + UINTN FontCellHeight = egGetFontHeight(); *Width = 20; *Height = 5; - TitleWidth = StrLen(Screen->Title); - if ((Screen->TitleImage) && (TitleWidth > (Screen->TitleImage->Width / FONT_CELL_WIDTH))) { - TitleWidth -= (Screen->TitleImage->Width / FONT_CELL_WIDTH); - } - if (TitleWidth > *Width) { - *Width = TitleWidth; - } + TitleWidth = egComputeTextWidth(Screen->Title); + for (i = 0; i < Screen->InfoLineCount; i++) { ItemWidth = StrLen(Screen->InfoLines[i]); if (*Width < ItemWidth) { @@ -722,43 +742,44 @@ static VOID ComputeSubScreenWindowSize(REFIT_MENU_SCREEN *Screen, IN SCROLL_STAT } (*Height)++; } - *Width = TEXT_XMARGIN * 2 + *Width * FONT_CELL_WIDTH; + *Width = (*Width + 2) * FontCellWidth; *LineWidth = *Width; if (Screen->TitleImage) - *Width += (Screen->TitleImage->Width + TITLEICON_SPACING * 2 + FONT_CELL_WIDTH); + *Width += (Screen->TitleImage->Width + TITLEICON_SPACING * 2 + FontCellWidth); else - *Width += FONT_CELL_WIDTH; + *Width += FontCellWidth; + + if (*Width < TitleWidth) + *Width = TitleWidth + 2 * FontCellWidth; // Keep it within the bounds of the screen, or 2/3 of the screen's width // for screens over 800 pixels wide if (*Width > UGAWidth) *Width = UGAWidth; - if ((*Width > (2 * UGAWidth) / 3) && (UGAWidth > 800)) - *Width = (2 * UGAWidth) / 3; *XPos = (UGAWidth - *Width) / 2; - HintTop = UGAHeight - (FONT_CELL_HEIGHT * 3); // top of hint text - *Height *= TEXT_LINE_HEIGHT; - if (Screen->TitleImage && (*Height < (Screen->TitleImage->Height + TEXT_LINE_HEIGHT * 4))) - *Height = Screen->TitleImage->Height + TEXT_LINE_HEIGHT * 4; + HintTop = UGAHeight - (FontCellHeight * 3); // top of hint text + *Height *= TextLineHeight(); + if (Screen->TitleImage && (*Height < (Screen->TitleImage->Height + TextLineHeight() * 4))) + *Height = Screen->TitleImage->Height + TextLineHeight() * 4; if (GlobalConfig.BannerBottomEdge >= HintTop) { // probably a full-screen image; treat it as an empty banner BannerBottomEdge = 0; } else { BannerBottomEdge = GlobalConfig.BannerBottomEdge; } - if (*Height > (HintTop - BannerBottomEdge - FONT_CELL_HEIGHT * 2)) { + if (*Height > (HintTop - BannerBottomEdge - FontCellHeight * 2)) { BannerBottomEdge = 0; } - if (*Height > (HintTop - BannerBottomEdge - FONT_CELL_HEIGHT * 2)) { + if (*Height > (HintTop - BannerBottomEdge - FontCellHeight * 2)) { // TODO: Implement scrolling in text screen. - *Height = (HintTop - BannerBottomEdge - FONT_CELL_HEIGHT * 2); + *Height = (HintTop - BannerBottomEdge - FontCellHeight * 2); } *YPos = ((UGAHeight - *Height) / 2); if (*YPos < BannerBottomEdge) - *YPos = BannerBottomEdge + FONT_CELL_HEIGHT + (HintTop - BannerBottomEdge - *Height) / 2; + *YPos = BannerBottomEdge + FontCellHeight + (HintTop - BannerBottomEdge - *Height) / 2; } // VOID ComputeSubScreenWindowSize() // Displays sub-menus @@ -766,37 +787,48 @@ static VOID GraphicsMenuStyle(IN REFIT_MENU_SCREEN *Screen, IN SCROLL_STATE *Sta { INTN i; UINTN ItemWidth; - static UINTN LineWidth, MenuWidth, MenuHeight, EntriesPosX, EntriesPosY, TimeoutPosY; + static UINTN LineWidth, MenuWidth, MenuHeight, EntriesPosX, TitlePosX, EntriesPosY, TimeoutPosY, CharWidth; EG_IMAGE *Window; EG_PIXEL *BackgroundPixel = &(GlobalConfig.ScreenBackground->PixelData[0]); + CharWidth = egGetFontCellWidth(); State->ScrollMode = SCROLL_MODE_TEXT; switch (Function) { case MENU_FUNCTION_INIT: InitScroll(State, Screen->EntryCount, 0); ComputeSubScreenWindowSize(Screen, State, &EntriesPosX, &EntriesPosY, &MenuWidth, &MenuHeight, &LineWidth); - TimeoutPosY = EntriesPosY + (Screen->EntryCount + 1) * TEXT_LINE_HEIGHT; + TimeoutPosY = EntriesPosY + (Screen->EntryCount + 1) * TextLineHeight(); // initial painting SwitchToGraphicsAndClear(); Window = egCreateFilledImage(MenuWidth, MenuHeight, FALSE, BackgroundPixel); egDrawImage(Window, EntriesPosX, EntriesPosY); - egMeasureText(Screen->Title, &ItemWidth, NULL); - DrawText(Screen->Title, FALSE, (StrLen(Screen->Title) + 2) * FONT_CELL_WIDTH, - EntriesPosX + (MenuWidth - ItemWidth) / 2, EntriesPosY += TEXT_LINE_HEIGHT); + ItemWidth = egComputeTextWidth(Screen->Title); + if (MenuWidth > ItemWidth) { + TitlePosX = EntriesPosX + (MenuWidth - ItemWidth) / 2 - CharWidth; + } else { + TitlePosX = EntriesPosX; + if (CharWidth > 0) { + i = MenuWidth / CharWidth - 2; + if (i > 0) + Screen->Title[i] = 0; + } // if + } // if/else + + DrawText(Screen->Title, FALSE, (StrLen(Screen->Title) + 2) * CharWidth, TitlePosX, EntriesPosY += TextLineHeight()); if (Screen->TitleImage) { - BltImageAlpha(Screen->TitleImage, EntriesPosX + TITLEICON_SPACING, EntriesPosY + TEXT_LINE_HEIGHT * 2, + BltImageAlpha(Screen->TitleImage, EntriesPosX + TITLEICON_SPACING, EntriesPosY + TextLineHeight() * 2, BackgroundPixel); EntriesPosX += (Screen->TitleImage->Width + TITLEICON_SPACING * 2); } - EntriesPosY += (TEXT_LINE_HEIGHT * 2); + EntriesPosY += (TextLineHeight() * 2); if (Screen->InfoLineCount > 0) { for (i = 0; i < (INTN)Screen->InfoLineCount; i++) { DrawText(Screen->InfoLines[i], FALSE, LineWidth, EntriesPosX, EntriesPosY); - EntriesPosY += TEXT_LINE_HEIGHT; + EntriesPosY += TextLineHeight(); } - EntriesPosY += TEXT_LINE_HEIGHT; // also add a blank line + EntriesPosY += TextLineHeight(); // also add a blank line } break; @@ -808,22 +840,24 @@ static VOID GraphicsMenuStyle(IN REFIT_MENU_SCREEN *Screen, IN SCROLL_STATE *Sta case MENU_FUNCTION_PAINT_ALL: for (i = 0; i <= State->MaxIndex; i++) { DrawText(Screen->Entries[i]->Title, (i == State->CurrentSelection), LineWidth, EntriesPosX, - EntriesPosY + i * TEXT_LINE_HEIGHT); + EntriesPosY + i * TextLineHeight()); } if (!(GlobalConfig.HideUIFlags & HIDEUI_FLAG_HINTS)) { if ((Screen->Hint1 != NULL) && (StrLen(Screen->Hint1) > 0)) - DrawTextWithTransparency(Screen->Hint1, (UGAWidth - LAYOUT_TEXT_WIDTH) / 2, UGAHeight - (FONT_CELL_HEIGHT * 3)); + DrawTextWithTransparency(Screen->Hint1, (UGAWidth - egComputeTextWidth(Screen->Hint1)) / 2, + UGAHeight - (egGetFontHeight() * 3)); if ((Screen->Hint2 != NULL) && (StrLen(Screen->Hint2) > 0)) - DrawTextWithTransparency(Screen->Hint2, (UGAWidth - LAYOUT_TEXT_WIDTH) / 2, UGAHeight - (FONT_CELL_HEIGHT * 2)); + DrawTextWithTransparency(Screen->Hint2, (UGAWidth - egComputeTextWidth(Screen->Hint2)) / 2, + UGAHeight - (egGetFontHeight() * 2)); } // if break; case MENU_FUNCTION_PAINT_SELECTION: // redraw selection cursor DrawText(Screen->Entries[State->PreviousSelection]->Title, FALSE, LineWidth, - EntriesPosX, EntriesPosY + State->PreviousSelection * TEXT_LINE_HEIGHT); + EntriesPosX, EntriesPosY + State->PreviousSelection * TextLineHeight()); DrawText(Screen->Entries[State->CurrentSelection]->Title, TRUE, LineWidth, - EntriesPosX, EntriesPosY + State->CurrentSelection * TEXT_LINE_HEIGHT); + EntriesPosX, EntriesPosY + State->CurrentSelection * TextLineHeight()); break; case MENU_FUNCTION_PAINT_TIMEOUT: @@ -871,12 +905,16 @@ static VOID PaintAll(IN REFIT_MENU_SCREEN *Screen, IN SCROLL_STATE *State, UINTN } } if (!(GlobalConfig.HideUIFlags & HIDEUI_FLAG_LABEL)) + DrawTextWithTransparency(L"", 0, textPosY); DrawTextWithTransparency(Screen->Entries[State->CurrentSelection]->Title, - (UGAWidth - LAYOUT_TEXT_WIDTH) >> 1, textPosY); + (UGAWidth - egComputeTextWidth(Screen->Entries[State->CurrentSelection]->Title)) >> 1, + textPosY); if (!(GlobalConfig.HideUIFlags & HIDEUI_FLAG_HINTS)) { - DrawTextWithTransparency(Screen->Hint1, (UGAWidth - LAYOUT_TEXT_WIDTH) / 2, UGAHeight - (FONT_CELL_HEIGHT * 3)); - DrawTextWithTransparency(Screen->Hint2, (UGAWidth - LAYOUT_TEXT_WIDTH) / 2, UGAHeight - (FONT_CELL_HEIGHT * 2)); + DrawTextWithTransparency(Screen->Hint1, (UGAWidth - egComputeTextWidth(Screen->Hint1)) / 2, + UGAHeight - (egGetFontHeight() * 3)); + DrawTextWithTransparency(Screen->Hint2, (UGAWidth - egComputeTextWidth(Screen->Hint2)) / 2, + UGAHeight - (egGetFontHeight() * 2)); } // if } // static VOID PaintAll() @@ -903,9 +941,12 @@ static VOID PaintSelection(IN REFIT_MENU_SCREEN *Screen, IN SCROLL_STATE *State, } // if/else DrawMainMenuEntry(Screen->Entries[State->PreviousSelection], FALSE, itemPosX[XSelectPrev], YPosPrev); DrawMainMenuEntry(Screen->Entries[State->CurrentSelection], TRUE, itemPosX[XSelectCur], YPosCur); - if (!(GlobalConfig.HideUIFlags & HIDEUI_FLAG_LABEL)) + if (!(GlobalConfig.HideUIFlags & HIDEUI_FLAG_LABEL)) { + DrawTextWithTransparency(L"", 0, textPosY); DrawTextWithTransparency(Screen->Entries[State->CurrentSelection]->Title, - (UGAWidth - LAYOUT_TEXT_WIDTH) >> 1, textPosY); + (UGAWidth - egComputeTextWidth(Screen->Entries[State->CurrentSelection]->Title)) >> 1, + textPosY); + } } else { // Current selection not visible; must redraw the menu.... MainMenuStyle(Screen, State, MENU_FUNCTION_PAINT_ALL, NULL); } @@ -1041,8 +1082,10 @@ VOID MainMenuStyle(IN REFIT_MENU_SCREEN *Screen, IN SCROLL_STATE *State, IN UINT break; case MENU_FUNCTION_PAINT_TIMEOUT: - if (!(GlobalConfig.HideUIFlags & HIDEUI_FLAG_LABEL)) - DrawTextWithTransparency(ParamText, (UGAWidth - LAYOUT_TEXT_WIDTH) >> 1, textPosY + TEXT_LINE_HEIGHT); + if (!(GlobalConfig.HideUIFlags & HIDEUI_FLAG_LABEL)) { + DrawTextWithTransparency(L"", 0, textPosY + TextLineHeight()); + DrawTextWithTransparency(ParamText, (UGAWidth - egComputeTextWidth(ParamText)) >> 1, textPosY + TextLineHeight()); + } break; } diff --git a/refind/screen.c b/refind/screen.c index cd2af67..fd29f5c 100644 --- a/refind/screen.c +++ b/refind/screen.c @@ -394,7 +394,6 @@ BOOLEAN CheckFatalError(IN EFI_STATUS Status, IN CHAR16 *where) if (!EFI_ERROR(Status)) return FALSE; -// StatusToString(ErrorName, Status); gST->ConOut->SetAttribute (gST->ConOut, ATTR_ERROR); Print(L"Fatal Error: %r %s\n", Status, where); gST->ConOut->SetAttribute (gST->ConOut, ATTR_BASIC); @@ -407,12 +406,9 @@ BOOLEAN CheckFatalError(IN EFI_STATUS Status, IN CHAR16 *where) BOOLEAN CheckError(IN EFI_STATUS Status, IN CHAR16 *where) { -// CHAR16 ErrorName[64]; - if (!EFI_ERROR(Status)) return FALSE; -// StatusToString(ErrorName, Status); gST->ConOut->SetAttribute (gST->ConOut, ATTR_ERROR); Print(L"Error: %r %s\n", Status, where); gST->ConOut->SetAttribute (gST->ConOut, ATTR_BASIC); diff --git a/refind/screen.h b/refind/screen.h index 2647fc7..f17e549 100644 --- a/refind/screen.h +++ b/refind/screen.h @@ -60,11 +60,11 @@ #define ATTR_SCROLLARROW (EFI_LIGHTGREEN | EFI_BACKGROUND_BLACK) //#define LAYOUT_TEXT_WIDTH (512) -#define LAYOUT_TEXT_WIDTH (425) +//#define LAYOUT_TEXT_WIDTH (425) #define LAYOUT_BANNER_YGAP 32 -#define FONT_CELL_WIDTH (7) -#define FONT_CELL_HEIGHT (12) +//#define FONT_CELL_WIDTH (7) +//#define FONT_CELL_HEIGHT (12) extern UINTN ConWidth; extern UINTN ConHeight;