diff --git a/Makefile b/Makefile index c9bcaa7..05f39ad 100644 --- a/Makefile +++ b/Makefile @@ -129,13 +129,14 @@ iso: endif +run: GC_FLAGS += -B run: iso - qemu-system-$(ARCH) -cdrom $(iso_target) -d int,cpu_reset -no-reboot + qemu-system-$(ARCH) -cdrom $(iso_target) -vga std -d int,cpu_reset -no-reboot # When building gdb target disable optimizations (-N) and inlining (l) of Go code gdb: GC_FLAGS += -N -l gdb: iso - qemu-system-$(ARCH) -M accel=tcg -s -S -cdrom $(iso_target) & + qemu-system-$(ARCH) -M accel=tcg -vga std -s -S -cdrom $(iso_target) & sleep 1 gdb \ -ex 'add-auto-load-safe-path $(pwd)' \ diff --git a/src/arch/x86_64/asm/multiboot_header.s b/src/arch/x86_64/asm/multiboot_header.s index c4406e1..f0b90fa 100644 --- a/src/arch/x86_64/asm/multiboot_header.s +++ b/src/arch/x86_64/asm/multiboot_header.s @@ -24,14 +24,16 @@ header_start: dd 12 ; size dd 0x3 ; kernel supports EGA console - ; Define graphics mode tag - ;align 8 ; tags should be 64-bit aligned - ;dw 5 ; type - ;dw 0 ; flags - ;dd 20 ; size - ;dd 80 ; width (pixels or chars) - ;dd 25 ; height (pixels or chars) - ;dd 0 ; bpp (0 for text mode + ; Define graphics mode tag to advise the bootloader that the kernel + ; supports framebuffer console. Ssetting 0 for width, height and bpp + ; indicates no particular mode preference. + align 8 ; tags should be 64-bit aligned + dw 5 ; type + dw 0 ; flags + dd 20 ; size + dd 0 ; width (pixels or chars) + dd 0 ; height (pixels or chars) + dd 0 ; bpp (0 for text mode) ; According to page 6 of the spec, the tag list is terminated by a tag with ; type 0 and size 8 diff --git a/src/arch/x86_64/script/grub.cfg b/src/arch/x86_64/script/grub.cfg index e2e169f..01afb15 100644 --- a/src/arch/x86_64/script/grub.cfg +++ b/src/arch/x86_64/script/grub.cfg @@ -1,7 +1,32 @@ -set timeout=0 -set default=0 +set timeout=3 +set default=1 -menuentry "gopheros" { +menuentry "gopheros (800x600)" { multiboot2 /boot/kernel.bin + set gfxpayload=800x600 + boot +} + +menuentry "gopheros (1024x768)" { + multiboot2 /boot/kernel.bin + set gfxpayload=1024x768 + boot +} + +menuentry "gopheros (1280x1024)" { + multiboot2 /boot/kernel.bin + set gfxpayload=1280x1024 + boot +} + +menuentry "gopheros (2560x1600)" { + multiboot2 /boot/kernel.bin + set gfxpayload=2560x1600x16 + boot +} + +menuentry "gopheros (text-mode)" { + multiboot2 /boot/kernel.bin + set gfxpayload=text boot } diff --git a/src/gopheros/device/tty/vt.go b/src/gopheros/device/tty/vt.go index 9acadf3..71b85bf 100644 --- a/src/gopheros/device/tty/vt.go +++ b/src/gopheros/device/tty/vt.go @@ -61,7 +61,7 @@ func (t *VT) AttachTo(cons console.Device) { } t.cons = cons - t.viewportWidth, t.viewportHeight = cons.Dimensions() + t.viewportWidth, t.viewportHeight = cons.Dimensions(console.Characters) t.viewportY = 0 t.defaultFg, t.defaultBg = cons.DefaultColors() t.curFg, t.curBg = t.defaultFg, t.defaultBg diff --git a/src/gopheros/device/tty/vt_test.go b/src/gopheros/device/tty/vt_test.go index 066d25f..856e563 100644 --- a/src/gopheros/device/tty/vt_test.go +++ b/src/gopheros/device/tty/vt_test.go @@ -366,7 +366,7 @@ func newMockConsole(w, h uint32) *mockConsole { } } -func (cons *mockConsole) Dimensions() (uint32, uint32) { +func (cons *mockConsole) Dimensions(_ console.Dimension) (uint32, uint32) { return cons.width, cons.height } diff --git a/src/gopheros/device/video/console/device.go b/src/gopheros/device/video/console/device.go index 8956396..53c5506 100644 --- a/src/gopheros/device/video/console/device.go +++ b/src/gopheros/device/video/console/device.go @@ -1,6 +1,10 @@ package console -import "image/color" +import ( + "gopheros/device/video/console/font" + "gopheros/device/video/console/logo" + "image/color" +) // ScrollDir defines a scroll direction. type ScrollDir uint8 @@ -11,11 +15,25 @@ const ( ScrollDirDown ) +// Dimension defines the types of dimensions that can be queried off a device. +type Dimension uint8 + +const ( + // Characters describes the number of characters in + // the console depending on the currently active + // font. + Characters Dimension = iota + + // Pixels describes the number of pixels in the console framebuffer. + Pixels +) + // The Device interface is implemented by objects that can function as system // consoles. type Device interface { - // Dimensions returns the width and height of the console in characters. - Dimensions() (uint32, uint32) + // Pixel returns the width and height of the console + // using a particual dimension. + Dimensions(Dimension) (uint32, uint32) // DefaultColors returns the default foreground and background colors // used by this console. @@ -43,3 +61,19 @@ type Device interface { // supported colors should be a no-op. SetPaletteColor(uint8, color.RGBA) } + +// FontSetter is an interface implemented by console devices that +// support loadable bitmap fonts. +// +// SetFont selects a bitmap font to be used by the console. +type FontSetter interface { + SetFont(*font.Font) +} + +// LogoSetter is an interface implemented by console devices that +// support drawing of logo images. +// +// SetLogo selects the logo to be drawn by the console. +type LogoSetter interface { + SetLogo(*logo.Image) +} diff --git a/src/gopheros/device/video/console/font/font.go b/src/gopheros/device/video/console/font/font.go new file mode 100644 index 0000000..9a7c94c --- /dev/null +++ b/src/gopheros/device/video/console/font/font.go @@ -0,0 +1,97 @@ +package font + +var ( + // The list of available fonts. + availableFonts []*Font +) + +// Font describes a bitmap font that can be used by a console device. +type Font struct { + // The name of the font + Name string + + // The width of each glyph in pixels. + GlyphWidth uint32 + + // The height of each glyph in pixels. + GlyphHeight uint32 + + // The recommended console resolution for this font. + RecommendedWidth uint32 + RecommendedHeight uint32 + + // Font priority (lower is better). When auto-detecting a font to use, the font with + // the lowest priority will be preferred + Priority uint32 + + // The number of bytes describing a row in a glyph. + BytesPerRow uint32 + + // The font bitmap. Each character consists of BytesPerRow * Height + // bytes where each bit indicates whether a pixel should be set to the + // foreground or the background color. + Data []byte +} + +// FindByName looks up a font instance by name. If the font is not found then +// the function returns nil. +func FindByName(name string) *Font { + for _, f := range availableFonts { + if f.Name == name { + return f + } + } + + return nil +} + +// BestFit returns the best font from the available font list given the +// specified console dimensions. If multiple fonts match the dimension criteria +// then their priority attribute is used to select one. +// +// The algorithm for selecting the best font is the following: +// For each font: +// - calculate the sum of abs differences between the font recommended dimension +// and the console dimensions. +// - if the font score is lower than the current best font's score then the +// font becomes the new best font. +// - if the font score is equal to the current best font's score then the +// font with the lowest priority becomes the new best font. +func BestFit(consoleWidth, consoleHeight uint32) *Font { + var ( + best *Font + bestDelta uint32 + absDeltaW, absDeltaH, absDelta uint32 + ) + + for _, f := range availableFonts { + if f.RecommendedWidth > consoleWidth { + absDeltaW = f.RecommendedWidth - consoleWidth + } else { + absDeltaW = consoleWidth - f.RecommendedWidth + } + + if f.RecommendedHeight > consoleHeight { + absDeltaH = f.RecommendedHeight - consoleHeight + } else { + absDeltaH = consoleHeight - f.RecommendedHeight + } + + absDelta = absDeltaW + absDeltaH + + if best == nil { + best = f + bestDelta = absDelta + continue + } + + if best.Priority < f.Priority || absDelta > bestDelta { + continue + } + + best = f + bestDelta = absDelta + } + + return best +} diff --git a/src/gopheros/device/video/console/font/font_test.go b/src/gopheros/device/video/console/font/font_test.go new file mode 100644 index 0000000..c2c8fd3 --- /dev/null +++ b/src/gopheros/device/video/console/font/font_test.go @@ -0,0 +1,59 @@ +package font + +import "testing" + +func TestFindByName(t *testing.T) { + defer func(origList []*Font) { + availableFonts = origList + }(availableFonts) + + availableFonts = []*Font{ + &Font{Name: "foo"}, + &Font{Name: "bar"}, + } + + exp := availableFonts[1] + if got := FindByName("bar"); got != exp { + t.Fatalf("expected to get font: %v; got %v", exp, got) + } + + if got := FindByName("not-existing-font"); got != nil { + t.Fatalf("expected to get nil for a font that does not exist; got %v", got) + } +} + +func TestBestFit(t *testing.T) { + defer func(origList []*Font) { + availableFonts = origList + }(availableFonts) + + availableFonts = []*Font{ + &Font{Name: "retina1", RecommendedWidth: 2560, RecommendedHeight: 1600, Priority: 2}, + &Font{Name: "retina2", RecommendedWidth: 2560, RecommendedHeight: 1600, Priority: 1}, + &Font{Name: "default", RecommendedWidth: 800, RecommendedHeight: 600, Priority: 0}, + &Font{Name: "standard", RecommendedWidth: 1024, RecommendedHeight: 768, Priority: 0}, + } + + specs := []struct { + consW, consH uint32 + expName string + }{ + {320, 200, "default"}, + {800, 600, "default"}, + {1024, 768, "standard"}, + {3000, 3000, "retina2"}, + {2500, 600, "retina2"}, + } + + for specIndex, spec := range specs { + got := BestFit(spec.consW, spec.consH) + if got == nil { + t.Errorf("[spec %d] unable to find a font", specIndex) + continue + } + + if got.Name != spec.expName { + t.Errorf("[spec %d] expected to get font %q; got %q", specIndex, spec.expName, got.Name) + } + } +} diff --git a/src/gopheros/device/video/console/font/terminus_10x18.go b/src/gopheros/device/video/console/font/terminus_10x18.go new file mode 100644 index 0000000..021bb9d --- /dev/null +++ b/src/gopheros/device/video/console/font/terminus_10x18.go @@ -0,0 +1,1300 @@ +package font + +var ( + // terminus10x18 is based on the bold 10x18 terminus + // font which is available at: http://terminus-font.sourceforge.net + terminus10x18 = &Font{ + Name: "terminus10x18", + GlyphWidth: 10, + GlyphHeight: 18, + RecommendedWidth: 1980, + RecommendedHeight: 1024, + BytesPerRow: 2, + Data: []byte{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x80, 0x40, 0x80, 0x40, 0xb3, 0x40, 0xb3, 0x40, + 0x80, 0x40, 0x80, 0x40, 0xbf, 0x40, 0x9e, 0x40, + 0x80, 0x40, 0x80, 0x40, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 1 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0xff, 0xc0, 0xff, 0xc0, 0xcc, 0xc0, 0xcc, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0xc0, 0xc0, 0xe1, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 2 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x80, 0xf3, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0x7f, 0x80, 0x3f, 0x00, + 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 3 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x1e, 0x00, 0x3f, 0x00, 0x7f, 0x80, + 0xff, 0xc0, 0xff, 0xc0, 0x7f, 0x80, 0x3f, 0x00, + 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 4 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x1e, 0x00, 0x0c, 0x00, + 0x6d, 0x80, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0x6d, 0x80, 0x0c, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 5 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x1e, 0x00, 0x3f, 0x00, 0x7f, 0x80, + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0x6d, 0x80, + 0x0c, 0x00, 0x0c, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 6 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x1e, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 7 */ + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xf3, 0xc0, + 0xe1, 0xc0, 0xe1, 0xc0, 0xf3, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, /* 8 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x33, 0x00, + 0x21, 0x00, 0x21, 0x00, 0x33, 0x00, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 9 */ + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0xe1, 0xc0, 0xcc, 0xc0, + 0xde, 0xc0, 0xde, 0xc0, 0xcc, 0xc0, 0xe1, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, /* 10 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, + 0x03, 0x80, 0x06, 0x80, 0x0c, 0x80, 0x3e, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 11 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x3f, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x7f, 0x80, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 12 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, + 0x31, 0x80, 0x31, 0x80, 0x3f, 0x80, 0x30, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x30, 0x00, 0xf0, 0x00, 0xe0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 13 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x7f, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x63, 0x80, 0xe3, 0x00, 0xc0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 14 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0xcc, 0xc0, 0x6d, 0x80, 0x3f, 0x00, 0x1e, 0x00, + 0xf3, 0xc0, 0x1e, 0x00, 0x3f, 0x00, 0x6d, 0x80, + 0xcc, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 15 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x00, 0xf0, 0x00, 0xfc, 0x00, 0xff, 0x00, + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0x00, 0xfc, 0x00, + 0xf0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 16 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x03, 0xc0, 0x0f, 0xc0, 0x3f, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0x3f, 0xc0, 0x0f, 0xc0, + 0x03, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 17 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x1e, 0x00, 0x3f, 0x00, 0x6d, 0x80, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x6d, 0x80, + 0x3f, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 18 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 19 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, + 0x6d, 0x80, 0x6d, 0x80, 0x6d, 0x80, 0x6d, 0x80, + 0x6d, 0x80, 0x3d, 0x80, 0x0d, 0x80, 0x0d, 0x80, + 0x0d, 0x80, 0x0d, 0x80, 0x0d, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 20 */ + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x33, 0x00, + 0x30, 0x00, 0x1c, 0x00, 0x36, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x1b, 0x00, 0x0e, 0x00, + 0x03, 0x00, 0x33, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 21 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0x80, 0xff, 0x80, + 0xff, 0x80, 0xff, 0x80, 0xff, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 22 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x1e, 0x00, 0x3f, 0x00, 0x6d, 0x80, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x6d, 0x80, 0x3f, 0x00, + 0x1e, 0x00, 0x0c, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 23 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x1e, 0x00, 0x3f, 0x00, 0x6d, 0x80, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 24 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x6d, 0x80, + 0x3f, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 25 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x03, 0x00, + 0xff, 0x80, 0xff, 0x80, 0x03, 0x00, 0x06, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 26 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xff, 0x80, 0xff, 0x80, 0x60, 0x00, 0x30, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 27 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x7f, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 28 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x12, 0x00, 0x33, 0x00, 0x61, 0x80, + 0xff, 0xc0, 0xff, 0xc0, 0x61, 0x80, 0x33, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 29 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x7f, 0x80, 0x7f, 0x80, + 0xff, 0xc0, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 30 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xc0, 0xff, 0xc0, 0x7f, 0x80, 0x7f, 0x80, + 0x3f, 0x00, 0x3f, 0x00, 0x1e, 0x00, 0x1e, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 31 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 32 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 33 */ + 0x00, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 34 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x7f, 0x80, 0x33, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x7f, 0x80, + 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 35 */ + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x3f, 0x00, 0x6d, 0x80, 0x6c, 0x00, 0x6c, 0x00, + 0x6c, 0x00, 0x3f, 0x00, 0x0d, 0x80, 0x0d, 0x80, + 0x0d, 0x80, 0x6d, 0x80, 0x3f, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, /* 36 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x00, + 0x53, 0x00, 0x76, 0x00, 0x06, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, + 0x37, 0x00, 0x65, 0x00, 0x67, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 37 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, + 0x66, 0x00, 0x66, 0x00, 0x66, 0x00, 0x3c, 0x00, + 0x39, 0x80, 0x6d, 0x80, 0xc7, 0x00, 0xc3, 0x00, + 0xc3, 0x00, 0x67, 0x80, 0x3d, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 38 */ + 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 39 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 40 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 41 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x63, 0x00, 0x36, 0x00, 0x1c, 0x00, + 0xff, 0x80, 0x1c, 0x00, 0x36, 0x00, 0x63, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 42 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x7f, 0x80, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 43 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 44 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 45 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 46 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, + 0x30, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 47 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x63, 0x80, 0x67, 0x80, + 0x6d, 0x80, 0x79, 0x80, 0x71, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 48 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x1c, 0x00, 0x3c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 49 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x18, 0x00, + 0x30, 0x00, 0x60, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 50 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x1f, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 51 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, + 0x03, 0x80, 0x07, 0x80, 0x0d, 0x80, 0x19, 0x80, + 0x31, 0x80, 0x61, 0x80, 0x61, 0x80, 0x7f, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 52 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7f, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 53 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, + 0x30, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7f, 0x00, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 54 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x01, 0x80, 0x03, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 55 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x3f, 0x00, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 56 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x3f, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x03, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 57 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 58 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 59 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x06, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x30, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x0c, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 60 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 61 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, + 0x30, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0c, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 62 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x33, 0x00, 0x61, 0x80, 0x61, 0x80, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 63 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, + 0xc1, 0x80, 0xc1, 0x80, 0xcf, 0x80, 0xd9, 0x80, + 0xd9, 0x80, 0xd9, 0x80, 0xd9, 0x80, 0xcf, 0x80, + 0xc0, 0x00, 0xc0, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 64 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x7f, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 65 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x7f, 0x00, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 66 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 67 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, + 0x63, 0x00, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x63, 0x00, 0x7e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 68 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7e, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 69 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7e, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 70 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x67, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 71 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x7f, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 72 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 73 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x63, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 74 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x63, 0x00, 0x66, 0x00, 0x6c, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x6c, 0x00, 0x66, 0x00, + 0x63, 0x00, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 75 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 76 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0xc1, 0x80, 0xe3, 0x80, 0xf7, 0x80, 0xdd, 0x80, + 0xc9, 0x80, 0xc1, 0x80, 0xc1, 0x80, 0xc1, 0x80, + 0xc1, 0x80, 0xc1, 0x80, 0xc1, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 77 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x71, 0x80, 0x79, 0x80, + 0x6d, 0x80, 0x67, 0x80, 0x63, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 78 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 79 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x7f, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 80 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x67, 0x80, 0x3f, 0x00, 0x03, 0x00, + 0x01, 0x80, 0x00, 0x00, /* 81 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x7f, 0x00, 0x78, 0x00, 0x6c, 0x00, + 0x66, 0x00, 0x63, 0x00, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 82 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x60, 0x00, 0x60, 0x00, + 0x3f, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 83 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 84 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 85 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x33, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x1e, 0x00, + 0x1e, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 86 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x80, + 0xc1, 0x80, 0xc1, 0x80, 0xc1, 0x80, 0xc1, 0x80, + 0xc1, 0x80, 0xc9, 0x80, 0xdd, 0x80, 0xf7, 0x80, + 0xe3, 0x80, 0xc1, 0x80, 0x80, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 87 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x33, 0x00, 0x33, 0x00, 0x1e, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 88 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x33, 0x00, 0x33, 0x00, + 0x1e, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 89 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 90 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 91 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 92 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 93 */ + 0x00, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x33, 0x00, + 0x61, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 94 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x00, /* 95 */ + 0x18, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 96 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x3f, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 97 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x7f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 98 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 99 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x3f, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 100 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x7f, 0x80, 0x60, 0x00, + 0x60, 0x00, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 101 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, + 0x0c, 0x00, 0x0c, 0x00, 0x3f, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 102 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x3f, 0x00, /* 103 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x7f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 104 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 105 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x1e, 0x00, /* 106 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x61, 0x80, 0x63, 0x00, + 0x66, 0x00, 0x6c, 0x00, 0x78, 0x00, 0x6c, 0x00, + 0x66, 0x00, 0x63, 0x00, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 107 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 108 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x6d, 0x80, + 0x6d, 0x80, 0x6d, 0x80, 0x6d, 0x80, 0x6d, 0x80, + 0x6d, 0x80, 0x6d, 0x80, 0x6d, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 109 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 110 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 111 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x7f, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, /* 112 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, /* 113 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x6f, 0x80, 0x78, 0x00, + 0x70, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 114 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x60, 0x00, 0x60, 0x00, 0x3f, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 115 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 116 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 117 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x1e, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 118 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x6d, 0x80, 0x6d, 0x80, 0x6d, 0x80, + 0x6d, 0x80, 0x6d, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 119 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, 0x61, 0x80, + 0x33, 0x00, 0x1e, 0x00, 0x0c, 0x00, 0x1e, 0x00, + 0x33, 0x00, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 120 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x3f, 0x00, /* 121 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x18, 0x00, + 0x30, 0x00, 0x60, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 122 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x38, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 123 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 124 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x07, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 125 */ + 0x00, 0x00, 0x39, 0x80, 0x6d, 0x80, 0x6d, 0x80, + 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 126 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x1c, 0x00, 0x36, 0x00, + 0x63, 0x00, 0xc1, 0x80, 0xc1, 0x80, 0xc1, 0x80, + 0xc1, 0x80, 0xc1, 0x80, 0xff, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 127 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x18, 0x00, /* 128 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 129 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x7f, 0x80, 0x60, 0x00, + 0x60, 0x00, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 130 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x3f, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 131 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x3f, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 132 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x3f, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 133 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x33, 0x00, 0x1e, 0x00, 0x3f, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x3f, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 134 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x61, 0x80, 0x3f, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x18, 0x00, /* 135 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x7f, 0x80, 0x60, 0x00, + 0x60, 0x00, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 136 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x7f, 0x80, 0x60, 0x00, + 0x60, 0x00, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 137 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x7f, 0x80, 0x60, 0x00, + 0x60, 0x00, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 138 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 139 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 140 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 141 */ + 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x7f, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 142 */ + 0x1e, 0x00, 0x33, 0x00, 0x1e, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x7f, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 143 */ + 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7e, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 144 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x80, 0x0c, 0xc0, + 0x0c, 0xc0, 0x7c, 0xc0, 0xcf, 0xc0, 0xcc, 0x00, + 0xcc, 0x00, 0xcc, 0xc0, 0x7b, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 145 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, + 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, + 0xff, 0xc0, 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, + 0xc6, 0x00, 0xc6, 0x00, 0xc7, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 146 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 147 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 148 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 149 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 150 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 151 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x3f, 0x00, /* 152 */ + 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 153 */ + 0x33, 0x00, 0x33, 0x00, 0x00, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 154 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x3f, 0x00, 0x6d, 0x80, + 0x6c, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x6c, 0x00, + 0x6c, 0x00, 0x6d, 0x80, 0x3f, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, /* 155 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x33, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x7e, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x30, 0x00, 0x31, 0x80, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 156 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x33, 0x00, 0x33, 0x00, 0x1e, 0x00, + 0x1e, 0x00, 0x0c, 0x00, 0x3f, 0x00, 0x0c, 0x00, + 0x3f, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 157 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0xcc, 0x00, + 0xfb, 0x00, 0xc3, 0x00, 0xc7, 0x80, 0xc3, 0x00, + 0xc3, 0x00, 0xc3, 0x00, 0xc1, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 158 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x0d, 0x80, 0x0d, 0x80, 0x0c, 0x00, 0x0c, 0x00, + 0x3f, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x6c, 0x00, + 0x6c, 0x00, 0x38, 0x00, /* 159 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x3f, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 160 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 161 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 162 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 163 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x80, + 0x6e, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 164 */ + 0x3b, 0x80, 0x6e, 0x00, 0x00, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x71, 0x80, 0x79, 0x80, + 0x6d, 0x80, 0x67, 0x80, 0x63, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 165 */ + 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x3f, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x3f, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 166 */ + 0x00, 0x00, 0x3e, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x3e, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 167 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x61, 0x80, + 0x61, 0x80, 0x33, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 168 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 169 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 170 */ + 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x70, 0x00, + 0x30, 0x80, 0x31, 0x80, 0x33, 0x00, 0x36, 0x00, + 0x0c, 0x00, 0x18, 0x00, 0x37, 0x00, 0x6d, 0x80, + 0xc1, 0x80, 0x83, 0x00, 0x06, 0x00, 0x0f, 0x80, + 0x00, 0x00, 0x00, 0x00, /* 171 */ + 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x70, 0x00, + 0x30, 0x80, 0x31, 0x80, 0x33, 0x00, 0x36, 0x00, + 0x0c, 0x00, 0x19, 0x80, 0x33, 0x80, 0x67, 0x80, + 0xcd, 0x80, 0x8f, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, /* 172 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 173 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0xc0, 0x19, 0x80, + 0x33, 0x00, 0x66, 0x00, 0xcc, 0x00, 0x66, 0x00, + 0x33, 0x00, 0x19, 0x80, 0x0c, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 174 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x66, 0x00, + 0x33, 0x00, 0x19, 0x80, 0x0c, 0xc0, 0x19, 0x80, + 0x33, 0x00, 0x66, 0x00, 0xcc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 175 */ + 0xaa, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, + 0xaa, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, + 0xaa, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, + 0xaa, 0x80, 0x00, 0x00, 0xaa, 0x80, 0x00, 0x00, + 0xaa, 0x80, 0x00, 0x00, /* 176 */ + 0xaa, 0x80, 0x55, 0x40, 0xaa, 0x80, 0x55, 0x40, + 0xaa, 0x80, 0x55, 0x40, 0xaa, 0x80, 0x55, 0x40, + 0xaa, 0x80, 0x55, 0x40, 0xaa, 0x80, 0x55, 0x40, + 0xaa, 0x80, 0x55, 0x40, 0xaa, 0x80, 0x55, 0x40, + 0xaa, 0x80, 0x55, 0x40, /* 177 */ + 0xff, 0xc0, 0xaa, 0x80, 0xff, 0xc0, 0xaa, 0x80, + 0xff, 0xc0, 0xaa, 0x80, 0xff, 0xc0, 0xaa, 0x80, + 0xff, 0xc0, 0xaa, 0x80, 0xff, 0xc0, 0xaa, 0x80, + 0xff, 0xc0, 0xaa, 0x80, 0xff, 0xc0, 0xaa, 0x80, + 0xff, 0xc0, 0xaa, 0x80, /* 178 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 179 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0xfc, 0x00, 0xfc, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 180 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0xfc, 0x00, 0xfc, 0x00, + 0x0c, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 181 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0xf6, 0x00, 0xf6, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 182 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0x00, 0xfe, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 183 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, + 0x0c, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 184 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0xf6, 0x00, 0xf6, 0x00, + 0x06, 0x00, 0xf6, 0x00, 0xf6, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 185 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 186 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0xfe, 0x00, + 0x06, 0x00, 0xf6, 0x00, 0xf6, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 187 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0xf6, 0x00, 0xf6, 0x00, + 0x06, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 188 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0xfe, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 189 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0xfc, 0x00, 0xfc, 0x00, + 0x0c, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 190 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0x00, 0xfc, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 191 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 192 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0xff, 0xc0, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 193 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xc0, 0xff, 0xc0, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 194 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 195 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xc0, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 196 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0xff, 0xc0, 0xff, 0xc0, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 197 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0f, 0xc0, 0x0f, 0xc0, + 0x0c, 0x00, 0x0f, 0xc0, 0x0f, 0xc0, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 198 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x37, 0xc0, 0x37, 0xc0, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 199 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x37, 0xc0, 0x37, 0xc0, + 0x30, 0x00, 0x3f, 0xc0, 0x3f, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 200 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc0, 0x3f, 0xc0, + 0x30, 0x00, 0x37, 0xc0, 0x37, 0xc0, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 201 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0xf7, 0xc0, 0xf7, 0xc0, + 0x00, 0x00, 0xff, 0xc0, 0xff, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 202 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 0xff, 0xc0, + 0x00, 0x00, 0xf7, 0xc0, 0xf7, 0xc0, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 203 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x37, 0xc0, 0x37, 0xc0, + 0x30, 0x00, 0x37, 0xc0, 0x37, 0xc0, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 204 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 0xff, 0xc0, + 0x00, 0x00, 0xff, 0xc0, 0xff, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 205 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0xf7, 0xc0, 0xf7, 0xc0, + 0x00, 0x00, 0xf7, 0xc0, 0xf7, 0xc0, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 206 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0xff, 0xc0, 0xff, 0xc0, + 0x00, 0x00, 0xff, 0xc0, 0xff, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 207 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0xff, 0xc0, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 208 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, 0xff, 0xc0, + 0x00, 0x00, 0xff, 0xc0, 0xff, 0xc0, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 209 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xc0, 0xff, 0xc0, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 210 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x3f, 0xc0, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 211 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0f, 0xc0, 0x0f, 0xc0, + 0x0c, 0x00, 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 212 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x0f, 0xc0, + 0x0c, 0x00, 0x0f, 0xc0, 0x0f, 0xc0, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 213 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xc0, 0x3f, 0xc0, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 214 */ + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0xff, 0xc0, 0xff, 0xc0, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x00, /* 215 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0xff, 0xc0, 0xff, 0xc0, + 0x0c, 0x00, 0xff, 0xc0, 0xff, 0xc0, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 216 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 217 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 218 */ + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, /* 219 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, /* 220 */ + 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, + 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, + 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, + 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xf8, 0x00, + 0xf8, 0x00, 0xf8, 0x00, /* 221 */ + 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, + 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, + 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, + 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, 0x07, 0xc0, + 0x07, 0xc0, 0x07, 0xc0, /* 222 */ + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 223 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7d, 0x80, 0xc7, 0x00, + 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0xc6, 0x00, + 0xc6, 0x00, 0xc7, 0x00, 0x7d, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 224 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x62, 0x00, + 0x7f, 0x00, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x7f, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, /* 225 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 226 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 227 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, + 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0c, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x18, 0x00, + 0x30, 0x00, 0x60, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 228 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, 0x33, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x33, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 229 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x63, 0x80, 0x7d, 0x80, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, /* 230 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 231 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x3f, 0x00, 0x6d, 0x80, 0x6d, 0x80, 0x6d, 0x80, + 0x6d, 0x80, 0x6d, 0x80, 0x6d, 0x80, 0x6d, 0x80, + 0x6d, 0x80, 0x3f, 0x00, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 232 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x6d, 0x80, 0x6d, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x3f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 233 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x33, 0x00, 0x33, 0x00, 0x73, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 234 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, + 0x18, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x33, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x33, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 235 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x6d, 0x80, + 0x6d, 0x80, 0x6d, 0x80, 0x6d, 0x80, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 236 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x03, 0x00, 0x3f, 0x00, 0x67, 0x80, + 0x6d, 0x80, 0x6d, 0x80, 0x6d, 0x80, 0x79, 0x80, + 0x3f, 0x00, 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 237 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0x80, 0x30, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7f, 0x80, 0x60, 0x00, 0x60, 0x00, 0x30, 0x00, + 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 238 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x33, 0x00, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, + 0x61, 0x80, 0x61, 0x80, 0x61, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 239 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 240 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x7f, 0x80, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 241 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, + 0x18, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x18, 0x00, + 0x30, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 242 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x06, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x30, 0x00, + 0x30, 0x00, 0x18, 0x00, 0x0c, 0x00, 0x06, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 243 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x0d, 0x80, 0x0d, 0x80, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, /* 244 */ + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x6c, 0x00, 0x6c, 0x00, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 245 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 246 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x39, 0x80, 0x6d, 0x80, 0x67, 0x00, + 0x00, 0x00, 0x39, 0x80, 0x6d, 0x80, 0x67, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 247 */ + 0x00, 0x00, 0x1e, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 248 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 249 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 250 */ + 0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x63, 0x00, 0x63, 0x00, 0x63, 0x00, 0x33, 0x00, + 0x1b, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 251 */ + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 252 */ + 0x00, 0x00, 0x1e, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x06, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 253 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, + 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 254 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, /* 255 */ + }, + } +) + +func init() { + availableFonts = append(availableFonts, terminus10x18) +} diff --git a/src/gopheros/device/video/console/font/terminus_14x28.go b/src/gopheros/device/video/console/font/terminus_14x28.go new file mode 100644 index 0000000..4e9c276 --- /dev/null +++ b/src/gopheros/device/video/console/font/terminus_14x28.go @@ -0,0 +1,1812 @@ +package font + +var ( + // terminus14x28 is based on the bold 14x28 terminus + // font which is available at: http://terminus-font.sourceforge.net + terminus14x28 = &Font{ + Name: "terminus14x28", + GlyphWidth: 14, + GlyphHeight: 28, + RecommendedWidth: 2560, + RecommendedHeight: 1600, + BytesPerRow: 2, + Data: []byte{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xe0, 0x7f, 0xf0, 0xc0, 0x18, 0xc0, 0x18, + 0xc0, 0x18, 0xdd, 0xd8, 0xdd, 0xd8, 0xc0, 0x18, + 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xdf, 0xd8, + 0xcf, 0x98, 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x18, + 0x7f, 0xf0, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 1 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xe0, 0x7f, 0xf0, 0xff, 0xf8, 0xff, 0xf8, + 0xff, 0xf8, 0xc7, 0x18, 0xc7, 0x18, 0xff, 0xf8, + 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xc0, 0x18, + 0xe0, 0x38, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, + 0x7f, 0xf0, 0x3f, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 2 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xf0, + 0xfd, 0xf8, 0xfd, 0xf8, 0xff, 0xf8, 0xff, 0xf8, + 0xff, 0xf8, 0xff, 0xf8, 0x7f, 0xf0, 0x7f, 0xf0, + 0x3f, 0xe0, 0x1f, 0xc0, 0x0f, 0x80, 0x07, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 3 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x07, 0x00, 0x0f, 0x80, 0x1f, 0xc0, 0x3f, 0xe0, + 0x7f, 0xf0, 0xff, 0xf8, 0xff, 0xf8, 0x7f, 0xf0, + 0x3f, 0xe0, 0x1f, 0xc0, 0x0f, 0x80, 0x07, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 4 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x80, 0x0f, 0xc0, 0x0f, 0xc0, 0x0f, 0xc0, + 0x0f, 0xc0, 0x07, 0x80, 0x03, 0x00, 0x3b, 0x70, + 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, + 0x7f, 0xf8, 0x3b, 0x70, 0x03, 0x00, 0x03, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 5 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x07, 0x80, 0x0f, 0xc0, + 0x1f, 0xe0, 0x3f, 0xf0, 0x3f, 0xf0, 0x7f, 0xf8, + 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, + 0x7b, 0x78, 0x3b, 0x70, 0x03, 0x00, 0x03, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 6 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, + 0x0f, 0xc0, 0x0f, 0xc0, 0x0f, 0xc0, 0x0f, 0xc0, + 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 7 */ + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xf8, 0x7c, + 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3c, + 0xf8, 0x7c, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, /* 8 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, + 0x0f, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0f, 0xc0, + 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 9 */ + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xf8, 0x7c, + 0xf0, 0x3c, 0xf3, 0x3c, 0xf3, 0x3c, 0xf0, 0x3c, + 0xf8, 0x7c, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, /* 10 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0xf8, 0x00, 0x78, 0x00, 0xf8, + 0x01, 0xd8, 0x03, 0x98, 0x07, 0x18, 0x3f, 0x80, + 0x7f, 0xc0, 0xe0, 0xe0, 0xc0, 0x60, 0xc0, 0x60, + 0xc0, 0x60, 0xc0, 0x60, 0xc0, 0x60, 0xe0, 0xe0, + 0x7f, 0xc0, 0x3f, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 11 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xe0, 0x3f, 0xf0, 0x70, 0x38, 0x60, 0x18, + 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, + 0x70, 0x38, 0x3f, 0xf0, 0x1f, 0xe0, 0x03, 0x00, + 0x03, 0x00, 0x7f, 0xf8, 0x7f, 0xf8, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 12 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xf0, 0x3f, 0xf0, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x3f, 0xf0, 0x3f, 0xf0, 0x30, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, + 0xf0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 13 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf8, 0x7f, 0xf8, 0x60, 0x18, 0x60, 0x18, + 0x60, 0x18, 0x7f, 0xf8, 0x7f, 0xf8, 0x60, 0x18, + 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, + 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x78, + 0xe0, 0x70, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 14 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x63, 0x18, + 0x73, 0x38, 0x3b, 0x70, 0x1f, 0xe0, 0x0f, 0xc0, + 0x7c, 0xf8, 0x7c, 0xf8, 0x0f, 0xc0, 0x1f, 0xe0, + 0x3b, 0x70, 0x73, 0x38, 0x63, 0x18, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 15 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, + 0xf0, 0x00, 0xfc, 0x00, 0xff, 0x00, 0xff, 0xc0, + 0xff, 0xf0, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xf0, + 0xff, 0xc0, 0xff, 0x00, 0xfc, 0x00, 0xf0, 0x00, + 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 16 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x3c, 0x00, 0xfc, 0x03, 0xfc, 0x0f, 0xfc, + 0x3f, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0x3f, 0xfc, + 0x0f, 0xfc, 0x03, 0xfc, 0x00, 0xfc, 0x00, 0x3c, + 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 17 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x80, 0x0f, 0xc0, 0x1f, 0xe0, + 0x3b, 0x70, 0x73, 0x38, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x73, 0x38, 0x3b, 0x70, 0x1f, 0xe0, 0x0f, 0xc0, + 0x07, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 18 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x18, 0xc0, 0x18, 0xc0, + 0x18, 0xc0, 0x18, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 19 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xf8, 0x7f, 0xf8, 0x63, 0x18, 0x63, 0x18, + 0x63, 0x18, 0x63, 0x18, 0x63, 0x18, 0x63, 0x18, + 0x63, 0x18, 0x7f, 0x18, 0x3f, 0x18, 0x03, 0x18, + 0x03, 0x18, 0x03, 0x18, 0x03, 0x18, 0x03, 0x18, + 0x03, 0x18, 0x03, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 20 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, + 0x0f, 0xc0, 0x1c, 0xe0, 0x18, 0x00, 0x1c, 0x00, + 0x0f, 0x00, 0x0f, 0x80, 0x19, 0xc0, 0x18, 0xe0, + 0x18, 0x60, 0x18, 0x60, 0x1c, 0x60, 0x0e, 0x60, + 0x07, 0xc0, 0x03, 0xc0, 0x00, 0xe0, 0x00, 0x60, + 0x1c, 0xe0, 0x0f, 0xc0, 0x07, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 21 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, + 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, + 0x7f, 0xf8, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 22 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x80, 0x0f, 0xc0, 0x1f, 0xe0, + 0x3b, 0x70, 0x73, 0x38, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x73, 0x38, + 0x3b, 0x70, 0x1f, 0xe0, 0x0f, 0xc0, 0x07, 0x80, + 0x7f, 0xf8, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 23 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x80, 0x0f, 0xc0, 0x1f, 0xe0, + 0x3b, 0x70, 0x73, 0x38, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 24 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x73, 0x38, 0x3b, 0x70, 0x1f, 0xe0, 0x0f, 0xc0, + 0x07, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 25 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x01, 0x80, 0x01, 0xc0, 0x00, 0xe0, + 0x00, 0x70, 0xff, 0xf8, 0xff, 0xf8, 0x00, 0x70, + 0x00, 0xe0, 0x01, 0xc0, 0x01, 0x80, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 26 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x0c, 0x00, 0x1c, 0x00, 0x38, 0x00, + 0x70, 0x00, 0xff, 0xf8, 0xff, 0xf8, 0x70, 0x00, + 0x38, 0x00, 0x1c, 0x00, 0x0c, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 27 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 28 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x80, 0x0c, 0xc0, 0x1c, 0xe0, 0x38, 0x70, + 0x70, 0x38, 0xff, 0xfc, 0xff, 0xfc, 0x70, 0x38, + 0x38, 0x70, 0x1c, 0xe0, 0x0c, 0xc0, 0x04, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 29 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x07, 0x80, 0x07, 0x80, 0x0f, 0xc0, + 0x0f, 0xc0, 0x1f, 0xe0, 0x1f, 0xe0, 0x3f, 0xf0, + 0x3f, 0xf0, 0x7f, 0xf8, 0x7f, 0xf8, 0xff, 0xfc, + 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 30 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, + 0xff, 0xfc, 0x7f, 0xf8, 0x7f, 0xf8, 0x3f, 0xf0, + 0x3f, 0xf0, 0x1f, 0xe0, 0x1f, 0xe0, 0x0f, 0xc0, + 0x0f, 0xc0, 0x07, 0x80, 0x07, 0x80, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 31 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 32 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 33 */ + 0x00, 0x00, 0x00, 0x00, 0x18, 0xc0, 0x18, 0xc0, + 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 34 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x7f, 0xf0, 0x7f, 0xf0, 0x18, 0xc0, 0x18, 0xc0, + 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x7f, 0xf0, 0x7f, 0xf0, 0x18, 0xc0, 0x18, 0xc0, + 0x18, 0xc0, 0x18, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 35 */ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x1f, 0xe0, 0x3f, 0xf0, 0x73, 0x38, + 0x63, 0x18, 0x63, 0x00, 0x63, 0x00, 0x73, 0x00, + 0x3f, 0xe0, 0x1f, 0xf0, 0x03, 0x38, 0x03, 0x18, + 0x03, 0x18, 0x63, 0x18, 0x73, 0x38, 0x3f, 0xf0, + 0x1f, 0xe0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 36 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3c, 0x30, 0x7e, 0x30, 0x66, 0x60, 0x7e, 0x60, + 0x3c, 0xc0, 0x00, 0xc0, 0x01, 0x80, 0x01, 0x80, + 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x0c, 0xf0, 0x19, 0xf8, 0x19, 0x98, + 0x31, 0xf8, 0x30, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 37 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x1f, 0x80, 0x39, 0xc0, 0x30, 0xc0, + 0x30, 0xc0, 0x39, 0xc0, 0x1f, 0x80, 0x0f, 0x00, + 0x0e, 0x00, 0x1f, 0x18, 0x3b, 0xb8, 0x71, 0xf0, + 0x60, 0xe0, 0x60, 0xe0, 0x60, 0xe0, 0x71, 0xf0, + 0x3f, 0xb8, 0x1f, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 38 */ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 39 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x03, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 40 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x03, 0x00, 0x03, 0x00, + 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 41 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x38, 0xe0, 0x1d, 0xc0, 0x0f, 0x80, 0x07, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x07, 0x00, 0x0f, 0x80, + 0x1d, 0xc0, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 42 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x7f, 0xf8, 0x7f, 0xf8, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 43 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 44 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 45 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 46 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0x60, + 0x00, 0xc0, 0x00, 0xc0, 0x01, 0x80, 0x01, 0x80, + 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 47 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x70, 0x60, 0xf0, 0x61, 0xf0, 0x63, 0xb0, + 0x67, 0x30, 0x6e, 0x30, 0x7c, 0x30, 0x78, 0x30, + 0x70, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 48 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x1f, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x1f, 0xe0, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 49 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x30, 0x00, 0x70, + 0x00, 0xe0, 0x01, 0xc0, 0x03, 0x80, 0x07, 0x00, + 0x0e, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 50 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x70, + 0x0f, 0xe0, 0x0f, 0xe0, 0x00, 0x70, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 51 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x70, 0x00, 0xf0, 0x01, 0xf0, + 0x03, 0xb0, 0x07, 0x30, 0x0e, 0x30, 0x1c, 0x30, + 0x38, 0x30, 0x70, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 52 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x7f, 0xc0, + 0x7f, 0xe0, 0x00, 0x70, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 53 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xe0, 0x3f, 0xe0, 0x70, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x7f, 0xc0, + 0x7f, 0xe0, 0x60, 0x70, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 54 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x00, 0x60, 0x00, 0x60, 0x00, 0xc0, + 0x00, 0xc0, 0x01, 0x80, 0x01, 0x80, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 55 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 56 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x70, 0x30, 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x70, + 0x3f, 0xe0, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 57 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 58 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 59 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x00, 0xe0, 0x01, 0xc0, + 0x03, 0x80, 0x07, 0x00, 0x0e, 0x00, 0x1c, 0x00, + 0x38, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1c, 0x00, + 0x0e, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xc0, + 0x00, 0xe0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 60 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, + 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 61 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1c, 0x00, + 0x0e, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xc0, + 0x00, 0xe0, 0x00, 0x70, 0x00, 0xe0, 0x01, 0xc0, + 0x03, 0x80, 0x07, 0x00, 0x0e, 0x00, 0x1c, 0x00, + 0x38, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 62 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x70, 0x00, 0xe0, + 0x01, 0xc0, 0x03, 0x80, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 63 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xe0, 0x3f, 0xf0, 0x70, 0x38, 0x60, 0x18, + 0x61, 0xf8, 0x63, 0xf8, 0x67, 0x18, 0x66, 0x18, + 0x66, 0x18, 0x66, 0x18, 0x66, 0x18, 0x67, 0x18, + 0x63, 0xf8, 0x61, 0xe8, 0x60, 0x00, 0x70, 0x00, + 0x3f, 0xf8, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 64 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 65 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xc0, 0x7f, 0xe0, 0x60, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x60, 0x7f, 0xc0, + 0x7f, 0xc0, 0x60, 0x60, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x70, + 0x7f, 0xe0, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 66 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 67 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0x00, 0x7f, 0xc0, 0x60, 0xe0, 0x60, 0x60, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x60, 0x60, 0xe0, + 0x7f, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 68 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7f, 0x80, 0x7f, 0x80, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 69 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7f, 0x80, 0x7f, 0x80, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 70 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x63, 0xf0, 0x63, 0xf0, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 71 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 72 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 73 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xf8, 0x01, 0xf8, 0x00, 0x60, 0x00, 0x60, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0xe0, + 0x3f, 0xc0, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 74 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x60, 0x70, 0x60, 0xe0, 0x61, 0xc0, + 0x63, 0x80, 0x67, 0x00, 0x6e, 0x00, 0x7c, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x7c, 0x00, 0x6e, 0x00, + 0x67, 0x00, 0x63, 0x80, 0x61, 0xc0, 0x60, 0xe0, + 0x60, 0x70, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 75 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 76 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x18, 0x60, 0x18, 0x70, 0x38, 0x78, 0x78, + 0x7c, 0xf8, 0x6f, 0xd8, 0x67, 0x98, 0x63, 0x18, + 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, + 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, + 0x60, 0x18, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 77 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x70, 0x30, 0x78, 0x30, 0x7c, 0x30, 0x6e, 0x30, + 0x67, 0x30, 0x63, 0xb0, 0x61, 0xf0, 0x60, 0xf0, + 0x60, 0x70, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 78 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 79 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xc0, 0x7f, 0xe0, 0x60, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x70, 0x7f, 0xe0, 0x7f, 0xc0, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 80 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x63, 0xb0, 0x71, 0xf0, + 0x3f, 0xe0, 0x1f, 0xe0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 81 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xc0, 0x7f, 0xe0, 0x60, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x70, 0x7f, 0xe0, 0x7f, 0xc0, 0x7c, 0x00, + 0x6e, 0x00, 0x67, 0x00, 0x63, 0x80, 0x61, 0xc0, + 0x60, 0xe0, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 82 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x70, 0x00, + 0x3f, 0xc0, 0x1f, 0xe0, 0x00, 0x70, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 83 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf8, 0x7f, 0xf8, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 84 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 85 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, + 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x0d, 0x80, 0x0d, 0x80, 0x0d, 0x80, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 86 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, + 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, + 0x60, 0x18, 0x60, 0x18, 0x63, 0x18, 0x67, 0x98, + 0x6f, 0xd8, 0x7c, 0xf8, 0x78, 0x78, 0x70, 0x38, + 0x60, 0x18, 0x60, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 87 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x30, 0x60, 0x30, 0x30, 0x60, 0x30, 0x60, + 0x18, 0xc0, 0x18, 0xc0, 0x0d, 0x80, 0x0d, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x0d, 0x80, 0x0d, 0x80, + 0x18, 0xc0, 0x18, 0xc0, 0x30, 0x60, 0x30, 0x60, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 88 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x18, 0x60, 0x18, 0x30, 0x30, 0x30, 0x30, + 0x18, 0x60, 0x18, 0x60, 0x0c, 0xc0, 0x0c, 0xc0, + 0x07, 0x80, 0x07, 0x80, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 89 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x70, 0x00, 0xe0, 0x01, 0xc0, 0x03, 0x80, + 0x07, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x38, 0x00, + 0x70, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 90 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 91 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0x80, + 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x60, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 92 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0xc0, 0x00, 0xc0, + 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, + 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, + 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 93 */ + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, + 0x0f, 0x80, 0x1d, 0xc0, 0x38, 0xe0, 0x70, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 94 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, + 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 95 */ + 0x1c, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 96 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xc0, 0x1f, 0xe0, 0x00, 0x70, + 0x00, 0x30, 0x1f, 0xf0, 0x3f, 0xf0, 0x70, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 97 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x7f, 0xc0, 0x7f, 0xe0, 0x60, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x70, + 0x7f, 0xe0, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 98 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 99 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x30, 0x1f, 0xf0, 0x3f, 0xf0, 0x70, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 100 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x7f, 0xf0, 0x7f, 0xf0, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 101 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xf0, 0x07, 0xf0, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x3f, 0xc0, 0x3f, 0xc0, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 102 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xf0, 0x3f, 0xf0, 0x70, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x70, 0x3f, 0xe0, 0x3f, 0xc0, 0x00, 0x00, /* 103 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x7f, 0xc0, 0x7f, 0xe0, 0x60, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 104 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 105 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x60, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, + 0x00, 0x60, 0x00, 0x60, 0x30, 0x60, 0x30, 0x60, + 0x38, 0xe0, 0x1f, 0xc0, 0x0f, 0x80, 0x00, 0x00, /* 106 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x30, 0x00, 0x30, 0x70, 0x30, 0xe0, 0x31, 0xc0, + 0x33, 0x80, 0x37, 0x00, 0x3e, 0x00, 0x3c, 0x00, + 0x3e, 0x00, 0x37, 0x00, 0x33, 0x80, 0x31, 0xc0, + 0x30, 0xe0, 0x30, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 107 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x0f, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 108 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0xe0, 0x7f, 0xf0, 0x63, 0x38, + 0x63, 0x18, 0x63, 0x18, 0x63, 0x18, 0x63, 0x18, + 0x63, 0x18, 0x63, 0x18, 0x63, 0x18, 0x63, 0x18, + 0x63, 0x18, 0x63, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 109 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0xc0, 0x7f, 0xe0, 0x60, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 110 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 111 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0xc0, 0x7f, 0xe0, 0x60, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x70, + 0x7f, 0xe0, 0x7f, 0xc0, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, /* 112 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xf0, 0x3f, 0xf0, 0x70, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, /* 113 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x67, 0xf0, 0x6f, 0xf0, 0x7c, 0x00, + 0x78, 0x00, 0x70, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 114 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x00, 0x70, 0x00, 0x3f, 0xc0, 0x1f, 0xe0, + 0x00, 0x70, 0x00, 0x30, 0x00, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 115 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x3f, 0xc0, 0x3f, 0xc0, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x07, 0xe0, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 116 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 117 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x18, 0xc0, + 0x18, 0xc0, 0x18, 0xc0, 0x0d, 0x80, 0x0d, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 118 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, + 0x60, 0x18, 0x63, 0x18, 0x63, 0x18, 0x63, 0x18, + 0x63, 0x18, 0x63, 0x18, 0x63, 0x18, 0x73, 0x38, + 0x3f, 0xf0, 0x1f, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 119 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x38, 0xe0, 0x1d, 0xc0, 0x0f, 0x80, 0x07, 0x00, + 0x0f, 0x80, 0x1d, 0xc0, 0x38, 0xe0, 0x70, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 120 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x70, 0x3f, 0xe0, 0x3f, 0xc0, 0x00, 0x00, /* 121 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x70, + 0x00, 0xe0, 0x01, 0xc0, 0x03, 0x80, 0x07, 0x00, + 0x0e, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 122 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xc0, 0x03, 0xc0, 0x07, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x1c, 0x00, 0x1c, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x03, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 123 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 124 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1c, 0x00, 0x1e, 0x00, 0x07, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, + 0x1e, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 125 */ + 0x00, 0x00, 0x00, 0x00, 0x3c, 0x30, 0x7e, 0x30, + 0x67, 0x30, 0x63, 0xf0, 0x61, 0xe0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 126 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x07, 0x80, 0x0f, 0xc0, 0x1c, 0xe0, 0x38, 0x70, + 0x70, 0x38, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, + 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, + 0x7f, 0xf8, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 127 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x00, 0x00, /* 128 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x00, 0x00, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 129 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xc0, 0x03, 0x80, 0x07, 0x00, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x7f, 0xf0, 0x7f, 0xf0, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 130 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x0f, 0x80, 0x1d, 0xc0, + 0x00, 0x00, 0x1f, 0xc0, 0x1f, 0xe0, 0x00, 0x70, + 0x00, 0x30, 0x1f, 0xf0, 0x3f, 0xf0, 0x70, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 131 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x00, 0x00, 0x1f, 0xc0, 0x1f, 0xe0, 0x00, 0x70, + 0x00, 0x30, 0x1f, 0xf0, 0x3f, 0xf0, 0x70, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 132 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x1f, 0xc0, 0x1f, 0xe0, 0x00, 0x70, + 0x00, 0x30, 0x1f, 0xf0, 0x3f, 0xf0, 0x70, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 133 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x0c, 0xc0, 0x0c, 0xc0, + 0x07, 0x80, 0x1f, 0xc0, 0x1f, 0xe0, 0x00, 0x70, + 0x00, 0x30, 0x1f, 0xf0, 0x3f, 0xf0, 0x70, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 134 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x00, 0x00, /* 135 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x0f, 0x80, 0x1d, 0xc0, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x7f, 0xf0, 0x7f, 0xf0, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 136 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x7f, 0xf0, 0x7f, 0xf0, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 137 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x7f, 0xf0, 0x7f, 0xf0, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 138 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 139 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x0f, 0x80, 0x1d, 0xc0, + 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 140 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 141 */ + 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 142 */ + 0x07, 0x80, 0x0c, 0xc0, 0x0c, 0xc0, 0x07, 0x80, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 143 */ + 0x01, 0xc0, 0x03, 0x80, 0x07, 0x00, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7f, 0x80, 0x7f, 0x80, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 144 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7d, 0xe0, 0x7f, 0xf0, 0x07, 0x38, + 0x03, 0x18, 0x3f, 0x18, 0x7f, 0xf8, 0xe3, 0xf8, + 0xc3, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xe3, 0x98, + 0x7f, 0xf8, 0x3e, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 145 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xf8, 0x7f, 0xf8, 0xe3, 0x00, 0xc3, 0x00, + 0xc3, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xc3, 0x00, + 0xff, 0xf0, 0xff, 0xf0, 0xc3, 0x00, 0xc3, 0x00, + 0xc3, 0x00, 0xc3, 0x00, 0xc3, 0x00, 0xc3, 0x00, + 0xc3, 0xf8, 0xc3, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 146 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x0f, 0x80, 0x1d, 0xc0, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 147 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 148 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 149 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x00, 0x0f, 0x80, 0x1d, 0xc0, + 0x00, 0x00, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 150 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 151 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, + 0x00, 0x00, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x70, 0x3f, 0xe0, 0x3f, 0xc0, 0x00, 0x00, /* 152 */ + 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 153 */ + 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x00, 0x00, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 154 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x0f, 0xc0, 0x1f, 0xe0, 0x33, 0x30, + 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x30, + 0x1f, 0xe0, 0x0f, 0xc0, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 155 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x80, 0x0f, 0xc0, 0x1c, 0x60, 0x18, 0x60, + 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, + 0x3f, 0x80, 0x3f, 0x80, 0x18, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x18, 0x00, 0x18, 0x30, 0x18, 0x30, + 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 156 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x18, 0x60, 0x18, 0x30, 0x30, 0x30, 0x30, + 0x18, 0x60, 0x18, 0x60, 0x0c, 0xc0, 0x0c, 0xc0, + 0x07, 0x80, 0x03, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, + 0x03, 0x00, 0x03, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 157 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0x00, 0xff, 0x00, 0xc3, 0x80, 0xc1, 0x80, + 0xc1, 0x80, 0xc1, 0x80, 0xc1, 0x80, 0xc3, 0x80, + 0xff, 0x60, 0xfe, 0x60, 0xc1, 0xf8, 0xc1, 0xf8, + 0xc0, 0x60, 0xc0, 0x60, 0xc0, 0x60, 0xc0, 0x60, + 0xc0, 0x78, 0xc0, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 158 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xe0, 0x03, 0xf0, 0x03, 0x30, 0x03, 0x30, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x1f, 0xe0, + 0x1f, 0xe0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x33, 0x00, 0x33, 0x00, + 0x3f, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, /* 159 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xc0, 0x03, 0x80, 0x07, 0x00, + 0x00, 0x00, 0x1f, 0xc0, 0x1f, 0xe0, 0x00, 0x70, + 0x00, 0x30, 0x1f, 0xf0, 0x3f, 0xf0, 0x70, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 160 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xc0, 0x03, 0x80, 0x07, 0x00, + 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x0f, 0xc0, 0x0f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 161 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xc0, 0x03, 0x80, 0x07, 0x00, + 0x00, 0x00, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 162 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xc0, 0x03, 0x80, 0x07, 0x00, + 0x00, 0x00, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x30, + 0x3f, 0xf0, 0x1f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 163 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3c, 0x60, 0x7f, 0xe0, 0x63, 0xc0, + 0x00, 0x00, 0x7f, 0xc0, 0x7f, 0xe0, 0x60, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 164 */ + 0x1e, 0x60, 0x3f, 0xe0, 0x33, 0xc0, 0x00, 0x00, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x70, 0x30, 0x78, 0x30, 0x7c, 0x30, 0x6e, 0x30, + 0x67, 0x30, 0x63, 0xb0, 0x61, 0xf0, 0x60, 0xf0, + 0x60, 0x70, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 165 */ + 0x00, 0x00, 0x1f, 0xc0, 0x1f, 0xe0, 0x00, 0x70, + 0x0f, 0xf0, 0x1f, 0xf0, 0x38, 0x30, 0x30, 0x30, + 0x38, 0x30, 0x1f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, + 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 166 */ + 0x00, 0x00, 0x0f, 0xc0, 0x1f, 0xe0, 0x38, 0x70, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x38, 0x70, 0x1f, 0xe0, 0x0f, 0xc0, 0x00, 0x00, + 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 167 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x30, 0x00, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 168 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 169 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 170 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x38, 0x00, 0x78, 0x18, 0x18, 0x38, + 0x18, 0x70, 0x18, 0xe0, 0x19, 0xc0, 0x1b, 0x80, + 0x07, 0x00, 0x0e, 0x00, 0x1d, 0xf0, 0x3b, 0xf8, + 0x73, 0x18, 0x60, 0x30, 0x00, 0x60, 0x00, 0xc0, + 0x01, 0xf8, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 171 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x38, 0x00, 0x78, 0x00, 0x18, 0x18, + 0x18, 0x38, 0x18, 0x70, 0x18, 0xe0, 0x19, 0xc0, + 0x03, 0x80, 0x07, 0x30, 0x0e, 0x70, 0x1c, 0xf0, + 0x39, 0xb0, 0x73, 0x30, 0x67, 0xf0, 0x07, 0xf0, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 172 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 173 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x9c, 0x07, 0x38, 0x0e, 0x70, + 0x1c, 0xe0, 0x39, 0xc0, 0x73, 0x80, 0xe7, 0x00, + 0x73, 0x80, 0x39, 0xc0, 0x1c, 0xe0, 0x0e, 0x70, + 0x07, 0x38, 0x03, 0x9c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 174 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe7, 0x00, 0x73, 0x80, 0x39, 0xc0, + 0x1c, 0xe0, 0x0e, 0x70, 0x07, 0x38, 0x03, 0x9c, + 0x07, 0x38, 0x0e, 0x70, 0x1c, 0xe0, 0x39, 0xc0, + 0x73, 0x80, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 175 */ + 0xaa, 0xa8, 0x00, 0x00, 0xaa, 0xa8, 0x00, 0x00, + 0xaa, 0xa8, 0x00, 0x00, 0xaa, 0xa8, 0x00, 0x00, + 0xaa, 0xa8, 0x00, 0x00, 0xaa, 0xa8, 0x00, 0x00, + 0xaa, 0xa8, 0x00, 0x00, 0xaa, 0xa8, 0x00, 0x00, + 0xaa, 0xa8, 0x00, 0x00, 0xaa, 0xa8, 0x00, 0x00, + 0xaa, 0xa8, 0x00, 0x00, 0xaa, 0xa8, 0x00, 0x00, + 0xaa, 0xa8, 0x00, 0x00, 0xaa, 0xa8, 0x00, 0x00, /* 176 */ + 0xaa, 0xa8, 0x55, 0x54, 0xaa, 0xa8, 0x55, 0x54, + 0xaa, 0xa8, 0x55, 0x54, 0xaa, 0xa8, 0x55, 0x54, + 0xaa, 0xa8, 0x55, 0x54, 0xaa, 0xa8, 0x55, 0x54, + 0xaa, 0xa8, 0x55, 0x54, 0xaa, 0xa8, 0x55, 0x54, + 0xaa, 0xa8, 0x55, 0x54, 0xaa, 0xa8, 0x55, 0x54, + 0xaa, 0xa8, 0x55, 0x54, 0xaa, 0xa8, 0x55, 0x54, + 0xaa, 0xa8, 0x55, 0x54, 0xaa, 0xa8, 0x55, 0x54, /* 177 */ + 0xff, 0xfc, 0xaa, 0xa8, 0xff, 0xfc, 0xaa, 0xa8, + 0xff, 0xfc, 0xaa, 0xa8, 0xff, 0xfc, 0xaa, 0xa8, + 0xff, 0xfc, 0xaa, 0xa8, 0xff, 0xfc, 0xaa, 0xa8, + 0xff, 0xfc, 0xaa, 0xa8, 0xff, 0xfc, 0xaa, 0xa8, + 0xff, 0xfc, 0xaa, 0xa8, 0xff, 0xfc, 0xaa, 0xa8, + 0xff, 0xfc, 0xaa, 0xa8, 0xff, 0xfc, 0xaa, 0xa8, + 0xff, 0xfc, 0xaa, 0xa8, 0xff, 0xfc, 0xaa, 0xa8, /* 178 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 179 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0xff, 0x00, 0xff, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 180 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0xff, 0x00, + 0xff, 0x00, 0x03, 0x00, 0x03, 0x00, 0xff, 0x00, + 0xff, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 181 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0xfc, 0xc0, 0xfc, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 182 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xc0, 0xff, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 183 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, + 0xff, 0x00, 0x03, 0x00, 0x03, 0x00, 0xff, 0x00, + 0xff, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 184 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0xfc, 0xc0, + 0xfc, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0xfc, 0xc0, + 0xfc, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 185 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 186 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, + 0xff, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0xfc, 0xc0, + 0xfc, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 187 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0xfc, 0xc0, + 0xfc, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0xff, 0xc0, + 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 188 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0xff, 0xc0, 0xff, 0xc0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 189 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0xff, 0x00, + 0xff, 0x00, 0x03, 0x00, 0x03, 0x00, 0xff, 0x00, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 190 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 191 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0xfc, 0x03, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 192 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0xff, 0xfc, 0xff, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 193 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xfc, 0xff, 0xfc, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 194 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0xfc, 0x03, 0xfc, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 195 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xfc, 0xff, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 196 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0xff, 0xfc, 0xff, 0xfc, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 197 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xfc, + 0x03, 0xfc, 0x03, 0x00, 0x03, 0x00, 0x03, 0xfc, + 0x03, 0xfc, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 198 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xfc, 0x0c, 0xfc, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 199 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xfc, + 0x0c, 0xfc, 0x0c, 0x00, 0x0c, 0x00, 0x0f, 0xfc, + 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 200 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, + 0x0f, 0xfc, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0xfc, + 0x0c, 0xfc, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 201 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0xfc, 0xfc, + 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, + 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 202 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, + 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0xfc, 0xfc, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 203 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xfc, + 0x0c, 0xfc, 0x0c, 0x00, 0x0c, 0x00, 0x0c, 0xfc, + 0x0c, 0xfc, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 204 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, + 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, + 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 205 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0xfc, 0xfc, + 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, + 0xfc, 0xfc, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 206 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0xff, 0xfc, + 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, + 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 207 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0xff, 0xfc, 0xff, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 208 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, + 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, + 0xff, 0xfc, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 209 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xfc, 0xff, 0xfc, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 210 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0f, 0xfc, 0x0f, 0xfc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 211 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xfc, + 0x03, 0xfc, 0x03, 0x00, 0x03, 0x00, 0x03, 0xfc, + 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 212 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, + 0x03, 0xfc, 0x03, 0x00, 0x03, 0x00, 0x03, 0xfc, + 0x03, 0xfc, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 213 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0xfc, 0x0f, 0xfc, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 214 */ + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0xff, 0xfc, 0xff, 0xfc, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, 0x0c, 0xc0, /* 215 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0xff, 0xfc, + 0xff, 0xfc, 0x03, 0x00, 0x03, 0x00, 0xff, 0xfc, + 0xff, 0xfc, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 216 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 217 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xfc, 0x03, 0xfc, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 218 */ + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, /* 219 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, /* 220 */ + 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, + 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, + 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, + 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, + 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, + 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, + 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, 0xfe, 0x00, /* 221 */ + 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, + 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, + 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, + 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, + 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, + 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, + 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, 0x01, 0xfc, /* 222 */ + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, 0xff, 0xfc, + 0xff, 0xfc, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 223 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0x98, 0x3f, 0xf8, 0x70, 0xf0, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0xf0, + 0x3f, 0xf8, 0x1f, 0x98, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 224 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0x80, 0x7f, 0xc0, 0x60, 0xe0, 0x60, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0x7f, 0xc0, + 0x7f, 0xc0, 0x60, 0xe0, 0x60, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x70, + 0x7f, 0xe0, 0x7f, 0xc0, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, /* 225 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 226 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 227 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x70, 0x00, 0x38, 0x00, + 0x1c, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x07, 0x00, + 0x0e, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 228 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0xf8, 0x3f, 0xf8, 0x71, 0xc0, + 0x60, 0xe0, 0x60, 0x70, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 229 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x70, 0x60, 0xf0, 0x61, 0xf0, + 0x7f, 0xb0, 0x7f, 0x30, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, /* 230 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7f, 0xf8, 0x7f, 0xf8, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 231 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x1f, 0xe0, 0x3f, 0xf0, + 0x73, 0x38, 0x63, 0x18, 0x63, 0x18, 0x63, 0x18, + 0x63, 0x18, 0x63, 0x18, 0x63, 0x18, 0x63, 0x18, + 0x63, 0x18, 0x73, 0x38, 0x3f, 0xf0, 0x1f, 0xe0, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 232 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x6f, 0xb0, 0x6f, 0xb0, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 233 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xe0, 0x3f, 0xf0, 0x70, 0x38, 0x60, 0x18, + 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, + 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x70, 0x38, + 0x38, 0x70, 0x1c, 0xe0, 0x0c, 0xc0, 0x0c, 0xc0, + 0x7c, 0xf8, 0x7c, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 234 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1f, 0xe0, 0x1f, 0xe0, 0x0e, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x1f, 0xc0, 0x3f, 0xe0, 0x70, 0x70, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x70, 0x70, + 0x3f, 0xe0, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 235 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0xe0, 0x3f, 0xf0, 0x77, 0xb8, + 0x63, 0x18, 0x63, 0x18, 0x63, 0x18, 0x77, 0xb8, + 0x3f, 0xf0, 0x1c, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 236 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x00, 0xe0, 0x1f, 0xc0, + 0x3f, 0xe0, 0x71, 0xf0, 0x61, 0xb0, 0x63, 0x30, + 0x63, 0x30, 0x66, 0x30, 0x66, 0x30, 0x6c, 0x30, + 0x7c, 0x70, 0x3f, 0xe0, 0x1f, 0xc0, 0x38, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 237 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x1f, 0xf0, + 0x38, 0x00, 0x30, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x60, 0x00, 0x60, 0x00, + 0x30, 0x00, 0x38, 0x00, 0x1f, 0xf0, 0x07, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 238 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0f, 0x80, 0x1f, 0xc0, 0x38, 0xe0, 0x30, 0x60, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, + 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 239 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 240 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x7f, 0xf8, + 0x7f, 0xf8, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf8, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 241 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x38, 0x00, 0x1c, 0x00, 0x0e, 0x00, + 0x07, 0x00, 0x03, 0x80, 0x01, 0xc0, 0x00, 0xe0, + 0x01, 0xc0, 0x03, 0x80, 0x07, 0x00, 0x0e, 0x00, + 0x1c, 0x00, 0x38, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 242 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x70, 0x00, 0xe0, 0x01, 0xc0, 0x03, 0x80, + 0x07, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x38, 0x00, + 0x1c, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xc0, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x00, + 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 243 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xf0, 0x03, 0xf8, 0x03, 0x18, 0x03, 0x18, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, /* 244 */ + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x7f, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 245 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7f, 0xf8, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 246 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1e, 0x18, 0x3f, 0x38, 0x73, 0xf0, + 0x61, 0xe0, 0x00, 0x00, 0x1e, 0x18, 0x3f, 0x38, + 0x73, 0xf0, 0x60, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 247 */ + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x1f, 0xc0, + 0x18, 0xc0, 0x18, 0xc0, 0x18, 0xc0, 0x1f, 0xc0, + 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 248 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x0f, 0x80, 0x0f, 0x80, 0x0f, 0x80, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 249 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 250 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x78, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, + 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x60, + 0x38, 0x60, 0x1c, 0x60, 0x0e, 0x60, 0x07, 0x60, + 0x03, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 251 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xc0, + 0x1f, 0xe0, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, + 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, 0x18, 0x60, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 252 */ + 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x1f, 0xc0, + 0x18, 0xc0, 0x00, 0xc0, 0x01, 0xc0, 0x03, 0x80, + 0x07, 0x00, 0x0e, 0x00, 0x1f, 0xc0, 0x1f, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 253 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3f, 0xe0, 0x3f, 0xe0, 0x3f, 0xe0, 0x3f, 0xe0, + 0x3f, 0xe0, 0x3f, 0xe0, 0x3f, 0xe0, 0x3f, 0xe0, + 0x3f, 0xe0, 0x3f, 0xe0, 0x3f, 0xe0, 0x3f, 0xe0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 254 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 255 */ + }, + } +) + +func init() { + availableFonts = append(availableFonts, terminus14x28) +} diff --git a/src/gopheros/device/video/console/font/terminus_8x16.go b/src/gopheros/device/video/console/font/terminus_8x16.go new file mode 100644 index 0000000..598597b --- /dev/null +++ b/src/gopheros/device/video/console/font/terminus_8x16.go @@ -0,0 +1,530 @@ +package font + +var ( + // terminus8x16 is based on the bold 8x16 terminus font which is available + // at: http://terminus-font.sourceforge.net + terminus8x16 = &Font{ + Name: "terminus8x16", + GlyphWidth: 8, + GlyphHeight: 16, + BytesPerRow: 1, + Data: []byte{ + 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 0 */ + 0x00, 0x00, 0x7c, 0x82, 0xaa, 0x82, 0x82, 0xba, + 0x92, 0x82, 0x82, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 1 */ + 0x00, 0x00, 0x7c, 0xfe, 0xd6, 0xfe, 0xfe, 0xc6, + 0xee, 0xfe, 0xfe, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 2 */ + 0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, + 0xfe, 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, /* 3 */ + 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, + 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, /* 4 */ + 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x18, 0x5a, 0xff, + 0xff, 0x5a, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, /* 5 */ + 0x00, 0x00, 0x18, 0x18, 0x3c, 0x7e, 0xff, 0xff, + 0x7e, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, /* 6 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, + 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 7 */ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xc3, + 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 8 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, + 0x42, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, /* 9 */ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd, + 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, /* 10 */ + 0x00, 0x00, 0x3e, 0x0e, 0x1a, 0x32, 0x78, 0xcc, + 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00, /* 11 */ + 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, + 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, /* 12 */ + 0x00, 0x00, 0x7e, 0x66, 0x7e, 0x60, 0x60, 0x60, + 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, /* 13 */ + 0x00, 0x00, 0x7e, 0x66, 0x7e, 0x66, 0x66, 0x66, + 0x66, 0x66, 0x6e, 0xec, 0xc0, 0x00, 0x00, 0x00, /* 14 */ + 0x00, 0x00, 0x00, 0x18, 0xdb, 0x7e, 0x3c, 0xe7, + 0x3c, 0x7e, 0xdb, 0x18, 0x00, 0x00, 0x00, 0x00, /* 15 */ + 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xfc, 0xff, + 0xff, 0xfc, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, /* 16 */ + 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x3f, 0xff, + 0xff, 0x3f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, /* 17 */ + 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, + 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, /* 18 */ + 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, /* 19 */ + 0x00, 0x00, 0x7e, 0xd6, 0xd6, 0xd6, 0xd6, 0x76, + 0x16, 0x16, 0x16, 0x16, 0x00, 0x00, 0x00, 0x00, /* 20 */ + 0x00, 0x3c, 0x66, 0x60, 0x38, 0x6c, 0x66, 0x66, + 0x36, 0x1c, 0x06, 0x66, 0x3c, 0x00, 0x00, 0x00, /* 21 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 22 */ + 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, + 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 23 */ + 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, /* 24 */ + 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, /* 25 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0c, 0xfe, + 0xfe, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, /* 26 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x60, 0xfe, + 0xfe, 0x60, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, /* 27 */ + 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 28 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x66, 0xff, + 0xff, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, /* 29 */ + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x3c, 0x3c, + 0x7e, 0x7e, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, /* 30 */ + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7e, 0x7e, + 0x3c, 0x3c, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, /* 31 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 32 */ + 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, /* 33 */ + 0x00, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 34 */ + 0x00, 0x00, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, + 0xfe, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, /* 35 */ + 0x00, 0x10, 0x10, 0x7c, 0xd6, 0xd0, 0xd0, 0x7c, + 0x16, 0x16, 0xd6, 0x7c, 0x10, 0x10, 0x00, 0x00, /* 36 */ + 0x00, 0x00, 0x66, 0xd6, 0x6c, 0x0c, 0x18, 0x18, + 0x30, 0x36, 0x6b, 0x66, 0x00, 0x00, 0x00, 0x00, /* 37 */ + 0x00, 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x76, 0xdc, + 0xcc, 0xcc, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00, /* 38 */ + 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 39 */ + 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, /* 40 */ + 0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, /* 41 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x38, 0xfe, + 0x38, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 42 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, + 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 43 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, /* 44 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 45 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, /* 46 */ + 0x00, 0x00, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, + 0x30, 0x30, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, /* 47 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xce, 0xde, 0xf6, + 0xe6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 48 */ + 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 49 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x06, 0x0c, 0x18, + 0x30, 0x60, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 50 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x06, 0x3c, 0x06, + 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 51 */ + 0x00, 0x00, 0x06, 0x0e, 0x1e, 0x36, 0x66, 0xc6, + 0xfe, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, /* 52 */ + 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xfc, 0x06, + 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 53 */ + 0x00, 0x00, 0x3c, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 54 */ + 0x00, 0x00, 0xfe, 0x06, 0x06, 0x0c, 0x0c, 0x18, + 0x18, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, /* 55 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 56 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, + 0x06, 0x06, 0x0c, 0x78, 0x00, 0x00, 0x00, 0x00, /* 57 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, /* 58 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, + 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, /* 59 */ + 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, + 0x30, 0x18, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, /* 60 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, + 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 61 */ + 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, + 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, /* 62 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x0c, 0x18, + 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, /* 63 */ + 0x00, 0x00, 0x7c, 0xc6, 0xce, 0xd6, 0xd6, 0xd6, + 0xd6, 0xce, 0xc0, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 64 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 65 */ + 0x00, 0x00, 0xfc, 0xc6, 0xc6, 0xc6, 0xfc, 0xc6, + 0xc6, 0xc6, 0xc6, 0xfc, 0x00, 0x00, 0x00, 0x00, /* 66 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 67 */ + 0x00, 0x00, 0xf8, 0xcc, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xcc, 0xf8, 0x00, 0x00, 0x00, 0x00, /* 68 */ + 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xf8, 0xc0, + 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 69 */ + 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xf8, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, /* 70 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc0, 0xc0, 0xde, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 71 */ + 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 72 */ + 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, /* 73 */ + 0x00, 0x00, 0x1e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00, /* 74 */ + 0x00, 0x00, 0xc6, 0xc6, 0xcc, 0xd8, 0xf0, 0xf0, + 0xd8, 0xcc, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 75 */ + 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 76 */ + 0x00, 0x00, 0x82, 0xc6, 0xee, 0xfe, 0xd6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 77 */ + 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xe6, 0xf6, 0xde, + 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 78 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 79 */ + 0x00, 0x00, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, + 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, /* 80 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xde, 0x7c, 0x06, 0x00, 0x00, 0x00, /* 81 */ + 0x00, 0x00, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, + 0xf0, 0xd8, 0xcc, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 82 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0x7c, 0x06, + 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 83 */ + 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, /* 84 */ + 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 85 */ + 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x6c, + 0x6c, 0x6c, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, /* 86 */ + 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, + 0xfe, 0xee, 0xc6, 0x82, 0x00, 0x00, 0x00, 0x00, /* 87 */ + 0x00, 0x00, 0xc6, 0xc6, 0x6c, 0x6c, 0x38, 0x38, + 0x6c, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 88 */ + 0x00, 0x00, 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, /* 89 */ + 0x00, 0x00, 0xfe, 0x06, 0x06, 0x0c, 0x18, 0x30, + 0x60, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 90 */ + 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00, /* 91 */ + 0x00, 0x00, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, + 0x0c, 0x0c, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, /* 92 */ + 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x3c, 0x00, 0x00, 0x00, 0x00, /* 93 */ + 0x00, 0x18, 0x3c, 0x66, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 94 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, /* 95 */ + 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 96 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x06, 0x7e, + 0xc6, 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 97 */ + 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xfc, 0x00, 0x00, 0x00, 0x00, /* 98 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, + 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 99 */ + 0x00, 0x00, 0x06, 0x06, 0x06, 0x7e, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 100 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, + 0xfe, 0xc0, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 101 */ + 0x00, 0x00, 0x1e, 0x30, 0x30, 0xfc, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, /* 102 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x7c, 0x00, /* 103 */ + 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 104 */ + 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, /* 105 */ + 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06, + 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00, /* 106 */ + 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc6, 0xcc, 0xd8, + 0xf0, 0xd8, 0xcc, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 107 */ + 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, /* 108 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xd6, 0xd6, + 0xd6, 0xd6, 0xd6, 0xd6, 0x00, 0x00, 0x00, 0x00, /* 109 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 110 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 111 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xfc, 0xc0, 0xc0, 0xc0, 0x00, /* 112 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x00, /* 113 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xf0, 0xe0, + 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, /* 114 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xc0, 0xc0, + 0x7c, 0x06, 0x06, 0xfc, 0x00, 0x00, 0x00, 0x00, /* 115 */ + 0x00, 0x00, 0x30, 0x30, 0x30, 0xfc, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x1e, 0x00, 0x00, 0x00, 0x00, /* 116 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 117 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, + 0x6c, 0x6c, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, /* 118 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xd6, + 0xd6, 0xd6, 0xd6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 119 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0x6c, + 0x38, 0x6c, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 120 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x7c, 0x00, /* 121 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x0c, 0x18, + 0x30, 0x60, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 122 */ + 0x00, 0x00, 0x1c, 0x30, 0x30, 0x30, 0x60, 0x30, + 0x30, 0x30, 0x30, 0x1c, 0x00, 0x00, 0x00, 0x00, /* 123 */ + 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, /* 124 */ + 0x00, 0x00, 0x70, 0x18, 0x18, 0x18, 0x0c, 0x18, + 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, /* 125 */ + 0x00, 0x73, 0xdb, 0xce, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 126 */ + 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, + 0xc6, 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 127 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc6, 0xc6, 0x7c, 0x30, 0x30, 0x60, 0x00, /* 128 */ + 0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 129 */ + 0x00, 0x00, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xc6, + 0xfe, 0xc0, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 130 */ + 0x00, 0x00, 0x38, 0x6c, 0x00, 0x7c, 0x06, 0x7e, + 0xc6, 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 131 */ + 0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0x06, 0x7e, + 0xc6, 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 132 */ + 0x00, 0x00, 0x30, 0x18, 0x00, 0x7c, 0x06, 0x7e, + 0xc6, 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 133 */ + 0x00, 0x00, 0x38, 0x6c, 0x38, 0x7c, 0x06, 0x7e, + 0xc6, 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 134 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, + 0xc0, 0xc0, 0xc6, 0x7c, 0x30, 0x30, 0x60, 0x00, /* 135 */ + 0x00, 0x00, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, + 0xfe, 0xc0, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 136 */ + 0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, + 0xfe, 0xc0, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 137 */ + 0x00, 0x00, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xc6, + 0xfe, 0xc0, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 138 */ + 0x00, 0x00, 0x6c, 0x6c, 0x00, 0x38, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, /* 139 */ + 0x00, 0x00, 0x38, 0x6c, 0x00, 0x38, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, /* 140 */ + 0x00, 0x00, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, /* 141 */ + 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 142 */ + 0x38, 0x6c, 0x38, 0x7c, 0xc6, 0xc6, 0xc6, 0xfe, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 143 */ + 0x18, 0x30, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xf8, + 0xc0, 0xc0, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 144 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x16, 0x16, + 0x7e, 0xd0, 0xd0, 0x6c, 0x00, 0x00, 0x00, 0x00, /* 145 */ + 0x00, 0x00, 0x7e, 0xd8, 0xd8, 0xd8, 0xfe, 0xd8, + 0xd8, 0xd8, 0xd8, 0xde, 0x00, 0x00, 0x00, 0x00, /* 146 */ + 0x00, 0x00, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 147 */ + 0x00, 0x00, 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 148 */ + 0x00, 0x00, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 149 */ + 0x00, 0x00, 0x38, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 150 */ + 0x00, 0x00, 0x30, 0x18, 0x00, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 151 */ + 0x00, 0x00, 0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x7c, 0x00, /* 152 */ + 0x6c, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 153 */ + 0x6c, 0x6c, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 154 */ + 0x00, 0x00, 0x00, 0x10, 0x10, 0x7c, 0xd6, 0xd0, + 0xd0, 0xd0, 0xd6, 0x7c, 0x10, 0x10, 0x00, 0x00, /* 155 */ + 0x00, 0x00, 0x38, 0x6c, 0x60, 0x60, 0xf8, 0x60, + 0x60, 0x60, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 156 */ + 0x00, 0x00, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x7e, + 0x18, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, /* 157 */ + 0x00, 0x00, 0xf8, 0xcc, 0xcc, 0xcc, 0xfa, 0xc6, + 0xcf, 0xc6, 0xc6, 0xc3, 0x00, 0x00, 0x00, 0x00, /* 158 */ + 0x00, 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x7e, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0xd8, 0x70, 0x00, /* 159 */ + 0x00, 0x00, 0x18, 0x30, 0x00, 0x7c, 0x06, 0x7e, + 0xc6, 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 160 */ + 0x00, 0x00, 0x0c, 0x18, 0x00, 0x38, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, /* 161 */ + 0x00, 0x00, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 162 */ + 0x00, 0x00, 0x18, 0x30, 0x00, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 163 */ + 0x00, 0x00, 0x76, 0xdc, 0x00, 0xfc, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 164 */ + 0x76, 0xdc, 0x00, 0xc6, 0xc6, 0xe6, 0xf6, 0xde, + 0xce, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 165 */ + 0x00, 0x3c, 0x06, 0x3e, 0x66, 0x3e, 0x00, 0x7e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 166 */ + 0x00, 0x3c, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x7e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 167 */ + 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 168 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0, 0xc0, + 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 169 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0x06, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 170 */ + 0x00, 0x60, 0xe0, 0x62, 0x66, 0x6c, 0x18, 0x30, + 0x60, 0xdc, 0xb6, 0x0c, 0x18, 0x3e, 0x00, 0x00, /* 171 */ + 0x00, 0x60, 0xe0, 0x62, 0x66, 0x6c, 0x18, 0x30, + 0x66, 0xce, 0x9a, 0x3e, 0x06, 0x06, 0x00, 0x00, /* 172 */ + 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, /* 173 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x36, 0x6c, + 0xd8, 0x6c, 0x36, 0x1b, 0x00, 0x00, 0x00, 0x00, /* 174 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36, + 0x1b, 0x36, 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, /* 175 */ + 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, + 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, /* 176 */ + 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, + 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, /* 177 */ + 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, + 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, 0xee, 0xbb, /* 178 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 179 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, + 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 180 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0xf8, 0x18, + 0xf8, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 181 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xec, + 0xec, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 182 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xfc, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 183 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x18, + 0xf8, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 184 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xec, 0xec, 0x0c, + 0xec, 0xec, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 185 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 186 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x0c, + 0xec, 0xec, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 187 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xec, 0xec, 0x0c, + 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 188 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xfc, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 189 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0xf8, 0x18, + 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 190 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, + 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 191 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 192 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 193 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 194 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, + 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 195 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 196 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, + 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 197 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x1f, 0x18, + 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 198 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6f, + 0x6f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 199 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6f, 0x6f, 0x60, + 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 200 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x60, + 0x6f, 0x6f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 201 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xef, 0xef, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 202 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, + 0xef, 0xef, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 203 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6f, 0x6f, 0x60, + 0x6f, 0x6f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 204 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 205 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xef, 0xef, 0x00, + 0xef, 0xef, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 206 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 207 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 208 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, + 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 209 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 210 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x7f, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 211 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x1f, 0x18, + 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 212 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x18, + 0x1f, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 213 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, + 0x7f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 214 */ + 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0xff, + 0xff, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, /* 215 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0xff, 0x18, + 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 216 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, + 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 217 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, + 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 218 */ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 219 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 220 */ + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, + 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, /* 221 */ + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, + 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, /* 222 */ + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 223 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0xce, 0xcc, + 0xcc, 0xcc, 0xce, 0x7a, 0x00, 0x00, 0x00, 0x00, /* 224 */ + 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xc8, 0xfc, 0xc6, + 0xc6, 0xc6, 0xc6, 0xfc, 0xc0, 0xc0, 0xc0, 0x00, /* 225 */ + 0x00, 0x00, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, + 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, /* 226 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 227 */ + 0x00, 0x00, 0xfe, 0xc0, 0x60, 0x30, 0x18, 0x18, + 0x30, 0x60, 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, /* 228 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, /* 229 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xce, 0xf6, 0xc0, 0xc0, 0xc0, 0x00, /* 230 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, /* 231 */ + 0x00, 0x00, 0x10, 0x7c, 0xd6, 0xd6, 0xd6, 0xd6, + 0xd6, 0xd6, 0x7c, 0x10, 0x00, 0x00, 0x00, 0x00, /* 232 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xd6, 0xd6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 233 */ + 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0x6c, 0x6c, 0xee, 0x00, 0x00, 0x00, 0x00, /* 234 */ + 0x00, 0x00, 0x7e, 0x30, 0x18, 0x7c, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, /* 235 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xd6, 0xd6, + 0xd6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 236 */ + 0x00, 0x00, 0x06, 0x0c, 0x7c, 0xce, 0xde, 0xf6, + 0xe6, 0x7c, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, /* 237 */ + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x60, 0xc0, 0xfe, + 0xc0, 0x60, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, /* 238 */ + 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, /* 239 */ + 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, + 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, /* 240 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, + 0x18, 0x18, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 241 */ + 0x00, 0x00, 0x00, 0x30, 0x18, 0x0c, 0x06, 0x0c, + 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 242 */ + 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, + 0x18, 0x0c, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, /* 243 */ + 0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x18, 0x18, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, /* 244 */ + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, + 0x18, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, /* 245 */ + 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, + 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, /* 246 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00, + 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 247 */ + 0x00, 0x38, 0x6c, 0x6c, 0x38, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 248 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, + 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 249 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 250 */ + 0x00, 0x0e, 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, + 0xcc, 0x6c, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00, /* 251 */ + 0x00, 0x00, 0x78, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 252 */ + 0x00, 0x38, 0x6c, 0x0c, 0x18, 0x30, 0x7c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 253 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x7c, 0x7c, + 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, /* 254 */ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 255 */ + }, + } +) + +func init() { + availableFonts = append(availableFonts, terminus8x16) +} diff --git a/src/gopheros/device/video/console/logo/gopher_128.go b/src/gopheros/device/video/console/logo/gopher_128.go new file mode 100644 index 0000000..7c4b651 --- /dev/null +++ b/src/gopheros/device/video/console/logo/gopher_128.go @@ -0,0 +1,790 @@ +package logo + +import "image/color" + +var ( + gopher95x128 = Image{ + Width: 95, + Height: 128, + Align: AlignCenter, + TransparentIndex: 0, + Palette: []color.RGBA{ + {R: 255, G: 0, B: 255}, + {R: 228, G: 230, B: 227}, + {R: 16, G: 24, B: 20}, + {R: 67, G: 97, B: 99}, + {R: 80, G: 158, B: 166}, + {R: 103, G: 216, B: 233}, + {R: 151, G: 155, B: 154}, + {R: 249, G: 251, B: 248}, + {R: 169, G: 144, B: 112}, + {R: 244, G: 210, B: 158}, + }, + Data: []uint8{ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, + 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, + 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, + 0x2, 0x2, 0x2, 0x3, 0x3, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x3, 0x3, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x2, 0x2, 0x3, 0x3, 0x4, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x3, 0x2, 0x1, 0x1, 0x1, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x2, 0x3, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x3, 0x2, 0x1, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x1, 0x3, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x2, + 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x1, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, + 0x2, 0x1, 0x0, 0x0, 0x1, 0x1, 0x1, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, + 0x2, 0x1, 0x1, 0x2, 0x3, 0x4, 0x5, 0x5, 0x5, 0x4, 0x3, 0x2, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x1, 0x2, 0x2, 0x3, 0x3, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1, 0x3, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x2, + 0x3, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x2, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, + 0x2, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, + 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x2, 0x2, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x3, 0x2, 0x3, 0x3, 0x6, 0x6, 0x3, 0x2, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x2, 0x6, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x3, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x3, + 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x2, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x3, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, + 0x2, 0x2, 0x2, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x4, + 0x5, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x4, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, + 0x2, 0x2, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x4, 0x2, 0x2, 0x2, 0x2, + 0x3, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, + 0x2, 0x2, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, + 0x5, 0x5, 0x5, 0x5, 0x3, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x4, 0x6, 0x7, 0x7, 0x7, 0x7, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x2, + 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x4, 0x2, 0x2, 0x2, 0x2, 0x4, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x3, 0x7, 0x7, 0x7, 0x7, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, + 0x7, 0x7, 0x7, 0x6, 0x2, 0x2, 0x2, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x3, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x2, 0x2, 0x2, 0x2, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x4, 0x6, 0x7, 0x7, 0x6, 0x2, 0x2, 0x2, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x7, + 0x7, 0x6, 0x2, 0x2, 0x2, 0x2, 0x2, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x4, 0x2, 0x2, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x4, 0x6, 0x7, 0x6, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x3, 0x7, 0x7, + 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x4, 0x5, + 0x5, 0x5, 0x5, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, + 0x6, 0x7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x3, 0x7, 0x7, 0x2, + 0x2, 0x2, 0x2, 0x3, 0x2, 0x2, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x4, 0x5, 0x5, + 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x6, + 0x7, 0x3, 0x2, 0x2, 0x2, 0x3, 0x6, 0x2, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x3, 0x7, 0x7, 0x2, 0x2, + 0x2, 0x2, 0x6, 0x6, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x5, 0x5, 0x5, + 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x4, 0x5, 0x5, 0x5, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0x7, + 0x3, 0x2, 0x2, 0x2, 0x6, 0x7, 0x2, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x7, 0x7, 0x6, 0x2, 0x2, + 0x2, 0x2, 0x2, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x5, 0x4, 0x3, 0x1, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x4, 0x5, 0x5, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0x7, 0x6, + 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0x7, 0x7, 0x6, 0x2, 0x2, + 0x2, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, + 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x3, 0x2, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x3, 0x4, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x7, 0x7, 0x6, + 0x2, 0x2, 0x2, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x7, 0x7, 0x7, 0x7, 0x6, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x1, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x6, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x2, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x3, 0x5, 0x5, + 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x4, 0x5, 0x3, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x6, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x4, 0x5, 0x5, 0x3, + 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x5, 0x3, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x6, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x4, 0x5, 0x5, 0x2, 0x2, 0x2, + 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x5, 0x4, 0x3, 0x6, 0x6, 0x6, 0x6, 0x7, 0x7, + 0x6, 0x6, 0x6, 0x6, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x6, 0x6, 0x6, 0x7, + 0x7, 0x7, 0x7, 0x6, 0x6, 0x6, 0x3, 0x3, 0x5, 0x5, 0x5, 0x4, 0x2, 0x2, 0x2, 0x2, + 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x5, 0x5, 0x5, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, + 0x3, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x6, 0x6, 0x6, + 0x6, 0x6, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x2, 0x2, 0x2, 0x2, 0x2, + 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x4, + 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x8, 0x9, 0x8, 0x2, 0x2, 0x2, 0x2, 0x2, + 0x2, 0x2, 0x8, 0x9, 0x8, 0x6, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x8, 0x9, 0x9, 0x9, 0x9, 0x8, 0x8, 0x8, 0x8, 0x8, + 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x4, 0x6, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, + 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x4, 0x8, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, + 0x9, 0x9, 0x9, 0x9, 0x8, 0x6, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x4, 0x8, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, + 0x9, 0x9, 0x9, 0x9, 0x6, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x4, 0x6, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, 0x8, 0x8, 0x8, 0x8, 0x9, 0x9, 0x9, + 0x9, 0x9, 0x8, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x4, 0x8, 0x8, 0x8, 0x8, 0x8, 0x6, 0x6, 0x3, 0x6, 0x6, 0x6, 0x8, 0x8, 0x8, 0x9, + 0x8, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x4, 0x3, 0x3, 0x6, 0x6, 0x7, 0x7, 0x6, 0x6, 0x7, 0x7, 0x7, 0x2, 0x4, 0x6, 0x4, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x4, 0x6, 0x7, 0x7, 0x7, 0x7, 0x3, 0x6, 0x7, 0x7, 0x7, 0x2, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, + 0x6, 0x7, 0x7, 0x7, 0x7, 0x3, 0x6, 0x7, 0x7, 0x7, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, + 0x7, 0x7, 0x7, 0x7, 0x3, 0x6, 0x7, 0x7, 0x7, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x7, + 0x7, 0x7, 0x7, 0x6, 0x6, 0x7, 0x7, 0x7, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x6, 0x7, + 0x7, 0x6, 0x2, 0x6, 0x7, 0x7, 0x7, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x6, 0x6, + 0x3, 0x4, 0x3, 0x6, 0x6, 0x6, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x4, 0x5, + 0x5, 0x5, 0x3, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, + 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x2, 0x4, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x2, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x3, 0x3, 0x8, 0x2, 0x4, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x8, 0x8, 0x8, 0x3, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x2, 0x3, 0x8, 0x8, 0x9, 0x9, 0x8, 0x4, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x4, 0x8, 0x9, 0x9, 0x9, 0x8, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x2, 0x8, 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x4, 0x8, 0x9, 0x9, 0x9, 0x9, 0x9, 0x3, 0x1, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x8, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x4, 0x8, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x2, 0x1, 0x0, 0x0, 0x1, 0x2, + 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x8, 0x9, 0x9, 0x9, 0x9, 0x8, 0x9, 0x2, 0x1, 0x0, 0x0, 0x1, 0x2, 0x8, + 0x3, 0x9, 0x9, 0x9, 0x9, 0x9, 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x2, 0x9, 0x9, 0x9, 0x9, 0x8, 0x2, 0x2, 0x1, 0x0, 0x0, 0x0, 0x1, 0x2, 0x9, + 0x9, 0x9, 0x9, 0x8, 0x2, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x2, 0x2, 0x8, 0x9, 0x9, 0x9, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x8, 0x9, + 0x8, 0x3, 0x2, 0x1, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, + 0x1, 0x2, 0x3, 0x8, 0x8, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x2, 0x1, + 0x1, 0x1, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, + 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, + 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x2, 0x1, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x2, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, + 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, + 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x2, 0x1, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x3, + 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x8, 0x9, 0x8, 0x2, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x8, 0x9, 0x8, + 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x9, 0x9, 0x9, 0x9, 0x8, 0x2, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x9, 0x9, 0x9, 0x9, 0x9, + 0x3, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x3, 0x8, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, + 0x8, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, + 0x2, 0x8, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, + 0x9, 0x3, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x2, 0x1, 0x1, + 0x2, 0x8, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x8, 0x9, 0x8, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, + 0x3, 0x2, 0x1, 0x2, 0x3, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x3, 0x2, 0x1, 0x1, 0x0, 0x0, 0x1, + 0x2, 0x8, 0x9, 0x9, 0x9, 0x9, 0x3, 0x9, 0x9, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x2, 0x9, 0x9, 0x3, 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, 0x3, 0x1, 0x1, + 0x1, 0x1, 0x1, 0x1, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x4, 0x4, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x9, 0x9, 0x9, 0x9, 0x8, 0x8, 0x9, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x2, 0x8, 0x8, 0x8, 0x9, 0x9, 0x9, 0x9, 0x8, 0x2, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x2, 0x3, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x4, 0x3, 0x3, + 0x3, 0x3, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x9, 0x9, 0x9, 0x9, 0x8, 0x8, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x2, 0x8, 0x9, 0x9, 0x9, 0x9, 0x8, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0x2, 0x2, + 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x8, 0x9, 0x9, 0x3, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x3, 0x9, 0x9, 0x9, 0x3, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, + 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x2, 0x2, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x2, 0x2, 0x2, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + }, + } +) + +func init() { + availableLogos = append(availableLogos, &gopher95x128) +} diff --git a/src/gopheros/device/video/console/logo/gopher_64.go b/src/gopheros/device/video/console/logo/gopher_64.go new file mode 100644 index 0000000..43317b9 --- /dev/null +++ b/src/gopheros/device/video/console/logo/gopher_64.go @@ -0,0 +1,222 @@ +package logo + +import "image/color" + +var ( + gopher48x64 = Image{ + Width: 48, + Height: 64, + Align: AlignCenter, + TransparentIndex: 0, + Palette: []color.RGBA{ + {R: 255, G: 0, B: 255}, + {R: 228, G: 230, B: 227}, + {R: 23, G: 30, B: 27}, + {R: 70, G: 108, B: 109}, + {R: 79, G: 157, B: 165}, + {R: 102, G: 215, B: 232}, + {R: 176, G: 180, B: 180}, + {R: 249, G: 251, B: 248}, + {R: 248, G: 207, B: 157}, + {R: 172, G: 147, B: 115}, + }, + Data: []uint8{ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x1, 0x1, 0x1, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x2, 0x1, 0x1, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x3, + 0x3, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, + 0x3, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x1, 0x1, 0x4, 0x4, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x4, 0x3, 0x1, 0x1, 0x3, 0x4, 0x5, 0x4, 0x4, + 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x6, 0x6, 0x6, + 0x4, 0x4, 0x5, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x4, 0x3, 0x5, 0x4, 0x4, 0x6, 0x7, + 0x7, 0x6, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x6, 0x4, 0x5, 0x5, 0x4, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x4, 0x5, 0x4, 0x6, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x3, 0x5, 0x5, 0x5, 0x5, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x2, 0x2, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x2, 0x2, 0x3, 0x5, 0x5, 0x6, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x4, 0x5, 0x5, 0x4, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x4, 0x5, 0x5, 0x5, 0x2, 0x3, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x3, 0x5, 0x4, 0x2, 0x2, 0x5, 0x5, 0x4, 0x6, 0x7, 0x6, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x5, 0x5, 0x4, 0x7, 0x6, 0x2, 0x6, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x6, 0x5, 0x5, 0x5, 0x3, 0x4, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x2, 0x3, 0x5, 0x5, 0x4, 0x6, 0x2, 0x2, 0x2, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x5, 0x5, 0x6, 0x6, 0x2, 0x2, 0x2, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x4, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x4, 0x5, 0x5, 0x5, 0x4, 0x6, 0x2, 0x2, 0x2, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x5, 0x5, 0x4, 0x6, 0x2, 0x2, 0x6, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x3, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x4, 0x5, 0x5, 0x5, 0x4, 0x6, 0x2, 0x2, 0x6, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x5, 0x5, 0x4, 0x7, 0x6, 0x3, 0x6, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x4, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x4, 0x6, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x4, 0x5, 0x5, 0x5, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x3, 0x5, 0x3, 0x2, 0x2, 0x4, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x6, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0x7, 0x7, + 0x7, 0x7, 0x6, 0x3, 0x5, 0x3, 0x2, 0x2, 0x2, 0x2, 0x5, 0x4, 0x6, 0x6, 0x6, 0x6, + 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x5, 0x4, 0x2, 0x2, 0x2, 0x2, 0x2, 0x6, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x4, 0x8, 0x8, 0x9, 0x9, 0x9, 0x8, 0x8, 0x9, 0x4, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x6, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x4, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x4, 0x9, 0x9, 0x9, 0x6, 0x6, 0x9, 0x9, 0x9, 0x4, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0x7, 0x6, 0x7, 0x6, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x4, 0x6, 0x7, 0x6, 0x7, 0x6, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x6, 0x7, 0x6, 0x6, 0x6, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x1, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x3, 0x9, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x9, 0x8, 0x8, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x9, 0x8, 0x8, 0x1, 0x0, 0x0, + 0x0, 0x1, 0x9, 0x8, 0x8, 0x8, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x9, 0x8, 0x8, 0x9, 0x1, 0x0, + 0x0, 0x1, 0x2, 0x9, 0x8, 0x9, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x8, 0x8, 0x2, 0x1, 0x0, + 0x0, 0x0, 0x1, 0x9, 0x3, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x1, 0x3, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x6, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x9, 0x9, 0x4, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x4, 0x6, 0x8, 0x8, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x8, 0x8, 0x8, 0x8, 0x6, 0x4, 0x5, 0x5, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, + 0x5, 0x5, 0x3, 0x9, 0x8, 0x8, 0x8, 0x8, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x9, 0x9, 0x8, 0x8, 0x8, 0x9, 0x1, 0x2, 0x4, + 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, + 0x3, 0x1, 0x1, 0x1, 0x9, 0x8, 0x9, 0x9, 0x9, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x9, 0x9, 0x8, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, + 0x1, 0x1, 0x3, 0x4, 0x4, 0x5, 0x5, 0x5, 0x5, 0x5, 0x4, 0x4, 0x3, 0x3, 0x1, 0x1, + 0x1, 0x0, 0x0, 0x0, 0x1, 0x9, 0x8, 0x9, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x9, 0x9, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x9, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + }, + } +) + +func init() { + availableLogos = append(availableLogos, &gopher48x64) +} diff --git a/src/gopheros/device/video/console/logo/gopher_96.go b/src/gopheros/device/video/console/logo/gopher_96.go new file mode 100644 index 0000000..b2d159e --- /dev/null +++ b/src/gopheros/device/video/console/logo/gopher_96.go @@ -0,0 +1,456 @@ +package logo + +import "image/color" + +var ( + gopher71x96 = Image{ + Width: 71, + Height: 96, + Align: AlignCenter, + TransparentIndex: 0, + Palette: []color.RGBA{ + {R: 255, G: 0, B: 255}, + {R: 228, G: 230, B: 227}, + {R: 16, G: 24, B: 20}, + {R: 67, G: 97, B: 99}, + {R: 103, G: 216, B: 233}, + {R: 80, G: 158, B: 166}, + {R: 151, G: 155, B: 154}, + {R: 249, G: 251, B: 248}, + {R: 169, G: 144, B: 112}, + {R: 244, G: 210, B: 158}, + }, + Data: []uint8{ + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0x2, + 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x2, 0x3, 0x3, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x5, 0x3, 0x2, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x2, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x3, 0x3, 0x1, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x3, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x2, 0x1, 0x1, 0x3, 0x5, 0x4, 0x4, 0x5, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x2, 0x3, 0x3, 0x2, 0x1, 0x1, + 0x1, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x3, 0x6, 0x6, 0x6, + 0x6, 0x2, 0x3, 0x4, 0x4, 0x4, 0x4, 0x5, 0x2, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, + 0x5, 0x4, 0x4, 0x4, 0x4, 0x3, 0x2, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x3, 0x3, + 0x6, 0x3, 0x2, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x5, 0x2, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x5, 0x4, 0x4, + 0x4, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x6, 0x3, 0x4, 0x4, 0x4, 0x4, 0x2, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x3, 0x5, 0x4, 0x4, 0x4, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x4, 0x4, 0x4, 0x5, + 0x2, 0x2, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x2, 0x5, 0x4, 0x4, 0x4, 0x5, 0x5, 0x4, 0x5, 0x4, 0x4, 0x4, 0x5, 0x6, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x5, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x5, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x3, 0x4, 0x4, 0x4, 0x4, 0x5, 0x2, 0x2, 0x5, 0x4, 0x4, 0x4, 0x4, 0x1, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x4, 0x4, 0x4, 0x2, 0x2, 0x2, 0x2, + 0x4, 0x4, 0x4, 0x3, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x6, 0x5, 0x4, 0x4, 0x4, 0x5, 0x6, 0x7, 0x7, 0x7, 0x6, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, + 0x2, 0x5, 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, + 0x4, 0x4, 0x5, 0x2, 0x2, 0x2, 0x5, 0x4, 0x4, 0x4, 0x3, 0x7, 0x7, 0x7, 0x6, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x2, 0x4, 0x4, 0x4, 0x3, + 0x7, 0x7, 0x6, 0x2, 0x2, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x4, 0x4, 0x4, 0x2, 0x2, 0x2, 0x4, 0x4, 0x4, + 0x4, 0x6, 0x7, 0x7, 0x2, 0x2, 0x2, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x3, 0x4, 0x4, 0x4, 0x3, 0x7, 0x7, 0x2, 0x2, 0x2, 0x2, 0x6, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x4, 0x4, + 0x4, 0x4, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x6, 0x7, 0x3, 0x2, 0x2, 0x2, 0x2, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x4, 0x4, 0x3, 0x7, 0x7, + 0x2, 0x2, 0x2, 0x2, 0x2, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x5, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x5, 0x4, 0x4, 0x4, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x2, 0x5, 0x4, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x6, + 0x7, 0x3, 0x2, 0x2, 0x3, 0x2, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x6, 0x4, 0x4, 0x4, 0x3, 0x7, 0x7, 0x2, 0x2, 0x2, 0x6, 0x3, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x3, 0x4, 0x4, + 0x5, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, + 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x6, 0x7, 0x3, 0x2, 0x2, 0x6, 0x2, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x3, 0x4, 0x4, 0x4, 0x3, 0x7, 0x7, 0x2, 0x2, + 0x2, 0x2, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x5, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x3, 0x4, 0x3, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x2, 0x3, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x7, 0x7, + 0x2, 0x2, 0x2, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x3, 0x4, + 0x4, 0x4, 0x4, 0x2, 0x7, 0x7, 0x7, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x6, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x2, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x2, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x3, 0x6, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x3, 0x5, 0x4, 0x4, 0x4, 0x4, 0x5, 0x3, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x3, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x3, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, + 0x6, 0x5, 0x4, 0x4, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3, 0x3, 0x7, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x6, 0x7, 0x7, 0x7, + 0x7, 0x7, 0x7, 0x7, 0x7, 0x7, 0x6, 0x3, 0x4, 0x4, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, + 0x2, 0x4, 0x5, 0x3, 0x6, 0x6, 0x6, 0x7, 0x6, 0x6, 0x6, 0x3, 0x5, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x5, 0x3, 0x6, 0x6, 0x7, 0x7, 0x7, 0x6, 0x6, 0x3, 0x3, 0x4, 0x4, + 0x5, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x4, 0x4, 0x3, 0x3, 0x3, 0x3, 0x3, + 0x3, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, + 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x8, 0x9, 0x8, 0x2, 0x2, 0x2, 0x2, 0x2, 0x8, 0x8, + 0x6, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x9, 0x9, 0x9, + 0x8, 0x8, 0x8, 0x8, 0x9, 0x9, 0x9, 0x9, 0x8, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x5, 0x6, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, + 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x8, 0x9, 0x9, 0x9, 0x9, 0x9, + 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x6, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x5, 0x6, 0x9, 0x9, 0x9, 0x9, 0x8, 0x8, 0x8, 0x8, 0x9, 0x9, 0x9, 0x9, 0x5, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x8, 0x8, 0x8, 0x6, 0x6, 0x3, 0x6, + 0x6, 0x8, 0x8, 0x9, 0x8, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x5, 0x6, 0x7, 0x7, 0x7, 0x3, 0x7, 0x7, 0x7, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x6, 0x7, 0x7, 0x7, 0x3, 0x7, 0x7, 0x7, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x6, + 0x7, 0x7, 0x7, 0x3, 0x7, 0x7, 0x7, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x6, 0x7, 0x6, 0x2, 0x7, 0x7, 0x7, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x6, + 0x3, 0x5, 0x6, 0x6, 0x6, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x4, 0x4, 0x3, 0x3, 0x5, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x1, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x2, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x3, 0x8, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, + 0x8, 0x8, 0x3, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x8, 0x9, 0x9, 0x9, 0x9, 0x8, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x8, 0x9, 0x9, 0x9, 0x9, 0x1, 0x0, 0x0, 0x1, + 0x2, 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x8, 0x9, + 0x9, 0x9, 0x9, 0x2, 0x1, 0x0, 0x1, 0x2, 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x8, 0x9, 0x9, 0x9, 0x8, 0x2, 0x1, 0x0, 0x0, 0x1, 0x9, + 0x9, 0x9, 0x8, 0x2, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x2, 0x9, 0x9, + 0x9, 0x1, 0x0, 0x0, 0x0, 0x1, 0x8, 0x9, 0x8, 0x2, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x2, 0x1, 0x3, 0x8, 0x8, 0x1, 0x0, 0x0, 0x0, 0x0, 0x2, 0x2, 0x1, + 0x1, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x1, 0x1, 0x1, 0x1, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x5, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x1, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x1, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x5, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, + 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x3, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x2, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x3, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x3, 0x9, 0x8, 0x2, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x9, 0x9, 0x9, 0x9, 0x3, 0x3, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x8, 0x9, + 0x9, 0x9, 0x9, 0x9, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x3, 0x9, 0x9, 0x9, 0x9, 0x9, + 0x8, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x5, 0x2, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x3, 0x1, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, + 0x3, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x3, 0x2, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x1, 0x1, 0x8, 0x9, 0x9, 0x9, + 0x9, 0x9, 0x8, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x8, 0x3, 0x1, + 0x1, 0x1, 0x1, 0x2, 0x3, 0x5, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, + 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x3, 0x1, 0x1, 0x1, + 0x0, 0x0, 0x0, 0x1, 0x2, 0x9, 0x9, 0x9, 0x8, 0x9, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x8, 0x8, + 0x9, 0x9, 0x9, 0x8, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x2, 0x3, 0x3, + 0x3, 0x5, 0x5, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x5, 0x5, 0x3, 0x3, + 0x3, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x9, 0x9, 0x9, + 0x8, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x8, 0x9, 0x9, 0x9, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0x2, 0x3, 0x3, 0x3, 0x3, + 0x3, 0x2, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x1, 0x8, 0x9, 0x9, 0x2, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x2, + 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x1, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, + }, + } +) + +func init() { + availableLogos = append(availableLogos, &gopher71x96) +} diff --git a/src/gopheros/device/video/console/logo/logo.go b/src/gopheros/device/video/console/logo/logo.go new file mode 100644 index 0000000..825bfa4 --- /dev/null +++ b/src/gopheros/device/video/console/logo/logo.go @@ -0,0 +1,71 @@ +// Package logo contains logos that can be used with a framebuffer console. +package logo + +import "image/color" + +var ( + // The list of available logos. + availableLogos []*Image +) + +// Alignment defines the supported horizontal alignments for a console logo. +type Alignment uint8 + +const ( + // AlignLeft aligns the logo to the left side of the console. + AlignLeft Alignment = iota + + // AlignCenter aligns the logo to the center of the console. + AlignCenter + + // AlignRight aligns the logo to the right side of the console. + AlignRight +) + +// Image describes an 8bpp image with +type Image struct { + // The width and height of the logo in pixels. + Width uint32 + Height uint32 + + // Align specifies the horizontal alignment for the logo. + Align Alignment + + // TransparentIndex defines a color index that will be treated as + // transparent when drawing the logo. + TransparentIndex uint8 + + // The palette for the logo. The console remaps the palette + // entries to the end of its own palette. + Palette []color.RGBA + + // The logo data comprises of Width*Height bytes where each byte + // represents an index in the logo palette. + Data []uint8 +} + +// BestFit returns the best logo from the available logo list given the +// specified console dimensions. +func BestFit(consoleWidth, consoleHeight uint32) *Image { + var ( + best *Image + bestDelta, absDelta uint32 + threshold = consoleHeight / 10 + ) + + for _, l := range availableLogos { + if l.Height > threshold { + absDelta = l.Height - threshold + } else { + absDelta = threshold - l.Height + } + + if best == nil || absDelta < bestDelta { + best = l + bestDelta = absDelta + continue + } + } + + return best +} diff --git a/src/gopheros/device/video/console/logo/logo_test.go b/src/gopheros/device/video/console/logo/logo_test.go new file mode 100644 index 0000000..ca9df10 --- /dev/null +++ b/src/gopheros/device/video/console/logo/logo_test.go @@ -0,0 +1,39 @@ +package logo + +import "testing" + +func TestBestFit(t *testing.T) { + defer func(origList []*Image) { + availableLogos = origList + }(availableLogos) + + availableLogos = []*Image{ + &Image{Height: 64}, + &Image{Height: 96}, + &Image{Height: 128}, + } + + specs := []struct { + consW, consH uint32 + expIndex int + }{ + {320, 200, 0}, + {800, 600, 0}, + {1024, 768, 0}, + {1280, 1024, 1}, + {3000, 3000, 2}, + {2500, 1600, 2}, + } + + for specIndex, spec := range specs { + got := BestFit(spec.consW, spec.consH) + if got == nil { + t.Errorf("[spec %d] unable to find a logo", specIndex) + continue + } + + if got.Height != availableLogos[spec.expIndex].Height { + t.Errorf("[spec %d] expected to get logo with height %d; got %d", specIndex, availableLogos[spec.expIndex].Height, got.Height) + } + } +} diff --git a/src/gopheros/device/video/console/vesa_fb.go b/src/gopheros/device/video/console/vesa_fb.go new file mode 100644 index 0000000..ec355cd --- /dev/null +++ b/src/gopheros/device/video/console/vesa_fb.go @@ -0,0 +1,607 @@ +package console + +import ( + "gopheros/device" + "gopheros/device/video/console/font" + "gopheros/device/video/console/logo" + "gopheros/kernel" + "gopheros/kernel/hal/multiboot" + "gopheros/kernel/kfmt" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" + "gopheros/kernel/mem/vmm" + "image/color" + "io" + "reflect" + "unsafe" +) + +// VesaFbConsole is a driver for a console backed by a VESA linear framebuffer. +// The driver supports framebuffers with depth 8, 15, 16, 24 and 32 bpp. In +// all framebuffer configurations, the driver exposes a 256-color palette whose +// entries get mapped to the correct pixel format for the framebuffer. +// +// To provide text output, a font needs to be specified via the SetFont method. +type VesaFbConsole struct { + bpp uint32 + bytesPerPixel uint32 + fbPhysAddr uintptr + fb []uint8 + colorInfo *multiboot.FramebufferRGBColorInfo + + // Console dimensions in pixels + width uint32 + height uint32 + + // offsetY specifies a the pixel offset for the beginning for text. + // The rows of the framebuffer between 0 and offsetY are reserved and + // cannot be used for displaying text. + offsetY uint32 + + // Size of a row in bytes + pitch uint32 + + // Console dimensions in characters + font *font.Font + widthInChars uint32 + heightInChars uint32 + + palette color.Palette + defaultFg uint8 + defaultBg uint8 + clearChar uint16 +} + +// NewVesaFbConsole returns a new instance of the vesa framebuffer driver. +func NewVesaFbConsole(width, height uint32, bpp uint8, pitch uint32, colorInfo *multiboot.FramebufferRGBColorInfo, fbPhysAddr uintptr) *VesaFbConsole { + return &VesaFbConsole{ + bpp: uint32(bpp), + bytesPerPixel: uint32(bpp+1) >> 3, + fbPhysAddr: fbPhysAddr, + colorInfo: colorInfo, + width: width, + height: height, + pitch: pitch, + // light gray text on black background + defaultFg: 7, + defaultBg: 0, + clearChar: uint16(' '), + } +} + +// SetFont selects a bitmap font to be used by the console. +func (cons *VesaFbConsole) SetFont(f *font.Font) { + if f == nil { + return + } + + cons.font = f + cons.widthInChars = cons.width / f.GlyphWidth + cons.heightInChars = (cons.height - cons.offsetY) / f.GlyphHeight +} + +// SetLogo selects the logo to be displayed by the console. The logo colors will +// be remapped to the end of the console's palette and space equal to the logo +// height will be reserved at the top of the framebuffer for diplaying the logo. +// +// As setting a logo changes the available space for rendering text, SetLogo +// must be invoked before SetFont. +func (cons *VesaFbConsole) SetLogo(l *logo.Image) { + if l == nil { + return + } + + // Map the logo colors to the console palette replacing the transparent + // color index with the console default bg color + offset := uint8(len(cons.palette) - len(l.Palette)) + for i, rgba := range l.Palette { + if uint8(i) == l.TransparentIndex { + rgba = cons.palette[cons.defaultBg].(color.RGBA) + } + cons.setPaletteColor(uint8(i)+offset, rgba, false) + } + + // Draw the logo + var fbRowOffset uint32 + switch l.Align { + case logo.AlignLeft: + fbRowOffset = cons.fbOffset(0, 0) + case logo.AlignCenter: + fbRowOffset = cons.fbOffset((cons.width-l.Width)>>1, 0) + case logo.AlignRight: + fbRowOffset = cons.fbOffset(cons.width-l.Width, 0) + } + + for y, logoOffset := uint32(0), 0; y < l.Height; y, fbRowOffset = y+1, fbRowOffset+cons.pitch { + for x, fbOffset := uint32(0), fbRowOffset; x < l.Width; x, fbOffset, logoOffset = x+1, fbOffset+cons.bytesPerPixel, logoOffset+1 { + c := l.Data[logoOffset] + offset + + switch cons.bpp { + case 8: + cons.fb[fbOffset] = c + case 15, 16: + colorComp := cons.packColor16(c) + cons.fb[fbOffset] = colorComp[0] + cons.fb[fbOffset+1] = colorComp[1] + case 24, 32: + colorComp := cons.packColor24(c) + cons.fb[fbOffset] = colorComp[0] + cons.fb[fbOffset+1] = colorComp[1] + cons.fb[fbOffset+2] = colorComp[2] + } + } + } + + cons.offsetY = l.Height +} + +// Dimensions returns the console width and height in the specified dimension. +func (cons *VesaFbConsole) Dimensions(dim Dimension) (uint32, uint32) { + switch dim { + case Characters: + return cons.widthInChars, cons.heightInChars + default: + return cons.width, cons.height + } +} + +// DefaultColors returns the default foreground and background colors +// used by this console. +func (cons *VesaFbConsole) DefaultColors() (fg uint8, bg uint8) { + return cons.defaultFg, cons.defaultBg +} + +// Fill sets the contents of the specified rectangular region to the requested +// color. Both x and y coordinates are 1-based. +func (cons *VesaFbConsole) Fill(x, y, width, height uint32, _, bg uint8) { + if cons.font == nil { + return + } + + // clip rectangle + if x == 0 { + x = 1 + } else if x >= cons.widthInChars { + x = cons.widthInChars + } + + if y == 0 { + y = 1 + } else if y >= cons.heightInChars { + y = cons.heightInChars + } + + if x+width-1 > cons.widthInChars { + width = cons.widthInChars - x + 1 + } + + if y+height-1 > cons.heightInChars { + height = cons.heightInChars - y + 1 + } + + pX := (x - 1) * cons.font.GlyphWidth + pY := (y - 1) * cons.font.GlyphHeight + pW := width * cons.font.GlyphWidth + pH := height * cons.font.GlyphHeight + switch cons.bpp { + case 8: + cons.fill8(pX, pY, pW, pH, bg) + case 15, 16: + cons.fill16(pX, pY, pW, pH, bg) + case 24, 32: + cons.fill24(pX, pY, pW, pH, bg) + } +} + +// fill8 implements a fill operation using an 8bpp framebuffer. +func (cons *VesaFbConsole) fill8(pX, pY, pW, pH uint32, bg uint8) { + fbRowOffset := cons.fbOffset(pX, pY) + for ; pH > 0; pH, fbRowOffset = pH-1, fbRowOffset+cons.pitch { + for fbOffset := fbRowOffset; fbOffset < fbRowOffset+pW; fbOffset++ { + cons.fb[fbOffset] = bg + } + } +} + +// fill16 implements a fill operation using a 15/16bpp framebuffer. +func (cons *VesaFbConsole) fill16(pX, pY, pW, pH uint32, bg uint8) { + comp := cons.packColor16(bg) + fbRowOffset := cons.fbOffset(pX, pY) + for ; pH > 0; pH, fbRowOffset = pH-1, fbRowOffset+cons.pitch { + for fbOffset := fbRowOffset; fbOffset < fbRowOffset+pW*cons.bytesPerPixel; fbOffset += cons.bytesPerPixel { + cons.fb[fbOffset] = comp[0] + cons.fb[fbOffset+1] = comp[1] + } + } +} + +// fill24 implements a fill operation using a 24/32bpp framebuffer. +func (cons *VesaFbConsole) fill24(pX, pY, pW, pH uint32, bg uint8) { + comp := cons.packColor24(bg) + fbRowOffset := cons.fbOffset(pX, pY) + for ; pH > 0; pH, fbRowOffset = pH-1, fbRowOffset+cons.pitch { + for fbOffset := fbRowOffset; fbOffset < fbRowOffset+pW*cons.bytesPerPixel; fbOffset += cons.bytesPerPixel { + cons.fb[fbOffset] = comp[0] + cons.fb[fbOffset+1] = comp[1] + cons.fb[fbOffset+2] = comp[2] + } + } +} + +// Scroll the console contents to the specified direction. The caller +// is responsible for updating (e.g. clear or replace) the contents of +// the region that was scrolled. +func (cons *VesaFbConsole) Scroll(dir ScrollDir, lines uint32) { + if cons.font == nil || lines == 0 || lines > cons.heightInChars { + return + } + + offset := cons.fbOffset(0, lines*cons.font.GlyphHeight-cons.offsetY) + + switch dir { + case ScrollDirUp: + startOffset := cons.fbOffset(0, 0) + endOffset := cons.fbOffset(0, cons.height-lines*cons.font.GlyphHeight-cons.offsetY) + for i := startOffset; i < endOffset; i++ { + cons.fb[i] = cons.fb[i+offset] + } + case ScrollDirDown: + startOffset := cons.fbOffset(0, lines*cons.font.GlyphHeight) + for i := uint32(len(cons.fb) - 1); i >= startOffset; i-- { + cons.fb[i] = cons.fb[i-offset] + } + } +} + +// Write a char to the specified location. If fg or bg exceed the supported +// colors for this console, they will be set to their default value. Both x and +// y coordinates are 1-based +func (cons *VesaFbConsole) Write(ch byte, fg, bg uint8, x, y uint32) { + if x < 1 || x > cons.widthInChars || y < 1 || y > cons.heightInChars || cons.font == nil { + return + } + + pX := (x - 1) * cons.font.GlyphWidth + pY := (y - 1) * cons.font.GlyphHeight + + switch cons.bpp { + case 8: + cons.write8(ch, fg, bg, pX, pY) + case 15, 16: + cons.write16(ch, fg, bg, pX, pY) + case 24, 32: + cons.write24(ch, fg, bg, pX, pY) + } +} + +// write8 writes a character using an 8bpp framebuffer. +func (cons *VesaFbConsole) write8(glyphIndex, fg, bg uint8, pX, pY uint32) { + var ( + fontOffset = uint32(glyphIndex) * cons.font.BytesPerRow * cons.font.GlyphHeight + fbRowOffset = cons.fbOffset(pX, pY) + fbOffset uint32 + x, y uint32 + mask uint8 + ) + + for y = 0; y < cons.font.GlyphHeight; y, fbRowOffset, fontOffset = y+1, fbRowOffset+cons.pitch, fontOffset+1 { + fbOffset = fbRowOffset + fontRowData := cons.font.Data[fontOffset] + mask = 1 << 7 + for x = 0; x < cons.font.GlyphWidth; x, fbOffset, mask = x+1, fbOffset+1, mask>>1 { + // If mask becomes zero while we are still in this loop + // then the font uses > 1 byte per row. We need to + // fetch the next byte and reset the mask. + if mask == 0 { + fontOffset++ + fontRowData = cons.font.Data[fontOffset] + mask = 1 << 7 + } + + if (fontRowData & mask) != 0 { + cons.fb[fbOffset] = fg + } else { + cons.fb[fbOffset] = bg + } + } + } +} + +// write16 writes a character using a 15/162bpp framebuffer. +func (cons *VesaFbConsole) write16(glyphIndex, fg, bg uint8, pX, pY uint32) { + var ( + fontOffset = uint32(glyphIndex) * cons.font.BytesPerRow * cons.font.GlyphHeight + fbRowOffset = cons.fbOffset(pX, pY) + fbOffset uint32 + x, y uint32 + mask uint8 + fgComp = cons.packColor16(fg) + bgComp = cons.packColor16(bg) + ) + + for y = 0; y < cons.font.GlyphHeight; y, fbRowOffset, fontOffset = y+1, fbRowOffset+cons.pitch, fontOffset+1 { + fbOffset = fbRowOffset + fontRowData := cons.font.Data[fontOffset] + mask = 1 << 7 + for x = 0; x < cons.font.GlyphWidth; x, fbOffset, mask = x+1, fbOffset+cons.bytesPerPixel, mask>>1 { + // If mask becomes zero while we are still in this loop + // then the font uses > 1 byte per row. We need to + // fetch the next byte and reset the mask. + if mask == 0 { + fontOffset++ + fontRowData = cons.font.Data[fontOffset] + mask = 1 << 7 + } + + if (fontRowData & mask) != 0 { + cons.fb[fbOffset] = fgComp[0] + cons.fb[fbOffset+1] = fgComp[1] + } else { + cons.fb[fbOffset] = bgComp[0] + cons.fb[fbOffset+1] = bgComp[1] + } + } + } +} + +// write24 writes a character using a 24/32bpp framebuffer. +func (cons *VesaFbConsole) write24(glyphIndex, fg, bg uint8, pX, pY uint32) { + var ( + fontOffset = uint32(glyphIndex) * cons.font.BytesPerRow * cons.font.GlyphHeight + fbRowOffset = cons.fbOffset(pX, pY) + fbOffset uint32 + x, y uint32 + mask uint8 + fgComp = cons.packColor24(fg) + bgComp = cons.packColor24(bg) + ) + + for y = 0; y < cons.font.GlyphHeight; y, fbRowOffset, fontOffset = y+1, fbRowOffset+cons.pitch, fontOffset+1 { + fbOffset = fbRowOffset + fontRowData := cons.font.Data[fontOffset] + mask = 1 << 7 + for x = 0; x < cons.font.GlyphWidth; x, fbOffset, mask = x+1, fbOffset+cons.bytesPerPixel, mask>>1 { + // If mask becomes zero while we are still in this loop + // then the font uses > 1 byte per row. We need to + // fetch the next byte and reset the mask. + if mask == 0 { + fontOffset++ + fontRowData = cons.font.Data[fontOffset] + mask = 1 << 7 + } + + if (fontRowData & mask) != 0 { + cons.fb[fbOffset] = fgComp[0] + cons.fb[fbOffset+1] = fgComp[1] + cons.fb[fbOffset+2] = fgComp[2] + } else { + cons.fb[fbOffset] = bgComp[0] + cons.fb[fbOffset+1] = bgComp[1] + cons.fb[fbOffset+2] = bgComp[2] + } + } + } +} + +// fbOffset returns the linear offset into the framebuffer that corresponds to +// the pixel at (x,y). +func (cons *VesaFbConsole) fbOffset(x, y uint32) uint32 { + return ((y + cons.offsetY) * cons.pitch) + (x * cons.bytesPerPixel) +} + +// packColor24 encodes a palette color into the pixel format required by a +// 24/32 bpp framebuffer. +func (cons *VesaFbConsole) packColor24(colorIndex uint8) [3]uint8 { + var ( + c = cons.palette[colorIndex].(color.RGBA) + packed uint32 = 0 | + (uint32(c.R>>(8-cons.colorInfo.RedMaskSize)) << cons.colorInfo.RedPosition) | + (uint32(c.G>>(8-cons.colorInfo.GreenMaskSize)) << cons.colorInfo.GreenPosition) | + (uint32(c.B>>(8-cons.colorInfo.BlueMaskSize)) << cons.colorInfo.BluePosition) + ) + + return [3]uint8{ + uint8(packed), + uint8(packed >> 8), + uint8(packed >> 16), + } +} + +// packColor16 encodes a palette color into the pixel format required by a +// 15/16 bpp framebuffer. +func (cons *VesaFbConsole) packColor16(colorIndex uint8) [2]uint8 { + var ( + c = cons.palette[colorIndex].(color.RGBA) + packed uint16 = 0 | + (uint16(c.R>>(8-cons.colorInfo.RedMaskSize)) << cons.colorInfo.RedPosition) | + (uint16(c.G>>(8-cons.colorInfo.GreenMaskSize)) << cons.colorInfo.GreenPosition) | + (uint16(c.B>>(8-cons.colorInfo.BlueMaskSize)) << cons.colorInfo.BluePosition) + ) + + return [2]uint8{ + uint8(packed), + uint8(packed >> 8), + } +} + +// Palette returns the active color palette for this console. +func (cons *VesaFbConsole) Palette() color.Palette { + return cons.palette +} + +// SetPaletteColor updates the color definition for the specified +// palette index. Passing a color index greated than the number of +// supported colors should be a no-op. +func (cons *VesaFbConsole) SetPaletteColor(index uint8, rgba color.RGBA) { + oldColor := cons.palette[index] + + if oldColor != nil && oldColor.(color.RGBA) == rgba { + return + } + + cons.setPaletteColor(index, rgba, true) +} + +// setPaletteColor updates the color definition for the specified +// palette index. If replace is true, then all occurrences of the old color +// in the framebuffer will be replaced by the new color value (if bpp > 8). +func (cons *VesaFbConsole) setPaletteColor(index uint8, rgba color.RGBA, replace bool) { + oldColor := cons.palette[index] + cons.palette[index] = rgba + + switch cons.bpp { + case 8: + // Load palette entry to the DAC. Each DAC entry is a 6-bit value so + // we need to scale the RGB values in the [0-63] range. + portWriteByteFn(0x3c8, index) + portWriteByteFn(0x3c9, rgba.R>>2) + portWriteByteFn(0x3c9, rgba.G>>2) + portWriteByteFn(0x3c9, rgba.B>>2) + case 15, 16: + if oldColor == nil || !replace { + return + } + + cons.replace16(oldColor.(color.RGBA), rgba) + case 24, 32: + if oldColor == nil || !replace { + return + } + + cons.replace24(oldColor.(color.RGBA), rgba) + } +} + +// replace16 replaces all srcColor values with dstColor using a 15/16bpp +// framebuffer. +func (cons *VesaFbConsole) replace16(src, dst color.RGBA) { + tmp := cons.palette[0] + cons.palette[0] = src + srcComp := cons.packColor16(0) + cons.palette[0] = dst + dstComp := cons.packColor16(0) + cons.palette[0] = tmp + for fbOffset := cons.fbOffset(0, 0); fbOffset < uint32(len(cons.fb)); fbOffset += cons.bytesPerPixel { + if cons.fb[fbOffset] == srcComp[0] && + cons.fb[fbOffset+1] == srcComp[1] { + cons.fb[fbOffset] = dstComp[0] + cons.fb[fbOffset+1] = dstComp[1] + } + } +} + +// replace24 replaces all srcColor values with dstColor using a 24/32bpp +// framebuffer. +func (cons *VesaFbConsole) replace24(src, dst color.RGBA) { + tmp := cons.palette[0] + cons.palette[0] = src + srcComp := cons.packColor24(0) + cons.palette[0] = dst + dstComp := cons.packColor24(0) + cons.palette[0] = tmp + for fbOffset := cons.fbOffset(0, 0); fbOffset < uint32(len(cons.fb)); fbOffset += cons.bytesPerPixel { + if cons.fb[fbOffset] == srcComp[0] && + cons.fb[fbOffset+1] == srcComp[1] && + cons.fb[fbOffset+2] == srcComp[2] { + cons.fb[fbOffset] = dstComp[0] + cons.fb[fbOffset+1] = dstComp[1] + cons.fb[fbOffset+2] = dstComp[2] + } + } +} + +// loadDefaultPalette is called during driver initialization to setup the +// console palette. Regardless of the framebuffer depth, the console always +// uses a 256-color palette. +func (cons *VesaFbConsole) loadDefaultPalette() { + cons.palette = make(color.Palette, 256) + + egaPalette := []color.RGBA{ + color.RGBA{R: 0, G: 0, B: 0}, /* black */ + color.RGBA{R: 0, G: 0, B: 128}, /* blue */ + color.RGBA{R: 0, G: 128, B: 1}, /* green */ + color.RGBA{R: 0, G: 128, B: 128}, /* cyan */ + color.RGBA{R: 128, G: 0, B: 1}, /* red */ + color.RGBA{R: 128, G: 0, B: 128}, /* magenta */ + color.RGBA{R: 64, G: 64, B: 1}, /* brown */ + color.RGBA{R: 128, G: 128, B: 128}, /* light gray */ + color.RGBA{R: 64, G: 64, B: 64}, /* dark gray */ + color.RGBA{R: 0, G: 0, B: 255}, /* light blue */ + color.RGBA{R: 0, G: 255, B: 1}, /* light green */ + color.RGBA{R: 0, G: 255, B: 255}, /* light cyan */ + color.RGBA{R: 255, G: 0, B: 1}, /* light red */ + color.RGBA{R: 255, G: 0, B: 255}, /* light magenta */ + color.RGBA{R: 255, G: 255, B: 1}, /* yellow */ + color.RGBA{R: 255, G: 255, B: 255}, /* white */ + } + + // Load default EGA palette for colors 0-16 + var index int + for ; index < len(egaPalette); index++ { + cons.SetPaletteColor(uint8(index), egaPalette[index]) + } + + // Set all other colors to black + for ; index < len(cons.palette); index++ { + cons.SetPaletteColor(uint8(index), egaPalette[0]) + } +} + +// DriverName returns the name of this driver. +func (cons *VesaFbConsole) DriverName() string { + return "vesa_fb_console" +} + +// DriverVersion returns the version of this driver. +func (cons *VesaFbConsole) DriverVersion() (uint16, uint16, uint16) { + return 0, 0, 1 +} + +// DriverInit initializes this driver. +func (cons *VesaFbConsole) DriverInit(w io.Writer) *kernel.Error { + // Map the framebuffer so we can write to it + fbSize := mem.Size(cons.height * cons.pitch) + fbPage, err := mapRegionFn( + pmm.Frame(cons.fbPhysAddr>>mem.PageShift), + fbSize, + vmm.FlagPresent|vmm.FlagRW, + ) + + if err != nil { + return err + } + + cons.fb = *(*[]uint8)(unsafe.Pointer(&reflect.SliceHeader{ + Len: int(fbSize), + Cap: int(fbSize), + Data: fbPage.Address(), + })) + + kfmt.Fprintf(w, "mapped framebuffer to 0x%x\n", fbPage.Address()) + kfmt.Fprintf(w, "framebuffer dimensions: %dx%dx%d\n", cons.width, cons.height, cons.bpp) + + cons.loadDefaultPalette() + + return nil +} + +// probeForVesaFbConsole checks for the presence of a vga text console. +func probeForVesaFbConsole() device.Driver { + var drv device.Driver + + fbInfo := getFramebufferInfoFn() + if fbInfo.Type == multiboot.FramebufferTypeIndexed || fbInfo.Type == multiboot.FramebufferTypeRGB { + drv = NewVesaFbConsole( + fbInfo.Width, fbInfo.Height, + fbInfo.Bpp, fbInfo.Pitch, + fbInfo.RGBColorInfo(), + uintptr(fbInfo.PhysAddr), + ) + } + + return drv +} + +func init() { + ProbeFuncs = append(ProbeFuncs, probeForVesaFbConsole) +} diff --git a/src/gopheros/device/video/console/vesa_fb_test.go b/src/gopheros/device/video/console/vesa_fb_test.go new file mode 100644 index 0000000..1fc1c2a --- /dev/null +++ b/src/gopheros/device/video/console/vesa_fb_test.go @@ -0,0 +1,1861 @@ +package console + +import ( + "bytes" + "fmt" + "gopheros/device" + "gopheros/device/video/console/font" + "gopheros/device/video/console/logo" + "gopheros/kernel" + "gopheros/kernel/cpu" + "gopheros/kernel/hal/multiboot" + "gopheros/kernel/mem" + "gopheros/kernel/mem/pmm" + "gopheros/kernel/mem/vmm" + "image/color" + "reflect" + "strings" + "testing" +) + +func TestVesaFbTextDimensions(t *testing.T) { + var cons Device = NewVesaFbConsole(16, 32, 8, 16, nil, 0) + + if w, h := cons.Dimensions(Characters); w != 0 || h != 0 { + t.Fatalf("expected console dimensions to be 0x0 before setting a font; got %dx%d", w, h) + } + + specs := []struct { + offsetY uint32 + font *font.Font + expW, expH uint32 + }{ + {0, mockFont8x10, 2, 3}, + {6, mockFont8x10, 2, 2}, + } + + // Setting a nil font should be a no-op + cons.(FontSetter).SetFont(nil) + if w, h := cons.Dimensions(Characters); w != 0 || h != 0 { + t.Fatalf("expected console character dimensions to be 0x0; got %dx%d", w, h) + } + + for specIndex, spec := range specs { + cons.(*VesaFbConsole).offsetY = spec.offsetY + cons.(FontSetter).SetFont(spec.font) + + if w, h := cons.Dimensions(Characters); w != spec.expW || h != spec.expH { + t.Fatalf("[spec %d] expected console character dimensions to be %dx%d; got %dx%d", specIndex, spec.expW, spec.expH, w, h) + } + + if w, h := cons.Dimensions(Pixels); w != 16 || h != 32 { + t.Fatalf("[spec %d] expected console pixel dimensions to be 16x32; got %dx%d", specIndex, w, h) + } + } +} + +func TestVesaFbDefaultColors(t *testing.T) { + var cons Device = NewVesaFbConsole(16, 32, 8, 16, nil, 0) + if fg, bg := cons.DefaultColors(); fg != 7 || bg != 0 { + t.Fatalf("expected console default colors to be fg:7, bg:0; got fg:%d, bg: %d", fg, bg) + } +} + +func TestVesaFbWrite8bpp(t *testing.T) { + specs := []struct { + consW, consH, offsetY uint32 + font *font.Font + expFb []byte + }{ + { + 16, 16, 6, + mockFont8x10, + []byte("" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000010000" + + "0000000000111000" + + "0000000001101100" + + "0000000011000110" + + "0000000011000110" + + "0000000011111110" + + "0000000011000110" + + "0000000011000110" + + "0000000011000110" + + "0000000011000110", + ), + }, + { + 20, 20, 3, + mockFont10x14, + []byte("" + + "00000000000000000000" + + "00000000000000000000" + + "00000000000000000000" + + "00000000000000010000" + + "00000000000000010000" + + "00000000000000111000" + + "00000000000000111000" + + "00000000000001101100" + + "00000000000001101100" + + "00000000000001100110" + + "00000000000011000110" + + "00000000000011111110" + + "00000000000011000110" + + "00000000000110000110" + + "00000000000110000011" + + "00000000000110000011" + + "00000000001111000111" + + "00000000000000000000" + + "00000000000000000000" + + "00000000000000000000", + ), + }, + } + + var ( + fg = uint8(1) + bg = uint8(0) + ) + + for specIndex, spec := range specs { + fb := make([]uint8, spec.consW*spec.consH) + + cons := NewVesaFbConsole(spec.consW, spec.consH, 8, spec.consW, nil, 0) + cons.fb = fb + cons.offsetY = spec.offsetY + cons.SetFont(spec.font) + + // ASCII 0 maps to the a blank character in the mock font + // ASCII 1 maps to the letter 'A' in the mock font + cons.Write(0, fg, bg, 0, 0) + cons.Write(1, fg, bg, 2, 1) + + // Convert expected contents from ASCII to byte + for i := 0; i < len(spec.expFb); i++ { + spec.expFb[i] -= '0' + } + + if !reflect.DeepEqual(spec.expFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(spec.consW, spec.consH, spec.consW, spec.expFb, fb), + ) + } + } +} + +func TestVesaFbWrite16bpp(t *testing.T) { + specs := []struct { + consW, consH, offsetY uint32 + font *font.Font + expFb []byte + }{ + { + 16, 16, 6, + mockFont8x10, + []byte("" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000001400000000" + + "00000000000000000000141414000000" + + "00000000000000000014140014140000" + + "00000000000000001414000000141400" + + "00000000000000001414000000141400" + + "00000000000000001414141414141400" + + "00000000000000001414000000141400" + + "00000000000000001414000000141400" + + "00000000000000001414000000141400" + + "00000000000000001414000000141400", + ), + }, + { + 20, 20, 3, + mockFont10x14, + []byte("" + + "0000000000000000000000000000000000000000" + + "0000000000000000000000000000000000000000" + + "0000000000000000000000000000000000000000" + + "0000000000000000000000000000001400000000" + + "0000000000000000000000000000001400000000" + + "0000000000000000000000000000141414000000" + + "0000000000000000000000000000141414000000" + + "0000000000000000000000000014140014140000" + + "0000000000000000000000000014140014140000" + + "0000000000000000000000000014140000141400" + + "0000000000000000000000001414000000141400" + + "0000000000000000000000001414141414141400" + + "0000000000000000000000001414000000141400" + + "0000000000000000000000141400000000141400" + + "0000000000000000000000141400000000001414" + + "0000000000000000000000141400000000001414" + + "0000000000000000000014141414000000141414" + + "0000000000000000000000000000000000000000" + + "0000000000000000000000000000000000000000" + + "0000000000000000000000000000000000000000", + ), + }, + } + + var ( + // RGB555 + colorInfo = &multiboot.FramebufferRGBColorInfo{ + RedPosition: 10, + RedMaskSize: 5, + GreenPosition: 5, + GreenMaskSize: 5, + BluePosition: 0, + BlueMaskSize: 5, + } + fg = uint8(1) + fgColor = color.RGBA{R: 10, G: 0, B: 12} + bg = uint8(0) + ) + + for specIndex, spec := range specs { + fb := make([]uint8, spec.consW*spec.consH*2) + + cons := NewVesaFbConsole(spec.consW, spec.consH, 16, spec.consW*2, colorInfo, 0) + cons.fb = fb + cons.offsetY = spec.offsetY + cons.SetFont(spec.font) + cons.loadDefaultPalette() + cons.SetPaletteColor(fg, fgColor) + + // ASCII 0 maps to the a blank character in the mock font + // ASCII 1 maps to the letter 'A' in the mock font + cons.Write(0, fg, bg, 0, 0) + cons.Write(1, fg, bg, 2, 1) + + // Convert expected contents from ASCII to byte + for i := 0; i < len(spec.expFb); i++ { + spec.expFb[i] -= '0' + } + + if !reflect.DeepEqual(spec.expFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(spec.consW, spec.consH, spec.consW*2, spec.expFb, fb), + ) + } + } +} + +func TestVesaFbWrite24bpp(t *testing.T) { + specs := []struct { + consW, consH, offsetY uint32 + font *font.Font + expFb []byte + }{ + { + 16, 16, 6, + mockFont8x10, + []byte("" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000321000000000000" + + "000000000000000000000000000000321321321000000000" + + "000000000000000000000000000321321000321321000000" + + "000000000000000000000000321321000000000321321000" + + "000000000000000000000000321321000000000321321000" + + "000000000000000000000000321321321321321321321000" + + "000000000000000000000000321321000000000321321000" + + "000000000000000000000000321321000000000321321000" + + "000000000000000000000000321321000000000321321000" + + "000000000000000000000000321321000000000321321000", + ), + }, + { + 20, 20, 3, + mockFont10x14, + []byte("" + + "000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000321000000000000" + + "000000000000000000000000000000000000000000000321000000000000" + + "000000000000000000000000000000000000000000321321321000000000" + + "000000000000000000000000000000000000000000321321321000000000" + + "000000000000000000000000000000000000000321321000321321000000" + + "000000000000000000000000000000000000000321321000321321000000" + + "000000000000000000000000000000000000000321321000000321321000" + + "000000000000000000000000000000000000321321000000000321321000" + + "000000000000000000000000000000000000321321321321321321321000" + + "000000000000000000000000000000000000321321000000000321321000" + + "000000000000000000000000000000000321321000000000000321321000" + + "000000000000000000000000000000000321321000000000000000321321" + + "000000000000000000000000000000000321321000000000000000321321" + + "000000000000000000000000000000321321321321000000000321321321" + + "000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000000000000000", + ), + }, + } + + var ( + // BGR + colorInfo = &multiboot.FramebufferRGBColorInfo{ + RedPosition: 16, + RedMaskSize: 8, + GreenPosition: 8, + GreenMaskSize: 8, + BluePosition: 0, + BlueMaskSize: 8, + } + fg = uint8(1) + fgColor = color.RGBA{R: 1, G: 2, B: 3} + bg = uint8(0) + ) + + for specIndex, spec := range specs { + fb := make([]uint8, spec.consW*spec.consH*3) + + cons := NewVesaFbConsole(spec.consW, spec.consH, 24, spec.consW*3, colorInfo, 0) + cons.fb = fb + cons.offsetY = spec.offsetY + cons.SetFont(spec.font) + cons.loadDefaultPalette() + cons.SetPaletteColor(fg, fgColor) + + // ASCII 0 maps to the a blank character in the mock font + // ASCII 1 maps to the letter 'A' in the mock font + cons.Write(0, fg, bg, 0, 0) + cons.Write(1, fg, bg, 2, 1) + + // Convert expected contents from ASCII to byte + for i := 0; i < len(spec.expFb); i++ { + spec.expFb[i] -= '0' + } + + if !reflect.DeepEqual(spec.expFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(spec.consW, spec.consH, spec.consW*3, spec.expFb, fb), + ) + } + } +} + +func TestVesaFbScroll(t *testing.T) { + var ( + consW, consH uint32 = 16, 16 + offsetY uint32 = 3 + origFb = []byte("" + + "6666666666666666" + // } + "7777777777777777" + // }- reserved rows + "8888888888888888" + // } + "0000000000001000" + + "0000000000010000" + + "0000000000100000" + + "0000000001000000" + + "0000000010000000" + + "0000000100000000" + + "0000001000000000" + + "0000010000000000" + + "0000100000000000" + + "0001000000000000" + + "0010000000000000" + + "0100000000000000" + + "1000000000000000", + ) + ) + + specs := []struct { + dir ScrollDir + lines uint32 + expFb []byte + }{ + { + ScrollDirUp, + 0, + []byte("" + + "6666666666666666" + // } + "7777777777777777" + // }- reserved rows + "8888888888888888" + // } + "0000000000001000" + + "0000000000010000" + + "0000000000100000" + + "0000000001000000" + + "0000000010000000" + + "0000000100000000" + + "0000001000000000" + + "0000010000000000" + + "0000100000000000" + + "0001000000000000" + + "0010000000000000" + + "0100000000000000" + + "1000000000000000", + ), + }, + { + ScrollDirUp, + 10000, + []byte("" + + "6666666666666666" + // } + "7777777777777777" + // }- reserved rows + "8888888888888888" + // } + "0000000000001000" + + "0000000000010000" + + "0000000000100000" + + "0000000001000000" + + "0000000010000000" + + "0000000100000000" + + "0000001000000000" + + "0000010000000000" + + "0000100000000000" + + "0001000000000000" + + "0010000000000000" + + "0100000000000000" + + "1000000000000000", + ), + }, + { + ScrollDirUp, + 1, + []byte("" + + "6666666666666666" + // } + "7777777777777777" + // }- reserved rows + "8888888888888888" + // } + "0000000000010000" + + "0000000000100000" + + "0000000001000000" + + "0000000010000000" + + "0000000100000000" + + "0000001000000000" + + "0000010000000000" + + "0000100000000000" + + "0001000000000000" + + "0010000000000000" + + "0100000000000000" + + "1000000000000000" + + "1000000000000000", + ), + }, + { + ScrollDirUp, + 2, + []byte("" + + "6666666666666666" + // } + "7777777777777777" + // }- reserved rows + "8888888888888888" + // } + "0000000000100000" + + "0000000001000000" + + "0000000010000000" + + "0000000100000000" + + "0000001000000000" + + "0000010000000000" + + "0000100000000000" + + "0001000000000000" + + "0010000000000000" + + "0100000000000000" + + "1000000000000000" + + "0100000000000000" + + "1000000000000000", + ), + }, + { + ScrollDirDown, + 1, + []byte("" + + "6666666666666666" + // } + "7777777777777777" + // }- reserved rows + "8888888888888888" + // } + "0000000000001000" + + "0000000000001000" + + "0000000000010000" + + "0000000000100000" + + "0000000001000000" + + "0000000010000000" + + "0000000100000000" + + "0000001000000000" + + "0000010000000000" + + "0000100000000000" + + "0001000000000000" + + "0010000000000000" + + "0100000000000000", + ), + }, + { + ScrollDirDown, + 2, + []byte("" + + "6666666666666666" + // } + "7777777777777777" + // }- reserved rows + "8888888888888888" + // } + "0000000000001000" + + "0000000000010000" + + "0000000000001000" + + "0000000000010000" + + "0000000000100000" + + "0000000001000000" + + "0000000010000000" + + "0000000100000000" + + "0000001000000000" + + "0000010000000000" + + "0000100000000000" + + "0001000000000000" + + "0010000000000000", + ), + }, + } + + // Convert original fb contents from ASCII to byte + for i := 0; i < len(origFb); i++ { + origFb[i] -= '0' + } + + for specIndex, spec := range specs { + // Convert expected contents from ASCII to byte + for i := 0; i < len(spec.expFb); i++ { + spec.expFb[i] -= '0' + } + + fb := make([]uint8, consW*consH) + copy(fb, origFb) + + cons := NewVesaFbConsole(consW, consH, 8, consW, nil, 0) + cons.fb = fb + cons.offsetY = offsetY + + // calling scroll before setting the font should be a no-op + cons.Scroll(spec.dir, spec.lines) + if !reflect.DeepEqual(origFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, consW, origFb, fb), + ) + } + + cons.SetFont(&font.Font{ + GlyphWidth: 8, + GlyphHeight: 1, + BytesPerRow: 1, + }) + + cons.Scroll(spec.dir, spec.lines) + + if !reflect.DeepEqual(spec.expFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, consW, spec.expFb, fb), + ) + } + } +} + +func TestVesaFbFill8(t *testing.T) { + var ( + consW, consH uint32 = 16, 26 + bg uint8 = 1 + origFb = []byte("" + + "6666666666666666" + // } + "7777777777777777" + // }- reserved rows + "8888888888888888" + // } + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000", + ) + ) + specs := []struct { + // Input rect in characters + x, y, w, h uint32 + offsetY uint32 + expFb []byte + }{ + { + 0, 0, 1, 1, + 0, + []byte("" + + "1111111166666666" + // } + "1111111177777777" + // }- reserved rows + "1111111188888888" + // } + "1111111100000000" + + "1111111100000000" + + "1111111100000000" + + "1111111100000000" + + "1111111100000000" + + "1111111100000000" + + "1111111100000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000", + ), + }, + { + 2, 0, 10, 1, + 3, + []byte("" + + "6666666666666666" + // } + "7777777777777777" + // }- reserved rows + "8888888888888888" + // } + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000", + ), + }, + { + 0, 0, 100, 100, + 3, + []byte("" + + "6666666666666666" + // } + "7777777777777777" + // }- reserved rows + "8888888888888888" + // } + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "1111111111111111" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000", + ), + }, + { + 100, 100, 1, 1, + 6, + []byte("" + + "6666666666666666" + // } + "7777777777777777" + // }- reserved rows + "8888888888888888" + // } + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000000000000" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111" + + "0000000011111111", + ), + }, + } + + // Convert original fb contents from ASCII to byte + for i := 0; i < len(origFb); i++ { + origFb[i] -= '0' + } + + for specIndex, spec := range specs { + // Convert expected contents from ASCII to byte + for i := 0; i < len(spec.expFb); i++ { + spec.expFb[i] -= '0' + } + + fb := make([]uint8, consW*consH) + copy(fb, origFb) + + cons := NewVesaFbConsole(consW, consH, 8, consW, nil, 0) + cons.fb = fb + cons.offsetY = spec.offsetY + + // Calling fill before selecting a font should be a no-op + cons.Fill(spec.x, spec.y, spec.w, spec.h, 0, bg) + if !reflect.DeepEqual(origFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, consW, origFb, fb), + ) + } + + cons.SetFont(mockFont8x10) + + cons.Fill(spec.x, spec.y, spec.w, spec.h, 0, bg) + + if !reflect.DeepEqual(spec.expFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, consW, spec.expFb, fb), + ) + } + } +} + +func TestVesaFbFill16(t *testing.T) { + var ( + consW, consH uint32 = 16, 26 + // RGB555 + colorInfo = &multiboot.FramebufferRGBColorInfo{ + RedPosition: 10, + RedMaskSize: 5, + GreenPosition: 5, + GreenMaskSize: 5, + BluePosition: 0, + BlueMaskSize: 5, + } + bg uint8 = 1 + bgColor = color.RGBA{R: 10, G: 0, B: 12} + origFb = []byte("" + + "66666666666666666666666666666666" + // } + "77777777777777777777777777777777" + // }- reserved rows + "88888888888888888888888888888888" + // } + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000", + ) + ) + specs := []struct { + // Input rect in characters + x, y, w, h uint32 + offsetY uint32 + expFb []byte + }{ + { + 0, 0, 1, 1, + 0, + []byte("" + + "14141414141414146666666666666666" + // } + "14141414141414147777777777777777" + // }- reserved rows + "14141414141414148888888888888888" + // } + "14141414141414140000000000000000" + + "14141414141414140000000000000000" + + "14141414141414140000000000000000" + + "14141414141414140000000000000000" + + "14141414141414140000000000000000" + + "14141414141414140000000000000000" + + "14141414141414140000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000", + ), + }, + { + 2, 0, 10, 1, + 3, + []byte("" + + "66666666666666666666666666666666" + // } + "77777777777777777777777777777777" + // }- reserved rows + "88888888888888888888888888888888" + // } + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000", + ), + }, + { + 0, 0, 100, 100, + 3, + []byte("" + + "66666666666666666666666666666666" + // } + "77777777777777777777777777777777" + // }- reserved rows + "88888888888888888888888888888888" + // } + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "14141414141414141414141414141414" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000", + ), + }, + { + 100, 100, 1, 1, + 6, + []byte("" + + "66666666666666666666666666666666" + // } + "77777777777777777777777777777777" + // }- reserved rows + "88888888888888888888888888888888" + // } + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000000000000000000000" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414" + + "00000000000000001414141414141414", + ), + }, + } + + // Convert original fb contents from ASCII to byte + for i := 0; i < len(origFb); i++ { + origFb[i] -= '0' + } + + for specIndex, spec := range specs { + // Convert expected contents from ASCII to byte + for i := 0; i < len(spec.expFb); i++ { + spec.expFb[i] -= '0' + } + + fb := make([]uint8, consW*consH*2) + copy(fb, origFb) + + cons := NewVesaFbConsole(consW, consH, 16, consW*2, colorInfo, 0) + cons.fb = fb + cons.offsetY = spec.offsetY + cons.loadDefaultPalette() + cons.SetPaletteColor(bg, bgColor) + + // Calling fill before selecting a font should be a no-op + cons.Fill(spec.x, spec.y, spec.w, spec.h, 0, bg) + if !reflect.DeepEqual(origFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, consW*3, origFb, fb), + ) + } + + cons.SetFont(mockFont8x10) + + cons.Fill(spec.x, spec.y, spec.w, spec.h, 0, bg) + + if !reflect.DeepEqual(spec.expFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, consW*2, spec.expFb, fb), + ) + } + } +} + +func TestVesaFbFill24(t *testing.T) { + var ( + consW, consH uint32 = 16, 26 + // BGR + colorInfo = &multiboot.FramebufferRGBColorInfo{ + RedPosition: 16, + RedMaskSize: 8, + GreenPosition: 8, + GreenMaskSize: 8, + BluePosition: 0, + BlueMaskSize: 8, + } + bg uint8 = 1 + bgColor = color.RGBA{R: 1, G: 2, B: 3} + origFb = []byte("" + + "666666666666666666666666666666666666666666666666" + // } + "777777777777777777777777777777777777777777777777" + // }- reserved rows + "888888888888888888888888888888888888888888888888" + // } + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000", + ) + ) + specs := []struct { + // Input rect in characters + x, y, w, h uint32 + offsetY uint32 + expFb []byte + }{ + { + 0, 0, 1, 1, + 0, + []byte("" + + "321321321321321321321321666666666666666666666666" + // } + "321321321321321321321321777777777777777777777777" + // }- reserved rows + "321321321321321321321321888888888888888888888888" + // } + "321321321321321321321321000000000000000000000000" + + "321321321321321321321321000000000000000000000000" + + "321321321321321321321321000000000000000000000000" + + "321321321321321321321321000000000000000000000000" + + "321321321321321321321321000000000000000000000000" + + "321321321321321321321321000000000000000000000000" + + "321321321321321321321321000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000", + ), + }, + { + 2, 0, 10, 1, + 3, + []byte("" + + "666666666666666666666666666666666666666666666666" + // } + "777777777777777777777777777777777777777777777777" + // }- reserved rows + "888888888888888888888888888888888888888888888888" + // } + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000", + ), + }, + { + 0, 0, 100, 100, + 3, + []byte("" + + "666666666666666666666666666666666666666666666666" + // } + "777777777777777777777777777777777777777777777777" + // }- reserved rows + "888888888888888888888888888888888888888888888888" + // } + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "321321321321321321321321321321321321321321321321" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000", + ), + }, + { + 100, 100, 1, 1, + 6, + []byte("" + + "666666666666666666666666666666666666666666666666" + // } + "777777777777777777777777777777777777777777777777" + // }- reserved rows + "888888888888888888888888888888888888888888888888" + // } + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000000000000000000000000000" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321" + + "000000000000000000000000321321321321321321321321", + ), + }, + } + + // Convert original fb contents from ASCII to byte + for i := 0; i < len(origFb); i++ { + origFb[i] -= '0' + } + + for specIndex, spec := range specs { + // Convert expected contents from ASCII to byte + for i := 0; i < len(spec.expFb); i++ { + spec.expFb[i] -= '0' + } + + fb := make([]uint8, consW*consH*3) + copy(fb, origFb) + + cons := NewVesaFbConsole(consW, consH, 24, consW*3, colorInfo, 0) + cons.fb = fb + cons.offsetY = spec.offsetY + cons.loadDefaultPalette() + cons.SetPaletteColor(bg, bgColor) + + // Calling fill before selecting a font should be a no-op + cons.Fill(spec.x, spec.y, spec.w, spec.h, 0, bg) + if !reflect.DeepEqual(origFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, consW*3, origFb, fb), + ) + } + + cons.SetFont(mockFont8x10) + + cons.Fill(spec.x, spec.y, spec.w, spec.h, 0, bg) + + if !reflect.DeepEqual(spec.expFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, consW*3, spec.expFb, fb), + ) + } + } +} + +func TestVesaFbPalette(t *testing.T) { + defer func() { + portWriteByteFn = cpu.PortWriteByte + }() + + expPal := make(color.Palette, 0) + expPal = append(expPal, + color.RGBA{R: 0, G: 0, B: 0}, /* black */ + color.RGBA{R: 0, G: 0, B: 128}, /* blue */ + color.RGBA{R: 0, G: 128, B: 1}, /* green */ + color.RGBA{R: 0, G: 128, B: 128}, /* cyan */ + color.RGBA{R: 128, G: 0, B: 1}, /* red */ + color.RGBA{R: 128, G: 0, B: 128}, /* magenta */ + color.RGBA{R: 64, G: 64, B: 1}, /* brown */ + color.RGBA{R: 128, G: 128, B: 128}, /* light gray */ + color.RGBA{R: 64, G: 64, B: 64}, /* dark gray */ + color.RGBA{R: 0, G: 0, B: 255}, /* light blue */ + color.RGBA{R: 0, G: 255, B: 1}, /* light green */ + color.RGBA{R: 0, G: 255, B: 255}, /* light cyan */ + color.RGBA{R: 255, G: 0, B: 1}, /* light red */ + color.RGBA{R: 255, G: 0, B: 255}, /* light magenta */ + color.RGBA{R: 255, G: 255, B: 1}, /* yellow */ + color.RGBA{R: 255, G: 255, B: 255}, /* white */ + ) + + for i := len(expPal); i < 256; i++ { + expPal = append(expPal, expPal[0]) + } + + var ( + dacIndex uint8 + compIndex uint8 + portWriteCount int + ) + portWriteByteFn = func(port uint16, val uint8) { + portWriteCount++ + switch port { + case 0x3c8: + dacIndex = val + compIndex = 0 + case 0x3c9: + r, g, b, _ := expPal[dacIndex].RGBA() + + var expVal uint8 + switch compIndex { + case 0: + expVal = uint8(r) >> 2 + case 1: + expVal = uint8(g) >> 2 + case 2: + expVal = uint8(b) >> 2 + } + + if val != expVal { + t.Errorf("expected component %d for DAC entry %d to be %d; got %d", compIndex, dacIndex, expVal, val) + } + + compIndex++ + } + } + + cons := NewVesaFbConsole(0, 0, 8, 0, nil, 0) + cons.loadDefaultPalette() + + customColor := color.RGBA{R: 251, G: 252, B: 253} + expPal[255] = customColor + cons.SetPaletteColor(255, customColor) + + // Setting the same RGB value should be a no-op + cons.SetPaletteColor(255, customColor) + + if exp := 257 * 4; portWriteCount != exp { + t.Errorf("expected %d calls to cpu.portWriteByte; got %d", exp, portWriteCount) + } + + got := cons.Palette() + for index, exp := range expPal { + if got[index] != exp { + t.Errorf("palette entry %d: want %v; got %v", index, exp, got[index]) + } + } +} + +func TestVesaFbReplace16(t *testing.T) { + var ( + consW, consH uint32 = 4, 4 + // BGR + colorInfo = &multiboot.FramebufferRGBColorInfo{ + RedPosition: 10, + RedMaskSize: 5, + GreenPosition: 5, + GreenMaskSize: 5, + BluePosition: 0, + BlueMaskSize: 5, + } + ) + + specs := []struct { + bpp uint8 + inpFb []byte + expFb []byte + }{ + { + 24, + []byte{ + 0x00, 0x00, 0x12, 0x00, 0x00, 0x34, 0x34, 0x12, + 0x00, 0x00, 0x12, 0x00, 0x00, 0x34, 0x34, 0x12, + 0x00, 0x00, 0x12, 0x00, 0x00, 0x34, 0x34, 0x12, + 0x00, 0x00, 0x12, 0x00, 0x00, 0x34, 0x34, 0x12, + }, + []byte{ + 0x34, 0x12, 0x12, 0x00, 0x00, 0x34, 0x34, 0x12, + 0x34, 0x12, 0x12, 0x00, 0x00, 0x34, 0x34, 0x12, + 0x34, 0x12, 0x12, 0x00, 0x00, 0x34, 0x34, 0x12, + 0x34, 0x12, 0x12, 0x00, 0x00, 0x34, 0x34, 0x12, + }, + }, + } + + for specIndex, spec := range specs { + fb := make([]uint8, consW*consH*2) + copy(fb, spec.inpFb) + + cons := NewVesaFbConsole(consW, consH, 16, consW*2, colorInfo, 0) + cons.fb = fb + cons.palette = make(color.Palette, 1) + + // First color update should not trigger a replace as the color is not used yet + cons.SetPaletteColor(0, color.RGBA{}) + if !reflect.DeepEqual(spec.inpFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, cons.pitch, spec.expFb, fb), + ) + } + + // Second color update should replace existing pixels with the new RGB value + cons.SetPaletteColor(0, color.RGBA{R: 32, G: 136, B: 160}) + if !reflect.DeepEqual(spec.expFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, cons.pitch, spec.expFb, fb), + ) + } + } +} +func TestVesaFbReplace24(t *testing.T) { + var ( + consW, consH uint32 = 4, 4 + // BGR + colorInfo = &multiboot.FramebufferRGBColorInfo{ + RedPosition: 16, + RedMaskSize: 8, + GreenPosition: 8, + GreenMaskSize: 8, + BluePosition: 0, + BlueMaskSize: 8, + } + ) + + specs := []struct { + bpp uint8 + inpFb []byte + expFb []byte + }{ + { + 24, + []byte("" + + "000100010002" + + "000100010002" + + "000100010002" + + "000100010002", + ), + []byte("" + + "765100010002" + + "765100010002" + + "765100010002" + + "765100010002", + ), + }, + { + 32, + []byte("" + + "0000100001000020" + + "0000100001000020" + + "0000100001000020" + + "0000100001000020", + ), + []byte("" + + "7650100001000020" + + "7650100001000020" + + "7650100001000020" + + "7650100001000020", + ), + }, + } + + for specIndex, spec := range specs { + // Convert spec fb contents from ASCII to byte + for i := 0; i < len(spec.expFb); i++ { + spec.inpFb[i] -= '0' + spec.expFb[i] -= '0' + } + fb := make([]uint8, consW*consH*uint32(spec.bpp)>>3) + copy(fb, spec.inpFb) + + cons := NewVesaFbConsole(consW, consH, spec.bpp, consW*uint32(spec.bpp)>>3, colorInfo, 0) + cons.fb = fb + cons.palette = make(color.Palette, 1) + + // First color update should not trigger a replace as the color is not used yet + cons.SetPaletteColor(0, color.RGBA{}) + if !reflect.DeepEqual(spec.inpFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, cons.pitch, spec.expFb, fb), + ) + } + + // Second color update should replace existing pixels with the new RGB value + cons.SetPaletteColor(0, color.RGBA{R: 5, G: 6, B: 7}) + if !reflect.DeepEqual(spec.expFb, fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, cons.pitch, spec.expFb, fb), + ) + } + } +} + +func TestVesaFbDriverInterface(t *testing.T) { + defer func() { + mapRegionFn = vmm.MapRegion + portWriteByteFn = cpu.PortWriteByte + }() + var dev device.Driver = NewVesaFbConsole(320, 200, 8, 320, nil, uintptr(0xa0000)) + + if dev.DriverName() == "" { + t.Fatal("DriverName() returned an empty string") + } + + if major, minor, patch := dev.DriverVersion(); major+minor+patch == 0 { + t.Fatal("DriverVersion() returned an invalid version number") + } + + t.Run("init success", func(t *testing.T) { + mapRegionFn = func(_ pmm.Frame, _ mem.Size, _ vmm.PageTableEntryFlag) (vmm.Page, *kernel.Error) { + return 0xa0000, nil + } + + portWriteByteFn = func(_ uint16, _ uint8) {} + + if err := dev.DriverInit(nil); err != nil { + t.Fatal(err) + } + }) + + t.Run("init fail", func(t *testing.T) { + expErr := &kernel.Error{Module: "test", Message: "something went wrong"} + mapRegionFn = func(_ pmm.Frame, _ mem.Size, _ vmm.PageTableEntryFlag) (vmm.Page, *kernel.Error) { + return 0, expErr + } + + if err := dev.DriverInit(nil); err != expErr { + t.Fatalf("expected error: %v; got %v", expErr, err) + } + }) +} + +func TestVesaFbProbe(t *testing.T) { + defer func() { + getFramebufferInfoFn = multiboot.GetFramebufferInfo + }() + + getFramebufferInfoFn = func() *multiboot.FramebufferInfo { + return &multiboot.FramebufferInfo{ + Width: 320, + Height: 20, + Pitch: 320, + Bpp: 8, + PhysAddr: 0xa0000, + Type: multiboot.FramebufferTypeIndexed, + } + } + + if drv := probeForVesaFbConsole(); drv == nil { + t.Fatal("expected probeForVesaFbConsole to return a driver") + } +} + +func TestVesaFbPackColor16(t *testing.T) { + specs := []struct { + colorInfo *multiboot.FramebufferRGBColorInfo + input color.RGBA + exp uint16 + }{ + { + // RGB555 + &multiboot.FramebufferRGBColorInfo{ + RedPosition: 10, + RedMaskSize: 5, + GreenPosition: 5, + GreenMaskSize: 5, + BluePosition: 0, + BlueMaskSize: 5, + }, + color.RGBA{R: 32, G: 136, B: 160}, + 0x1234, + }, + { + // RGB565 + &multiboot.FramebufferRGBColorInfo{ + RedPosition: 11, + RedMaskSize: 5, + GreenPosition: 5, + GreenMaskSize: 6, + BluePosition: 0, + BlueMaskSize: 5, + }, + color.RGBA{R: 250, G: 200, B: 120}, + (250>>3)<<11 | (200>>2)<<5 | (120 >> 3), + }, + } + + cons := NewVesaFbConsole(0, 0, 16, 0, nil, 0) + cons.palette = make(color.Palette, 256) + + for specIndex, spec := range specs { + cons.colorInfo = spec.colorInfo + cons.palette[0] = spec.input + + exp := [2]uint8{ + uint8(spec.exp), + uint8(spec.exp >> 8), + } + + if got := cons.packColor16(0); got != exp { + t.Errorf("[spec %d] expected: %v; got %v", specIndex, exp, got) + } + } +} + +func TestVesaFbPackColor24(t *testing.T) { + specs := []struct { + colorInfo *multiboot.FramebufferRGBColorInfo + input color.RGBA + exp [3]uint8 + }{ + { + // RGB + &multiboot.FramebufferRGBColorInfo{ + RedPosition: 0, + RedMaskSize: 8, + GreenPosition: 8, + GreenMaskSize: 8, + BluePosition: 16, + BlueMaskSize: 8, + }, + color.RGBA{R: 100, G: 200, B: 255}, + [3]uint8{100, 200, 255}, + }, + { + // BGR + &multiboot.FramebufferRGBColorInfo{ + RedPosition: 16, + RedMaskSize: 8, + GreenPosition: 8, + GreenMaskSize: 8, + BluePosition: 0, + BlueMaskSize: 8, + }, + color.RGBA{R: 250, G: 200, B: 120}, + [3]uint8{120, 200, 250}, + }, + } + + cons := NewVesaFbConsole(0, 0, 32, 0, nil, 0) + cons.palette = make(color.Palette, 256) + + for specIndex, spec := range specs { + cons.colorInfo = spec.colorInfo + cons.palette[0] = spec.input + + if got := cons.packColor24(0); got != spec.exp { + t.Errorf("[spec %d] expected: %v; got %v", specIndex, spec.exp, got) + } + } +} + +func TestVesaFbSetLogo(t *testing.T) { + defer func() { + portWriteByteFn = cpu.PortWriteByte + }() + + var ( + consW uint32 = 4 + consH uint32 = 2 + inpFb8 = []byte{ + 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, + } + inpFb16 = []byte{ + 0xaa, 0xab, 0xaa, 0xab, 0xaa, 0xab, 0xaa, 0xab, + 0xaa, 0xab, 0xaa, 0xab, 0xaa, 0xab, 0xaa, 0xab, + } + inpFb24 = []byte{ + 0xaa, 0xab, 0xac, 0xaa, 0xab, 0xac, 0xaa, 0xab, 0xac, 0xaa, 0xab, 0xac, + 0xaa, 0xab, 0xac, 0xaa, 0xab, 0xac, 0xaa, 0xab, 0xac, 0xaa, 0xab, 0xac, + } + mockLogo = &logo.Image{ + Width: 2, + Height: 2, + Align: logo.AlignLeft, + TransparentIndex: 0, + Palette: []color.RGBA{ + color.RGBA{R: 255, G: 0, B: 255}, + color.RGBA{R: 255, G: 0, B: 128}, + }, + Data: []byte{ + 0x0, 0x1, + 0x1, 0x0, + }, + } + ) + + specs := []struct { + inpFb []byte + bpp uint8 + colorInfo *multiboot.FramebufferRGBColorInfo + align logo.Alignment + logo *logo.Image + expFb []byte + }{ + { + inpFb8, + 8, + nil, + logo.AlignLeft, + mockLogo, + []byte{ + 0xfe, 0xff, 0xaa, 0xaa, + 0xff, 0xfe, 0xaa, 0xaa, + }, + }, + { + inpFb8, + 8, + nil, + logo.AlignCenter, + mockLogo, + []byte{ + 0xaa, 0xfe, 0xff, 0xaa, + 0xaa, 0xff, 0xfe, 0xaa, + }, + }, + { + inpFb8, + 8, + nil, + logo.AlignRight, + mockLogo, + []byte{ + 0xaa, 0xaa, 0xfe, 0xff, + 0xaa, 0xaa, 0xff, 0xfe, + }, + }, + { + inpFb16, + 16, + // RGB555 + &multiboot.FramebufferRGBColorInfo{ + RedPosition: 10, + RedMaskSize: 5, + GreenPosition: 5, + GreenMaskSize: 5, + BluePosition: 0, + BlueMaskSize: 5, + }, + logo.AlignLeft, + mockLogo, + []byte{ + 0x00, 0x00, 0x10, 0x7c, 0xaa, 0xab, 0xaa, 0xab, + 0x10, 0x7c, 0x00, 0x00, 0xaa, 0xab, 0xaa, 0xab, + }, + }, + { + inpFb24, + 24, + // RGB + &multiboot.FramebufferRGBColorInfo{ + RedPosition: 0, + RedMaskSize: 8, + GreenPosition: 8, + GreenMaskSize: 8, + BluePosition: 16, + BlueMaskSize: 8, + }, + logo.AlignRight, + mockLogo, + []byte{ + 0xaa, 0xab, 0xac, 0xaa, 0xab, 0xac, 0x00, 0x00, 0x00, 0xff, 0x00, 0x80, + 0xaa, 0xab, 0xac, 0xaa, 0xab, 0xac, 0xff, 0x00, 0x80, 0x00, 0x00, 0x00, + }, + }, + } + + var () + for specIndex, spec := range specs { + portWriteByteFn = func(port uint16, val uint8) {} + + cons := NewVesaFbConsole(consW, consH, spec.bpp, consW*uint32(spec.bpp>>3), spec.colorInfo, 0) + cons.fb = make([]byte, len(spec.inpFb)) + copy(cons.fb, spec.inpFb) + cons.palette = make(color.Palette, 256) + cons.loadDefaultPalette() + + // Setting a nil logo should be a no-op + cons.SetLogo(nil) + if !reflect.DeepEqual(spec.inpFb, cons.fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, cons.pitch, spec.expFb, cons.fb), + ) + } + + mockLogo.Align = spec.align + cons.SetLogo(mockLogo) + + if !reflect.DeepEqual(spec.expFb, cons.fb) { + t.Errorf("[spec %d] unexpected frame buffer contents:\n%s", + specIndex, + diffFrameBuffer(consW, consH, cons.pitch, spec.expFb, cons.fb), + ) + } + } +} + +func dumpFramebuffer(consW, consH, consPitch uint32, fb []byte) string { + var buf bytes.Buffer + + for y := uint32(0); y < consH; y++ { + fmt.Fprintf(&buf, "%04d |", y) + index := (y * consPitch) + for x := uint32(0); x < consPitch; x++ { + fmt.Fprintf(&buf, "%d ", fb[index+x]) + } + fmt.Fprintln(&buf, "|") + } + + return strings.TrimSpace(buf.String()) +} + +func diffFrameBuffer(consW, consH, consPitch uint32, exp, got []byte) string { + expDump := strings.Split(dumpFramebuffer(consW, consH, consPitch, exp), "\n") + gotDump := strings.Split(dumpFramebuffer(consW, consH, consPitch, got), "\n") + + maxLines := len(expDump) + if l := len(gotDump); l > maxLines { + maxLines = l + } + + var buf bytes.Buffer + var left, right string + + buf.WriteString("exp:") + buf.WriteString(strings.Repeat(" ", len(expDump[0])-4)) + buf.WriteString(" | got:\n") + + for line := 0; line < maxLines; line++ { + if line < len(expDump) { + left = expDump[line] + } else { + left = "" + } + + if line < len(gotDump) { + right = gotDump[line] + } else { + right = "" + } + + fmt.Fprintf(&buf, "%s | %s\n", left, right) + } + + return buf.String() +} + +var mockFont8x10 = &font.Font{ + GlyphWidth: 8, + GlyphHeight: 10, + BytesPerRow: 1, + Data: []byte{ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + 0x00, /* 00000000 */ + // glyph 1 + 0x10, /* 00010000 */ + 0x38, /* 00111000 */ + 0x6c, /* 01101100 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xfe, /* 11111110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + 0xc6, /* 11000110 */ + }, +} + +var mockFont10x14 = &font.Font{ + GlyphWidth: 10, + GlyphHeight: 14, + BytesPerRow: 2, + Data: []byte{ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + 0x00, 0x00, /* 0000000000 */ + // glyph 1 + 0x04, 0x00, /* 0000010000 */ + 0x04, 0x00, /* 0000010000 */ + 0x0e, 0x00, /* 0000111000 */ + 0x0e, 0x00, /* 0000111000 */ + 0x1b, 0x00, /* 0001101100 */ + 0x1b, 0x00, /* 0001101100 */ + 0x19, 0x80, /* 0001100110 */ + 0x31, 0x80, /* 0011000110 */ + 0x3f, 0x80, /* 0011111110 */ + 0x31, 0x80, /* 0011000110 */ + 0x61, 0x80, /* 0110000110 */ + 0x60, 0xc0, /* 0110000011 */ + 0x60, 0xc0, /* 0110000011 */ + 0xf1, 0xc0, /* 1111000111 */ + }, +} diff --git a/src/gopheros/device/video/console/vga_text.go b/src/gopheros/device/video/console/vga_text.go index 0215363..eee6737 100644 --- a/src/gopheros/device/video/console/vga_text.go +++ b/src/gopheros/device/video/console/vga_text.go @@ -70,9 +70,14 @@ func NewVgaTextConsole(columns, rows uint32, fbPhysAddr uintptr) *VgaTextConsole } } -// Dimensions returns the console width and height in characters. -func (cons *VgaTextConsole) Dimensions() (uint32, uint32) { - return cons.width, cons.height +// Dimensions returns the console width and height in the specified dimension. +func (cons *VgaTextConsole) Dimensions(dim Dimension) (uint32, uint32) { + switch dim { + case Characters: + return cons.width, cons.height + default: + return cons.width * 8, cons.height * 16 + } } // DefaultColors returns the default foreground and background colors diff --git a/src/gopheros/device/video/console/vga_text_test.go b/src/gopheros/device/video/console/vga_text_test.go index d18b9be..3cbb69d 100644 --- a/src/gopheros/device/video/console/vga_text_test.go +++ b/src/gopheros/device/video/console/vga_text_test.go @@ -15,9 +15,18 @@ import ( func TestVgaTextDimensions(t *testing.T) { var cons Device = NewVgaTextConsole(40, 50, 0) - if w, h := cons.Dimensions(); w != 40 || h != 50 { + if w, h := cons.Dimensions(Characters); w != 40 || h != 50 { t.Fatalf("expected console dimensions to be 80x25; got %dx%d", w, h) } + + var ( + expW uint32 = 40 * 8 + expH uint32 = 50 * 16 + ) + + if w, h := cons.Dimensions(Pixels); w != expW || h != expH { + t.Fatalf("expected console dimensions to be %dx%d; got %dx%d", expW, expH, w, h) + } } func TestVgaTextDefaultColors(t *testing.T) { @@ -68,7 +77,7 @@ func TestVgaTextFill(t *testing.T) { fb := make([]uint16, 80*25) cons := NewVgaTextConsole(80, 25, uintptr(unsafe.Pointer(&fb[0]))) cons.fb = fb - cw, ch := cons.Dimensions() + cw, ch := cons.Dimensions(Characters) testPat := uint16(0xDEAD) clearPat := uint16(cons.clearChar) @@ -107,7 +116,7 @@ func TestVgaTextScroll(t *testing.T) { fb := make([]uint16, 80*25) cons := NewVgaTextConsole(80, 25, uintptr(unsafe.Pointer(&fb[0]))) cons.fb = fb - cw, ch := cons.Dimensions() + cw, ch := cons.Dimensions(Characters) t.Run("up", func(t *testing.T) { specs := []uint32{ diff --git a/src/gopheros/kernel/hal/hal.go b/src/gopheros/kernel/hal/hal.go index ff91e05..a73eed5 100644 --- a/src/gopheros/kernel/hal/hal.go +++ b/src/gopheros/kernel/hal/hal.go @@ -5,6 +5,9 @@ import ( "gopheros/device" "gopheros/device/tty" "gopheros/device/video/console" + "gopheros/device/video/console/font" + "gopheros/device/video/console/logo" + "gopheros/kernel/hal/multiboot" "gopheros/kernel/kfmt" ) @@ -30,6 +33,43 @@ func DetectHardware() { consoles := probe(console.ProbeFuncs) if len(consoles) != 0 { devices.activeConsole = consoles[0].(console.Device) + + if logoSetter, ok := (devices.activeConsole).(console.LogoSetter); ok { + disableLogo := false + for k, v := range multiboot.GetBootCmdLine() { + if k == "consoleLogo" && v == "off" { + disableLogo = true + break + } + } + + if !disableLogo { + consW, consH := devices.activeConsole.Dimensions(console.Pixels) + logoSetter.SetLogo(logo.BestFit(consW, consH)) + } + } + + if fontSetter, ok := (devices.activeConsole).(console.FontSetter); ok { + consW, consH := devices.activeConsole.Dimensions(console.Pixels) + + // Check boot cmdline for a font request + var selFont *font.Font + for k, v := range multiboot.GetBootCmdLine() { + if k != "consoleFont" { + continue + } + + if selFont = font.FindByName(v); selFont != nil { + break + } + } + + if selFont == nil { + selFont = font.BestFit(consW, consH) + } + + fontSetter.SetFont(selFont) + } } ttys := probe(tty.ProbeFuncs) diff --git a/tools/makelogo/makelogo.go b/tools/makelogo/makelogo.go new file mode 100644 index 0000000..00e0ef7 --- /dev/null +++ b/tools/makelogo/makelogo.go @@ -0,0 +1,195 @@ +package main + +import ( + "bytes" + "errors" + "flag" + "fmt" + "go/parser" + "go/printer" + "go/token" + "image" + "image/color" + "os" + + _ "image/gif" + _ "image/jpeg" + _ "image/png" +) + +// The max number of colors that are allowed in a logo. +const maxColors = 16 + +func exit(err error) { + fmt.Fprintf(os.Stderr, "[makelogo] error: %s\n", err.Error()) + os.Exit(1) +} + +func buildPalette(img image.Image, transColor color.RGBA) ([]color.RGBA, map[color.RGBA]int, error) { + var ( + palette []color.RGBA + colorToPalIndex = make(map[color.RGBA]int) + ) + + // Transparent color is always first + palette = append(palette, transColor) + colorToPalIndex[palette[0]] = 0 + + bounds := img.Bounds() + for y := 0; y < bounds.Size().Y; y++ { + for x := 0; x < bounds.Size().X; x++ { + r, g, b, _ := img.At(x, y).RGBA() + c := color.RGBA{R: uint8(r), G: uint8(g), B: uint8(b)} + if _, exists := colorToPalIndex[c]; exists { + continue + } + + colorToPalIndex[c] = len(colorToPalIndex) + palette = append(palette, c) + } + } + + if got := len(palette); got > maxColors { + return nil, nil, fmt.Errorf("logo should not contain more than %d colors; got %d", maxColors, got) + } + + return palette, colorToPalIndex, nil +} + +func genLogoFile(img image.Image, transColor color.RGBA, logoVar, align string) (string, error) { + var ( + buf bytes.Buffer + bounds = img.Bounds() + logoVarName = fmt.Sprintf("%s%dx%d", logoVar, bounds.Size().X, bounds.Size().Y) + ) + + // Generate palette + palette, colorToPalIndex, err := buildPalette(img, transColor) + if err != nil { + return "", err + } + + // Output header + fmt.Fprintf(&buf, ` +package logo + +import "image/color" + +var ( +%s = Image{ +Width: %d, +Height: %d, +Align: %s, +TransparentIndex: 0, +`, logoVarName, bounds.Size().X, bounds.Size().Y, align) + + // Output palette + fmt.Fprint(&buf, "Palette: []color.RGBA{\n") + for _, c := range palette { + fmt.Fprintf(&buf, "\t{R:%d, G:%d, B:%d},\n", c.R, c.G, c.B) + } + fmt.Fprint(&buf, "},\n") + + // Output image data + fmt.Fprint(&buf, "Data: []uint8{\n") + + pixelIndex := 0 + for y := 0; y < bounds.Size().Y; y++ { + for x := 0; x < bounds.Size().X; x, pixelIndex = x+1, pixelIndex+1 { + if pixelIndex != 0 && pixelIndex%16 == 0 { + buf.WriteByte('\n') + } + + r, g, b, _ := img.At(x, y).RGBA() + colorIndex := colorToPalIndex[color.RGBA{R: uint8(r), G: uint8(g), B: uint8(b)}] + + fmt.Fprintf(&buf, "0x%x, ", colorIndex) + } + } + fmt.Fprint(&buf, "\n},\n") + + // Footer + fmt.Fprint(&buf, "}\n)\n") + fmt.Fprintf(&buf, "func init(){\navailableLogos = append(availableLogos, &%s)\n}\n", logoVarName) + + return buf.String(), nil +} + +func runTool() error { + transR := flag.Uint("trans-r", 255, "the red component value for the transparent color") + transG := flag.Uint("trans-g", 0, "the green component value for the transparent color") + transB := flag.Uint("trans-b", 255, "the blue component value for the transparent color") + logoVar := flag.String("var-name", "logo", "the name of the variable containing the logo data") + align := flag.String("align", "center", "the horizontal alignment for the logo (left, center or right)") + output := flag.String("out", "-", "a file to write the generated logo or - to output to STDOUT") + flag.Usage = func() { + fmt.Fprint(os.Stderr, "makelogo: convert a png/jpg or gif image to a 8bpp console logo\n\n") + fmt.Fprint(os.Stderr, "Usage: makelogo [options] image\n") + flag.PrintDefaults() + } + flag.Parse() + + if flag.NArg() != 1 { + exit(errors.New("missing image file argument")) + } + + switch *align { + case "left": + *align = "AlignLeft" + case "center": + *align = "AlignCenter" + case "right": + *align = "AlignRight" + default: + exit(errors.New("invalid alignment specification; supported values are: left, center or right")) + } + + f, err := os.Open(flag.Arg(0)) + if err != nil { + return err + } + defer f.Close() + + img, _, err := image.Decode(f) + if err != nil { + return err + } + + logoData, err := genLogoFile( + img, + color.RGBA{R: uint8(*transR), G: uint8(*transG), B: uint8(*transB)}, + *logoVar, + *align, + ) + if err != nil { + return err + } + + // Pretty-print generated file using go/printer + fSet := token.NewFileSet() + astFile, err := parser.ParseFile(fSet, "", logoData, parser.ParseComments) + if err != nil { + return err + } + + switch *output { + case "-": + printer.Fprint(os.Stdout, fSet, astFile) + default: + fOut, err := os.Create(*output) + if err != nil { + return err + } + defer fOut.Close() + + printer.Fprint(fOut, fSet, astFile) + } + + return nil +} + +func main() { + if err := runTool(); err != nil { + exit(err) + } +}