libdraw: redo default font construction to be hidpi-safe

If $font is not set, the default font is constructed from
font data linked into every libdraw binary. That process
was different from the usual openfont code, and so it was
not hidpi-aware, resulting in very tiny fonts out of the box
on hidpi systems, until users set $font.

Fix this by using openfont to construct the default font,
by recognizing the name *default* when looking for
font and subfont file contents. Then all the hidpi scaling
applies automatically.

As a side effect, the concept of a 'default subfont' is gone,
as are display->defaultsubfont, getdefont, and memgetdefont.
This commit is contained in:
Russ Cox 2018-11-15 23:52:05 -05:00
parent 3ebbb99ce3
commit 16d0081989
20 changed files with 374 additions and 587 deletions

View file

@ -199,7 +199,6 @@ struct Display
int obufsize;
uchar *obufp;
Font *defaultfont;
Subfont *defaultsubfont;
Image *windows;
Image *screenimage;
int _isnewdisplay;
@ -498,7 +497,6 @@ extern Point strsubfontwidth(Subfont*, char*);
extern int loadchar(Font*, Rune, Cacheinfo*, int, int, char**);
extern char* subfontname(char*, char*, int);
extern Subfont* _getsubfont(Display*, char*);
extern Subfont* getdefont(Display*);
extern void lockdisplay(Display*);
extern void unlockdisplay(Display*);
extern int drawlsetrefresh(u32int, int, void*, void*);
@ -508,8 +506,6 @@ extern void swapfont(Font*, Font**, Font**);
/*
* Predefined
*/
extern uchar defontdata[];
extern int sizeofdefont;
extern Point ZP;
extern Rectangle ZR;

View file

@ -178,7 +178,6 @@ extern Memsubfont* allocmemsubfont(char*, int, int, int, Fontchar*, Memimage*);
extern Memsubfont* openmemsubfont(char*);
extern void freememsubfont(Memsubfont*);
extern Point memsubfontwidth(Memsubfont*, char*);
extern Memsubfont* getmemdefont(void);
/*
* Predefined

View file

@ -1,6 +1,6 @@
.TH GRAPHICS 3
.SH NAME
Display, Point, Rectangle, Cursor, initdraw, geninitdraw, drawerror, initdisplay, closedisplay, getdefont, getwindow, gengetwindow, flushimage, bufimage, lockdisplay, unlockdisplay, cursorswitch, cursorset, openfont, buildfont, freefont, Pfmt, Rfmt, strtochan, chantostr, chantodepth \- interactive graphics
Display, Point, Rectangle, Cursor, initdraw, geninitdraw, drawerror, initdisplay, closedisplay, getwindow, gengetwindow, flushimage, bufimage, lockdisplay, unlockdisplay, cursorswitch, cursorset, openfont, buildfont, freefont, Pfmt, Rfmt, strtochan, chantostr, chantodepth \- interactive graphics
.SH SYNOPSIS
.nf
.PP
@ -38,9 +38,6 @@ Display* initdisplay(char *devdir, char *win, void(*errfun)(Display*, char*))
void closedisplay(Display *d)
.PP
.B
Font* getdefont(Display *d)
.PP
.B
int flushimage(Display *d, int vis)
.PP
.B
@ -398,11 +395,7 @@ names the directory, default
in which the files associated with the window reside.
.I Closedisplay
disconnects the display and frees the associated data structures.
.I Getdefont
builds a
.B Font
structure from in-core data describing a default font.
None of these routines is needed by most programs, since
Neither of these routines is needed by most programs, since
.I initdraw
calls them as needed.
.PP

View file

@ -152,7 +152,6 @@ Memsubfont* allocmemsubfont(char *name, int n, int height,
Memsubfont* openmemsubfont(char *name)
void freememsubfont(Memsubfont *f)
Point memsubfontwidth(Memsubfont *f, char *s)
Memsubfont* getmemdefont(void)
Point memimagestring(Memimage *dst, Point p, Memimage *color,
Point cp, Memsubfont *f, char *cs, Drawop op)
.PP
@ -354,7 +353,6 @@ Similarly,
.IR openmemsubfont ,
.IR freememsubfont ,
.IR memsubfontwidth ,
.IR getmemdefont ,
and
.I memimagestring
are the
@ -364,7 +362,6 @@ analogues of
.IR openfont ,
.IR freesubfont ,
.IR strsubfontwidth ,
.IR getdefont ,
and
.B string
(see

View file

@ -30,6 +30,5 @@ Memsubfont* mksubfont(XFont*, char*, int, int, int, int);
extern XFont *xfont;
extern int nxfont;
void *emalloc9p(ulong);
extern Memsubfont *defont;
void drawpjw(Memimage*, Fontchar*, int, int, int, int);

View file

@ -13,8 +13,6 @@
#include "a.h"
Memsubfont *defont;
void
usage(void)
{
@ -526,7 +524,6 @@ main(int argc, char **argv)
fmtinstall('R', Rfmt);
fmtinstall('P', Pfmt);
memimageinit();
defont = getmemdefont();
loadfonts();
qsort(xfont, nxfont, sizeof xfont[0], fontcmp);

View file

@ -132,7 +132,7 @@ freefont(Font *f)
}
for(i=0; i<f->nsubf; i++){
s = f->subf[i].f;
if(s && (!display || s!=display->defaultsubfont))
if(s)
freesubfont(s);
}
freeimage(f->cacheimage);

View file

@ -1,402 +0,0 @@
#include <u.h>
#include <libc.h>
#include <draw.h>
/*
* lucm/latin1.9, in uncompressed form
*/
uchar
defontdata[] =
{
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x32,0x33,0x30,0x34,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x35,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,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,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
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,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x30,0x06,0x06,0x03,0x42,0x40,0x00,0x00,0x00,0x18,0x03,0x03,
0x02,0x43,0x00,0x60,0x60,0x48,0x00,0x0d,0x0c,0x01,0x81,0x80,0xd0,0x90,0x00,0x00,
0x18,0x01,0x81,0x81,0x40,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,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x7f,0x9c,0x1c,
0x0e,0x07,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x70,
0x38,0x1c,0x0e,0x04,0x81,0xc1,0xc0,0x70,0x00,0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaa,0x80,0xc0,0x63,0xe3,
0xf1,0xf8,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x7f,0xff,0xff,0x1f,0x8f,
0xc7,0xe3,0xf1,0xfb,0x7e,0x3e,0x3f,0x8f,0xff,0xe3,0xe3,0xff,0xff,0xff,0xff,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,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0c,0x18,0x09,0x05,0x82,0x40,0xc0,0x00,0x00,0x06,0x0c,0x04,
0x82,0x40,0xc1,0x80,0x90,0x48,0x00,0x16,0x03,0x06,0x02,0x41,0x60,0x90,0x00,0x00,
0x06,0x06,0x02,0x41,0x41,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,0x3e,0x7f,0xa0,0x10,
0x08,0x04,0x02,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x48,
0x24,0x12,0x09,0x06,0x82,0x01,0x00,0x90,0x00,0x20,0x10,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x04,0x80,0x00,0x40,0x00,0x00,0x38,0x06,0x18,0x00,0x00,0x00,0x00,0x00,
0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0xc6,0x01,0xf0,0x00,0x00,0x0c,0x00,0x18,0x00,0x00,0x30,0x00,0x3c,
0x00,0x60,0x06,0x01,0x8c,0x07,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xe0,0xc3,0xc0,0x01,0x54,0x9c,0xc0,0x5f,0xef,
0xf7,0xfb,0xfd,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xfb,0x7f,0xff,0xff,0x6f,0xb7,
0xdb,0xed,0xf6,0xf9,0x7d,0xfe,0xff,0x6f,0xff,0xdf,0xef,0xff,0xff,0xff,0xff,0xff,
0xff,0x00,0x01,0x00,0x00,0x00,0x00,0x30,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x20,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x30,0x06,0x06,0x06,0x82,0x80,0xc0,0x00,
0x00,0x18,0x03,0x03,0x02,0x41,0x80,0x30,0x30,0x24,0x76,0x0d,0x0c,0x00,0xc0,0xc0,
0xd0,0x50,0x00,0x00,0x18,0x01,0x81,0x81,0x40,0x30,0x00,0x28,0x0f,0x7f,0xbc,0x1c,
0x0e,0x07,0x03,0xc0,0x10,0x70,0x24,0x10,0x09,0x07,0x03,0x80,0xe0,0x70,0x90,0x48,
0x24,0x12,0x09,0x05,0x81,0x81,0xc0,0x80,0x70,0x18,0x1c,0x07,0x01,0xc1,0xc0,0x90,
0x00,0x0c,0x04,0x84,0x83,0xe1,0xc0,0xe0,0x38,0x0c,0x0c,0x02,0x00,0x00,0x00,0x00,
0x00,0x06,0x1c,0x06,0x0f,0x87,0xc0,0x63,0xf8,0x78,0xfe,0x3e,0x0e,0x00,0x00,0x00,
0x00,0x00,0x00,0x7c,0x1c,0x0c,0x1f,0x03,0xc7,0xc3,0xf1,0xf8,0x3c,0x63,0x3f,0x0f,
0x8c,0x66,0x06,0x19,0x84,0x78,0x7e,0x1e,0x1f,0x07,0xcf,0xf3,0x1b,0x0d,0x86,0x63,
0x61,0x9f,0xc6,0x06,0x00,0x30,0x00,0x00,0x10,0x00,0x18,0x00,0x00,0x30,0x00,0x60,
0x00,0x60,0x06,0x01,0x8c,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xc0,0x60,0x00,0xaa,0xb6,0xc0,0x43,0xe3,
0xf1,0xf8,0xfc,0x3f,0xef,0x8f,0xdb,0xef,0xf6,0xf8,0xfb,0xff,0x1f,0x8f,0x6f,0xb7,
0xdb,0xed,0xf6,0xfa,0x7e,0x7e,0x3f,0x7f,0x8f,0xe7,0xe3,0xf8,0xfe,0x3e,0x3f,0x6f,
0x00,0x00,0x01,0x01,0xc8,0x0b,0x0c,0x30,0x7c,0x14,0x0f,0x0f,0x00,0x00,0x00,0x00,
0x78,0x00,0x1c,0x00,0x0f,0x07,0x81,0x80,0x00,0x7c,0x00,0x00,0x1c,0x0f,0x80,0x04,
0x42,0x23,0x90,0x00,0x18,0x0c,0x06,0x03,0x01,0x80,0xc0,0x3c,0x3c,0x3f,0x1f,0x8f,
0xc7,0xe7,0xe3,0xf1,0xf8,0xfc,0x7c,0x30,0x8f,0x07,0x83,0xc1,0xe0,0xf0,0x00,0x3d,
0x31,0x98,0xcc,0x66,0x36,0x19,0x80,0xcc,0x0c,0x18,0x09,0x0b,0x02,0x81,0x20,0x00,
0x00,0x06,0x0c,0x04,0x82,0x40,0x60,0xc0,0x48,0x24,0x18,0x16,0x03,0x03,0x01,0x21,
0x60,0x50,0x00,0x00,0x06,0x06,0x02,0x41,0x40,0xc1,0x80,0x28,0x87,0x7f,0x84,0x10,
0x08,0x04,0x02,0x40,0x38,0x48,0x24,0x10,0x09,0x04,0x04,0x81,0x00,0x80,0x90,0x48,
0x24,0x12,0x09,0x04,0x80,0x41,0x00,0x80,0x40,0x04,0x10,0x04,0x02,0x01,0x20,0x90,
0x00,0x0c,0x04,0x84,0x86,0x53,0x65,0xb0,0x08,0x18,0x06,0x0a,0x80,0x00,0x00,0x00,
0x00,0x0c,0x36,0x0e,0x19,0xcc,0xe0,0xe3,0xf8,0xcc,0xfe,0x63,0x1b,0x00,0x00,0x00,
0x00,0x00,0x00,0xc6,0x62,0x0c,0x19,0x86,0x66,0x63,0x01,0x80,0x66,0x63,0x0c,0x01,
0x8c,0xc6,0x06,0x19,0xc4,0xcc,0x63,0x33,0x19,0x8c,0x61,0x83,0x1b,0x0d,0x86,0x63,
0x61,0x80,0xc6,0x03,0x00,0x30,0x30,0x00,0x1c,0x00,0x18,0x00,0x00,0x30,0x00,0x60,
0x00,0x60,0x00,0x00,0x0c,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0xc0,0x60,0x01,0x54,0x86,0xc0,0x7b,0xef,
0xf7,0xfb,0xfd,0xbf,0xc7,0xb7,0xdb,0xef,0xf6,0xfb,0xfb,0x7e,0xff,0x7f,0x6f,0xb7,
0xdb,0xed,0xf6,0xfb,0x7f,0xbe,0xff,0x7f,0xbf,0xfb,0xef,0xfb,0xfd,0xfe,0xdf,0x6f,
0xff,0x00,0x07,0x83,0x24,0x13,0x0c,0x30,0xc6,0x00,0x10,0x81,0x80,0x00,0x00,0x00,
0x84,0x00,0x22,0x00,0x01,0x80,0xc0,0x00,0x00,0xf4,0x00,0x00,0x2c,0x18,0xc0,0x0c,
0x46,0x20,0x90,0x00,0x18,0x0c,0x06,0x03,0x01,0x80,0xc0,0x70,0x66,0x30,0x18,0x0c,
0x06,0x01,0x80,0xc0,0x60,0x30,0x66,0x38,0x99,0x8c,0xc6,0x63,0x31,0x98,0x00,0x66,
0x31,0x98,0xcc,0x66,0x36,0x19,0x80,0xcc,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6c,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0xff,0x7f,0xb8,0x1c,
0x0e,0x07,0x02,0x40,0x7c,0x70,0x3c,0x10,0x09,0x07,0x04,0x00,0xc0,0x60,0xe0,0x70,
0x38,0x1c,0x0e,0x04,0x83,0x81,0xc0,0x70,0x70,0x38,0x1c,0x07,0x02,0xc1,0xc0,0x90,
0x00,0x0c,0x00,0x04,0x86,0x43,0x69,0xb0,0x30,0x18,0x06,0x07,0x01,0x00,0x00,0x00,
0x00,0x0c,0x63,0x16,0x00,0xc0,0x61,0x62,0x01,0x80,0x06,0x63,0x31,0x80,0x00,0x00,
0x60,0x00,0xc0,0x06,0x43,0x16,0x19,0x8c,0x06,0x33,0x01,0x80,0xc0,0x63,0x0c,0x01,
0x8c,0x86,0x07,0x39,0xc5,0x86,0x63,0x61,0x99,0x8c,0x01,0x83,0x1b,0x0d,0xb6,0x63,
0x31,0x01,0x86,0x03,0x00,0x30,0x30,0x00,0x1c,0x3e,0x1b,0x03,0xc1,0xf0,0xf0,0x60,
0x3e,0x6e,0x3e,0x0f,0x8c,0x60,0xc5,0xb1,0xb8,0x38,0x6c,0x0f,0x8c,0xc7,0xc1,0x83,
0x19,0x8d,0x82,0x63,0x31,0x9f,0xc1,0x80,0xc0,0xc0,0x00,0xaa,0x86,0xc0,0x47,0xe3,
0xf1,0xf8,0xfd,0xbf,0x83,0x8f,0xc3,0xef,0xf6,0xf8,0xfc,0xff,0x3f,0x9f,0x1f,0x8f,
0xc7,0xe3,0xf1,0xfb,0x7c,0x7e,0x3f,0x8f,0x8f,0xc7,0xe3,0xf8,0xfd,0x3e,0x3f,0x6f,
0x00,0x0c,0x0d,0x43,0x03,0xe1,0x88,0x30,0xc0,0x00,0x27,0x41,0x80,0x00,0x00,0x01,
0x72,0x00,0x22,0x04,0x01,0x80,0xc0,0x03,0x18,0xf4,0x00,0x00,0x0c,0x18,0xc0,0x04,
0x82,0x43,0x20,0x18,0x2c,0x16,0x0b,0x05,0x82,0xc1,0x60,0xb0,0xc0,0x30,0x18,0x0c,
0x06,0x01,0x80,0xc0,0x60,0x30,0x63,0x38,0xb0,0xd8,0x6c,0x36,0x1b,0x0c,0x00,0xc7,
0x31,0x98,0xcc,0x66,0x33,0x11,0xf8,0xc8,0x7c,0x3e,0x1f,0x0f,0x87,0xc3,0xe1,0xd8,
0x3c,0x1e,0x0f,0x07,0x83,0xc7,0xc3,0xe1,0xf0,0xf8,0x06,0x37,0x07,0x03,0x81,0xc0,
0xe0,0x70,0x10,0x1d,0x31,0x98,0xcc,0x66,0x33,0x19,0xb0,0xc6,0x8f,0x7f,0x87,0x03,
0x81,0x80,0x90,0x30,0x6c,0x48,0x24,0x10,0x06,0x04,0x04,0x80,0x20,0x10,0x10,0x0e,
0x07,0x03,0x81,0xc0,0x60,0x88,0x38,0x0c,0x40,0x09,0x03,0x84,0x02,0x41,0x40,0x90,
0x00,0x0c,0x00,0x1f,0xe7,0x41,0xd1,0xa0,0x00,0x30,0x03,0x0a,0x81,0x00,0x00,0x00,
0x00,0x18,0x63,0x06,0x00,0xc0,0xc2,0x62,0x01,0xb0,0x0c,0x72,0x31,0x86,0x03,0x00,
0xc0,0x00,0x60,0x06,0x8f,0x16,0x19,0x0c,0x06,0x33,0x01,0x80,0xc0,0x63,0x0c,0x01,
0x8d,0x06,0x07,0x39,0x65,0x86,0x63,0x61,0x99,0x0e,0x01,0x83,0x19,0x89,0xb6,0x32,
0x33,0x03,0x06,0x01,0x80,0x30,0x78,0x00,0x00,0x03,0x1d,0x86,0x23,0x31,0x99,0xfc,
0x66,0x77,0x06,0x01,0x8c,0x40,0xc6,0xd9,0xdc,0x6c,0x76,0x19,0x8d,0xcc,0x27,0xf3,
0x19,0x8d,0x82,0x63,0x31,0x80,0xc0,0x80,0xc0,0x80,0x01,0x54,0x8c,0xc0,0x78,0xfc,
0x7e,0x7f,0x6f,0xcf,0x93,0xb7,0xdb,0xef,0xf9,0xfb,0xff,0xff,0xdf,0xef,0xef,0xf1,
0xf8,0xfc,0x7e,0x3f,0x9f,0x77,0xc7,0xf3,0xbf,0xf6,0xfc,0x7b,0xfd,0xbe,0xbf,0x6f,
0xff,0x0c,0x19,0x03,0x03,0x61,0x98,0x30,0x78,0x00,0x28,0x4f,0x83,0x30,0x00,0x01,
0x4a,0x00,0x1c,0x04,0x03,0x03,0x80,0x03,0x18,0xf4,0x00,0x00,0x0c,0x18,0xd9,0x84,
0x82,0x40,0xa0,0x18,0x2c,0x16,0x0b,0x05,0x82,0xc1,0x60,0xb0,0xc0,0x30,0x18,0x0c,
0x06,0x01,0x80,0xc0,0x60,0x30,0x63,0x2c,0xb0,0xd8,0x6c,0x36,0x1b,0x0c,0x64,0xcb,
0x31,0x98,0xcc,0x66,0x33,0x31,0x8c,0xd8,0x06,0x03,0x01,0x80,0xc0,0x60,0x30,0x6c,
0x62,0x33,0x19,0x8c,0xc6,0x60,0xc0,0x60,0x30,0x18,0x1e,0x3b,0x8d,0x86,0xc3,0x61,
0xb0,0xd8,0x10,0x36,0x31,0x98,0xcc,0x66,0x33,0x19,0xd8,0xc6,0x0f,0x7f,0x82,0x01,
0x02,0x40,0xd0,0x40,0x6c,0x70,0x24,0x1c,0x06,0x04,0x03,0x01,0xc0,0xe0,0x10,0x12,
0x09,0x04,0x82,0x40,0x90,0x50,0x10,0x12,0x70,0x09,0x04,0x04,0x01,0xc1,0x20,0x60,
0x00,0x0c,0x00,0x04,0x83,0xc0,0x20,0xcc,0x00,0x30,0x03,0x02,0x01,0x00,0x00,0x00,
0x00,0x18,0x63,0x06,0x01,0x83,0x84,0x63,0xf1,0xd8,0x18,0x3c,0x31,0x86,0x03,0x01,
0x83,0xf8,0x30,0x1c,0x9b,0x33,0x1e,0x0c,0x06,0x33,0xe1,0x80,0xc0,0x7f,0x0c,0x01,
0x8f,0x06,0x07,0x79,0x65,0x86,0x66,0x61,0x9e,0x07,0x81,0x83,0x19,0x89,0xb6,0x1c,
0x1a,0x03,0x06,0x01,0x80,0x30,0x48,0x00,0x00,0x03,0x18,0xcc,0x06,0x33,0x18,0x60,
0xc6,0x63,0x06,0x01,0x8c,0x80,0xc6,0xd9,0x8c,0xc6,0x63,0x31,0x8e,0x4c,0x01,0x83,
0x19,0x8d,0x92,0x32,0x31,0x81,0x87,0x00,0xc0,0x70,0xe4,0xaa,0x98,0xc0,0x7d,0xfe,
0xfd,0xbf,0x2f,0xbf,0x93,0x8f,0xdb,0xe3,0xf9,0xfb,0xff,0x1e,0x3f,0x1f,0xef,0xed,
0xf6,0xfb,0x7d,0xbf,0x6f,0xaf,0xef,0xed,0x8f,0xf6,0xfb,0xfb,0xfe,0x3e,0xdf,0x9f,
0x00,0x00,0x19,0x0f,0xc6,0x30,0xd0,0x00,0xcc,0x00,0x28,0x59,0x86,0x67,0xf0,0x01,
0x72,0x00,0x00,0x3f,0x86,0x00,0xc0,0x03,0x18,0xf4,0x00,0x00,0x0c,0x18,0xcc,0xc5,
0x32,0x83,0x4c,0x00,0x66,0x33,0x19,0x8c,0xc6,0x63,0x31,0xbc,0xc0,0x3e,0x1f,0x0f,
0x87,0xc1,0x80,0xc0,0x60,0x30,0xfb,0x2c,0xb0,0xd8,0x6c,0x36,0x1b,0x0c,0x38,0xcb,
0x31,0x98,0xcc,0x66,0x31,0xa1,0x8c,0xcc,0x06,0x03,0x01,0x80,0xc0,0x60,0x30,0x6c,
0xc0,0x63,0x31,0x98,0xcc,0x60,0xc0,0x60,0x30,0x18,0x37,0x31,0x98,0xcc,0x66,0x33,
0x19,0x8c,0x00,0x67,0x31,0x98,0xcc,0x66,0x33,0x19,0x8c,0xc6,0x1f,0x7f,0x82,0x01,
0x02,0x40,0xb0,0x40,0x6c,0x07,0x03,0x83,0x80,0xe0,0xe0,0x00,0x18,0x0e,0x10,0x10,
0x08,0x04,0x02,0x00,0xf0,0x20,0x10,0x1e,0x08,0x89,0x03,0x00,0xe0,0x38,0x1c,0x0e,
0x00,0x0c,0x00,0x04,0x81,0xe0,0x41,0x6c,0x00,0x30,0x03,0x00,0x0f,0xe0,0x03,0xf8,
0x00,0x30,0x63,0x06,0x03,0x00,0xc7,0xf0,0x39,0x8c,0x30,0x3e,0x1b,0x80,0x00,0x03,
0x00,0x00,0x18,0x30,0x9b,0x23,0x19,0x0c,0x06,0x33,0x01,0xf8,0xc6,0x63,0x0c,0x01,
0x8d,0x86,0x05,0xd9,0x35,0x86,0x7c,0x61,0x9b,0x01,0xc1,0x83,0x19,0x99,0xb4,0x1c,
0x0c,0x06,0x06,0x00,0xc0,0x30,0xcc,0x00,0x00,0x3f,0x18,0xcc,0x06,0x33,0xf8,0x60,
0xc6,0x63,0x06,0x01,0x8f,0x00,0xc6,0xd9,0x8c,0xc6,0x63,0x31,0x8c,0x0f,0x81,0x83,
0x18,0xd9,0xba,0x1c,0x1b,0x03,0x00,0x80,0xc0,0x81,0x75,0x54,0x98,0xc0,0x7d,0xfe,
0xfd,0xbf,0x4f,0xbf,0x93,0xf8,0xfc,0x7c,0x7f,0x1f,0x1f,0x6f,0xe7,0xf1,0xef,0xef,
0xf7,0xfb,0xfd,0xff,0x0f,0xdf,0xef,0xe1,0xf7,0x76,0xfc,0xff,0x1f,0xc7,0xe3,0xf1,
0xff,0x08,0x19,0x03,0x06,0x31,0xf8,0x00,0xc6,0x00,0x28,0x5b,0x8c,0xc0,0x11,0xf1,
0x4a,0x00,0x00,0x04,0x0c,0x00,0xc0,0x03,0x18,0x74,0x38,0x00,0x0c,0x18,0xc6,0x65,
0x52,0xb8,0x54,0x18,0x46,0x23,0x11,0x88,0xc4,0x62,0x31,0x30,0xc0,0x30,0x18,0x0c,
0x06,0x01,0x80,0xc0,0x60,0x30,0x63,0x26,0xb0,0xd8,0x6c,0x36,0x1b,0x0c,0x10,0xd3,
0x31,0x98,0xcc,0x66,0x30,0xc1,0x8c,0xc6,0x7e,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xfc,
0xc0,0x7f,0x3f,0x9f,0xcf,0xe0,0xc0,0x60,0x30,0x18,0x63,0x31,0x98,0xcc,0x66,0x33,
0x19,0x8c,0xfe,0x6b,0x31,0x98,0xcc,0x66,0x31,0xb1,0x8c,0x6c,0x0e,0x7f,0x82,0x01,
0x01,0x80,0x90,0x30,0xc6,0x08,0x01,0x02,0x00,0x40,0x80,0xe0,0x24,0x04,0x1c,0x10,
0x08,0x04,0x02,0x00,0x90,0x20,0x10,0x12,0x0d,0x86,0x00,0x81,0x00,0x40,0x20,0x10,
0x00,0x04,0x00,0x1f,0xe1,0x70,0xbb,0x28,0x00,0x30,0x03,0x00,0x01,0x00,0x00,0x00,
0x00,0x30,0x63,0x06,0x06,0x00,0x67,0xf0,0x19,0x8c,0x30,0x67,0x0d,0x80,0x00,0x01,
0x83,0xf8,0x30,0x30,0x9b,0x7f,0x19,0x8c,0x06,0x33,0x01,0x80,0xc6,0x63,0x0c,0x01,
0x8c,0xc6,0x05,0xd9,0x35,0x86,0x60,0x61,0x99,0x80,0xe1,0x83,0x18,0xd0,0xdc,0x26,
0x0c,0x0c,0x06,0x00,0xc0,0x30,0x84,0x00,0x00,0x63,0x18,0xcc,0x06,0x33,0x00,0x60,
0xc6,0x63,0x06,0x01,0x8d,0x80,0xc6,0xd9,0x8c,0xc6,0x63,0x31,0x8c,0x03,0xe1,0x83,
0x18,0xd9,0xba,0x1c,0x1b,0x06,0x01,0x80,0xc0,0xc1,0x38,0xaa,0x80,0xc0,0x7d,0xfe,
0xfe,0x7f,0x6f,0xcf,0x39,0xf7,0xfe,0xfd,0xff,0xbf,0x7f,0x0f,0xdb,0xfb,0xe3,0xef,
0xf7,0xfb,0xfd,0xff,0x6f,0xdf,0xef,0xed,0xf2,0x79,0xff,0x7e,0xff,0xbf,0xdf,0xef,
0x00,0x0c,0x19,0x03,0x03,0x60,0x60,0x30,0x66,0x00,0x28,0x4d,0xc6,0x60,0x10,0x00,
0x84,0x00,0x00,0x04,0x0f,0x87,0x80,0x03,0x18,0x14,0x38,0x00,0x3f,0x0f,0x8c,0xc2,
0x90,0x84,0xa4,0x18,0xfe,0x7f,0x3f,0x9f,0xcf,0xe7,0xf1,0xf0,0xc0,0x30,0x18,0x0c,
0x06,0x01,0x80,0xc0,0x60,0x30,0x63,0x26,0xb0,0xd8,0x6c,0x36,0x1b,0x0c,0x38,0xd3,
0x31,0x98,0xcc,0x66,0x30,0xc1,0x98,0xc6,0xc6,0x63,0x31,0x98,0xcc,0x66,0x33,0x60,
0xc0,0x60,0x30,0x18,0x0c,0x00,0xc0,0x60,0x30,0x18,0x63,0x31,0x98,0xcc,0x66,0x33,
0x19,0x8c,0x00,0x6b,0x31,0x98,0xcc,0x66,0x31,0xb1,0x8c,0x6c,0x1c,0x7f,0x81,0x20,
0x90,0x38,0x18,0x0b,0x83,0x06,0x01,0x03,0x80,0x40,0xe0,0x90,0x24,0x04,0x03,0x8e,
0x86,0xc3,0x61,0x90,0x24,0x12,0x0e,0x04,0x8a,0x81,0xc7,0x70,0xc0,0x30,0x18,0x0c,
0x00,0x00,0x00,0x04,0x81,0x31,0x6f,0x30,0x00,0x18,0x06,0x00,0x01,0x00,0x00,0x00,
0x00,0x60,0x63,0x06,0x0c,0x00,0x60,0x60,0x19,0x8c,0x60,0x63,0x01,0x80,0x00,0x00,
0xc0,0x00,0x60,0x00,0x4d,0xe1,0x99,0x8c,0x06,0x33,0x01,0x80,0xc6,0x63,0x0c,0x01,
0x8c,0xc6,0x04,0x99,0x1d,0x86,0x60,0x61,0x99,0x80,0x61,0x83,0x18,0xd0,0xdc,0x63,
0x0c,0x0c,0x06,0x00,0x60,0x30,0x84,0x00,0x00,0x63,0x18,0xcc,0x06,0x33,0x00,0x60,
0x6e,0x63,0x06,0x01,0x8c,0xc0,0xc6,0xd9,0x8c,0xc6,0x63,0x31,0x8c,0x00,0x61,0x83,
0x18,0xd0,0xcc,0x26,0x0e,0x0c,0x03,0x00,0xc0,0x60,0x01,0x54,0x98,0xc0,0x7e,0xdf,
0x6f,0xc7,0xe7,0xf4,0x7c,0xf9,0xfe,0xfc,0x7f,0xbf,0x1f,0x5f,0xdb,0xfb,0xfc,0x71,
0x79,0x3c,0x9e,0x6f,0xdb,0xed,0xf1,0xfb,0x75,0x7e,0x38,0x8f,0x3f,0xcf,0xe7,0xf3,
0xff,0x0c,0x0d,0x03,0x03,0xe1,0xf8,0x30,0x3c,0x00,0x27,0x40,0x03,0x30,0x00,0x00,
0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x18,0x14,0x00,0x00,0x00,0x00,0x19,0x82,
0xf8,0x98,0xbe,0x70,0xc3,0x61,0xb0,0xd8,0x6c,0x36,0x1b,0x30,0xc0,0x30,0x18,0x0c,
0x06,0x01,0x80,0xc0,0x60,0x30,0x63,0x23,0xb0,0xd8,0x6c,0x36,0x1b,0x0c,0x4c,0xe3,
0x31,0x98,0xcc,0x66,0x30,0xc1,0xf0,0xc6,0xc6,0x63,0x31,0x98,0xcc,0x66,0x33,0x60,
0xc0,0x60,0x30,0x18,0x0c,0x00,0xc0,0x60,0x30,0x18,0x63,0x31,0x98,0xcc,0x66,0x33,
0x19,0x8c,0x10,0x73,0x31,0x98,0xcc,0x66,0x30,0xe1,0x8c,0x38,0x1c,0x7f,0x80,0xa0,
0x50,0x10,0x24,0x0d,0xff,0x01,0x01,0x02,0x00,0x40,0x80,0xf0,0x24,0x04,0x02,0x01,
0x81,0x20,0x10,0x30,0x28,0x1a,0x09,0x06,0x8a,0x81,0x20,0x90,0x20,0x08,0x04,0x02,
0x00,0x0c,0x00,0x04,0x85,0x32,0x6f,0xb8,0x00,0x18,0x06,0x00,0x01,0x01,0xc0,0x00,
0x70,0x60,0x36,0x06,0x1f,0xcc,0xe0,0x63,0x30,0xd8,0x60,0x63,0x33,0x06,0x03,0x00,
0x60,0x00,0xc0,0x30,0x60,0x61,0x99,0x86,0x66,0x63,0x01,0x80,0x66,0x63,0x0c,0x03,
0x0c,0x66,0x04,0x19,0x1c,0xcc,0x60,0x33,0x18,0xcc,0x61,0x81,0xb0,0x60,0xcc,0x63,
0x0c,0x18,0x06,0x00,0x60,0x30,0x00,0x00,0x00,0x67,0x19,0x86,0x23,0x71,0x88,0x60,
0x36,0x63,0x06,0x01,0x8c,0x60,0xc6,0xd9,0x8c,0x6c,0x66,0x1b,0x8c,0x08,0x61,0x83,
0xb8,0x70,0xcc,0x63,0x0c,0x18,0x03,0x00,0xc0,0x60,0x00,0xaa,0x98,0xc0,0x7f,0x5f,
0xaf,0xef,0xdb,0xf2,0x00,0xfe,0xfe,0xfd,0xff,0xbf,0x7f,0x6f,0xdb,0xfb,0xfd,0xfe,
0x7e,0xdf,0xef,0xcf,0xd7,0xe5,0xf6,0xf9,0x75,0x7e,0xdf,0x6f,0xdf,0xf7,0xfb,0xfd,
0x00,0x0c,0x07,0xc6,0x04,0x10,0x60,0x30,0x06,0x00,0x10,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3f,0x80,0x00,0x00,0x03,0xb8,0x14,0x00,0x00,0x00,0x00,0x00,0x04,
0x11,0x21,0x04,0xc0,0xc3,0x61,0xb0,0xd8,0x6c,0x36,0x1b,0x30,0x66,0x30,0x18,0x0c,
0x06,0x01,0x80,0xc0,0x60,0x30,0x66,0x23,0x99,0x8c,0xc6,0x63,0x31,0x98,0x00,0x66,
0x1b,0x0d,0x86,0xc3,0x60,0xc1,0x80,0xc6,0xce,0x67,0x33,0x99,0xcc,0xe6,0x73,0x74,
0x62,0x31,0x18,0x8c,0x46,0x20,0xc0,0x60,0x30,0x18,0x36,0x31,0x8d,0x86,0xc3,0x61,
0xb0,0xd8,0x10,0x36,0x3b,0x9d,0xce,0xe7,0x70,0xc1,0x98,0x30,0x00,0x7f,0x80,0xc0,
0x60,0x10,0x24,0x0c,0x38,0x0e,0x01,0x02,0x00,0x40,0x80,0xa0,0x18,0x0e,0x03,0x00,
0x80,0x40,0x60,0x50,0x30,0x16,0x0e,0x05,0x88,0x81,0xc0,0x81,0xc0,0x70,0x38,0x1c,
0x00,0x0c,0x00,0x04,0x83,0xe0,0x39,0xcc,0x00,0x0c,0x0c,0x00,0x00,0x01,0xc0,0x00,
0x70,0xc0,0x1c,0x06,0x1f,0xc7,0xc0,0x61,0xe0,0x70,0x60,0x3e,0x1e,0x06,0x03,0x00,
0x00,0x00,0x00,0x30,0x1e,0x61,0x9f,0x03,0xc7,0xc3,0xf1,0x80,0x3e,0x63,0x3f,0x1e,
0x0c,0x67,0xe4,0x19,0x0c,0x78,0x60,0x1e,0x18,0xc7,0xc1,0x80,0xe0,0x60,0xcc,0x63,
0x0c,0x1f,0xc6,0x00,0x30,0x30,0x00,0x00,0x00,0x3b,0x9f,0x03,0xc1,0xb0,0xf0,0x60,
0x06,0x63,0x06,0x01,0x8c,0x70,0xc6,0xd9,0x8c,0x38,0x7c,0x0d,0x8c,0x07,0xc0,0xf1,
0xd8,0x60,0xcc,0x63,0x0c,0x1f,0xc3,0x00,0xc0,0x60,0x01,0x54,0x80,0xc0,0x7f,0x3f,
0x9f,0xef,0xdb,0xf3,0xc7,0xf1,0xfe,0xfd,0xff,0xbf,0x7f,0xff,0xe7,0xf1,0xfc,0xff,
0x7f,0xbf,0x9f,0xaf,0xcf,0xe9,0xf1,0xfa,0x77,0x7e,0x3f,0x7e,0x3f,0x8f,0xc7,0xe3,
0xff,0x0c,0x01,0x0f,0xe8,0x08,0x60,0x30,0xc6,0x00,0x0f,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xd8,0x14,0x00,0x00,0x00,0x00,0x00,0x04,
0x11,0x3d,0x04,0xc0,0xc3,0x61,0xb0,0xd8,0x6c,0x36,0x1b,0x3c,0x3c,0x3f,0x1f,0x8f,
0xc7,0xe7,0xe3,0xf1,0xf8,0xfc,0x7c,0x21,0x8f,0x07,0x83,0xc1,0xe0,0xf0,0x00,0xbc,
0x0e,0x07,0x03,0x81,0xc0,0xc1,0x80,0xcc,0x77,0x3b,0x9d,0xce,0xe7,0x73,0xb9,0x98,
0x3c,0x1e,0x0f,0x07,0x83,0xc0,0xc0,0x60,0x30,0x18,0x1c,0x31,0x87,0x03,0x81,0xc0,
0xe0,0x70,0x00,0x5c,0x1d,0x8e,0xc7,0x63,0xb0,0xc1,0xf0,0x30,0x00,0x7f,0x81,0x40,
0xa0,0x10,0x28,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x02,0x00,
0x80,0x80,0x10,0xf8,0x28,0x12,0x09,0x04,0x80,0x01,0x20,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x06,0x18,0x00,0x00,0x00,0x40,0x00,
0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x07,0xc0,0x31,0xf0,0x01,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xcc,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x60,0x01,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x18,0x00,0x01,0xe0,0xc3,0xc0,0x00,0x00,0xff,0xc0,0x7e,0xbf,
0x5f,0xef,0xd7,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0xff,
0x7f,0x7f,0xef,0x07,0xd7,0xed,0xf6,0xfb,0x7f,0xfe,0xdf,0x7f,0xff,0xff,0xff,0xff,
0x00,0x0c,0x01,0x00,0x00,0x00,0x00,0x30,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x14,0x00,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xc6,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x80,0x60,0x00,0x7f,0x81,0x20,
0x90,0x10,0x1c,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,
0x81,0xe0,0x60,0x10,0x24,0x12,0x0e,0x04,0x80,0x01,0xc0,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x78,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x01,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfe,0xdf,
0x6f,0xef,0xe3,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x7f,
0x7e,0x1f,0x9f,0xef,0xdb,0xed,0xf1,0xfb,0x7f,0xfe,0x3f,0x8f,0xff,0xff,0xff,0xff,
0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x80,0x60,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x32,0x35,0x36,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x31,0x35,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x33,0x20,
0x00,0x00,0x01,0x0c,0x00,0x09,0x09,0x00,0x01,0x0f,0x00,0x09,0x12,0x00,0x01,0x0f,
0x00,0x09,0x1b,0x00,0x01,0x0f,0x00,0x09,0x24,0x00,0x01,0x0f,0x00,0x09,0x2d,0x00,
0x01,0x0f,0x00,0x09,0x36,0x00,0x01,0x0f,0x00,0x09,0x3f,0x00,0x03,0x0d,0x00,0x09,
0x48,0x00,0x03,0x0d,0x00,0x09,0x51,0x00,0x03,0x0d,0x00,0x09,0x5a,0x00,0x03,0x0d,
0x00,0x09,0x63,0x00,0x03,0x0d,0x00,0x09,0x6c,0x00,0x03,0x0d,0x00,0x09,0x75,0x00,
0x03,0x0e,0x00,0x09,0x7e,0x00,0x03,0x0d,0x00,0x09,0x87,0x00,0x03,0x0d,0x00,0x09,
0x90,0x00,0x01,0x0f,0x00,0x09,0x99,0x00,0x01,0x0f,0x00,0x09,0xa2,0x00,0x01,0x0f,
0x00,0x09,0xab,0x00,0x01,0x0f,0x00,0x09,0xb4,0x00,0x01,0x0f,0x00,0x09,0xbd,0x00,
0x01,0x0f,0x00,0x09,0xc6,0x00,0x01,0x0f,0x00,0x09,0xcf,0x00,0x01,0x0f,0x00,0x09,
0xd8,0x00,0x01,0x0f,0x00,0x09,0xe1,0x00,0x03,0x0d,0x00,0x09,0xea,0x00,0x01,0x0f,
0x00,0x09,0xf3,0x00,0x01,0x0f,0x00,0x09,0xfc,0x00,0x03,0x0d,0x00,0x09,0x05,0x01,
0x03,0x0d,0x00,0x09,0x0e,0x01,0x03,0x0d,0x00,0x09,0x17,0x01,0x03,0x0d,0x00,0x09,
0x20,0x01,0x00,0x00,0x00,0x09,0x29,0x01,0x03,0x0d,0x00,0x09,0x32,0x01,0x02,0x05,
0x00,0x09,0x3b,0x01,0x03,0x0d,0x00,0x09,0x44,0x01,0x02,0x0e,0x00,0x09,0x4d,0x01,
0x03,0x0d,0x00,0x09,0x56,0x01,0x03,0x0d,0x00,0x09,0x5f,0x01,0x02,0x06,0x00,0x09,
0x68,0x01,0x02,0x0e,0x00,0x09,0x71,0x01,0x02,0x0e,0x00,0x09,0x7a,0x01,0x03,0x08,
0x00,0x09,0x83,0x01,0x05,0x0c,0x00,0x09,0x8c,0x01,0x0b,0x0f,0x00,0x09,0x95,0x01,
0x08,0x09,0x00,0x09,0x9e,0x01,0x0b,0x0d,0x00,0x09,0xa7,0x01,0x02,0x0e,0x00,0x09,
0xb0,0x01,0x03,0x0d,0x00,0x09,0xb9,0x01,0x03,0x0d,0x00,0x09,0xc2,0x01,0x03,0x0d,
0x00,0x09,0xcb,0x01,0x03,0x0d,0x00,0x09,0xd4,0x01,0x03,0x0d,0x00,0x09,0xdd,0x01,
0x03,0x0d,0x00,0x09,0xe6,0x01,0x03,0x0d,0x00,0x09,0xef,0x01,0x03,0x0d,0x00,0x09,
0xf8,0x01,0x03,0x0d,0x00,0x09,0x01,0x02,0x03,0x0d,0x00,0x09,0x0a,0x02,0x06,0x0d,
0x00,0x09,0x13,0x02,0x06,0x0f,0x00,0x09,0x1c,0x02,0x05,0x0c,0x00,0x09,0x25,0x02,
0x07,0x0a,0x00,0x09,0x2e,0x02,0x05,0x0c,0x00,0x09,0x37,0x02,0x03,0x0d,0x00,0x09,
0x40,0x02,0x03,0x0d,0x00,0x09,0x49,0x02,0x03,0x0d,0x00,0x09,0x52,0x02,0x03,0x0d,
0x00,0x09,0x5b,0x02,0x03,0x0d,0x00,0x09,0x64,0x02,0x03,0x0d,0x00,0x09,0x6d,0x02,
0x03,0x0d,0x00,0x09,0x76,0x02,0x03,0x0d,0x00,0x09,0x7f,0x02,0x03,0x0d,0x00,0x09,
0x88,0x02,0x03,0x0d,0x00,0x09,0x91,0x02,0x03,0x0d,0x00,0x09,0x9a,0x02,0x03,0x0d,
0x00,0x09,0xa3,0x02,0x03,0x0d,0x00,0x09,0xac,0x02,0x03,0x0d,0x00,0x09,0xb5,0x02,
0x03,0x0d,0x00,0x09,0xbe,0x02,0x03,0x0d,0x00,0x09,0xc7,0x02,0x03,0x0d,0x00,0x09,
0xd0,0x02,0x03,0x0d,0x00,0x09,0xd9,0x02,0x03,0x0f,0x00,0x09,0xe2,0x02,0x03,0x0d,
0x00,0x09,0xeb,0x02,0x03,0x0d,0x00,0x09,0xf4,0x02,0x03,0x0d,0x00,0x09,0xfd,0x02,
0x03,0x0d,0x00,0x09,0x06,0x03,0x03,0x0d,0x00,0x09,0x0f,0x03,0x03,0x0d,0x00,0x09,
0x18,0x03,0x03,0x0d,0x00,0x09,0x21,0x03,0x03,0x0d,0x00,0x09,0x2a,0x03,0x03,0x0d,
0x00,0x09,0x33,0x03,0x02,0x0e,0x00,0x09,0x3c,0x03,0x02,0x0e,0x00,0x09,0x45,0x03,
0x02,0x0e,0x00,0x09,0x4e,0x03,0x04,0x0b,0x00,0x09,0x57,0x03,0x0d,0x0e,0x00,0x09,
0x60,0x03,0x02,0x06,0x00,0x09,0x69,0x03,0x05,0x0d,0x00,0x09,0x72,0x03,0x02,0x0d,
0x00,0x09,0x7b,0x03,0x05,0x0d,0x00,0x09,0x84,0x03,0x02,0x0d,0x00,0x09,0x8d,0x03,
0x05,0x0d,0x00,0x09,0x96,0x03,0x02,0x0d,0x00,0x09,0x9f,0x03,0x05,0x0f,0x00,0x09,
0xa8,0x03,0x02,0x0d,0x00,0x09,0xb1,0x03,0x02,0x0d,0x00,0x09,0xba,0x03,0x02,0x0f,
0x00,0x09,0xc3,0x03,0x02,0x0d,0x00,0x09,0xcc,0x03,0x02,0x0d,0x00,0x09,0xd5,0x03,
0x05,0x0d,0x00,0x09,0xde,0x03,0x05,0x0d,0x00,0x09,0xe7,0x03,0x05,0x0d,0x00,0x09,
0xf0,0x03,0x05,0x0f,0x00,0x09,0xf9,0x03,0x05,0x0f,0x00,0x09,0x02,0x04,0x05,0x0d,
0x00,0x09,0x0b,0x04,0x05,0x0d,0x00,0x09,0x14,0x04,0x03,0x0d,0x00,0x09,0x1d,0x04,
0x05,0x0d,0x00,0x09,0x26,0x04,0x05,0x0d,0x00,0x09,0x2f,0x04,0x05,0x0d,0x00,0x09,
0x38,0x04,0x05,0x0d,0x00,0x09,0x41,0x04,0x05,0x0f,0x00,0x09,0x4a,0x04,0x05,0x0d,
0x00,0x09,0x53,0x04,0x02,0x0e,0x00,0x09,0x5c,0x04,0x02,0x0e,0x00,0x09,0x65,0x04,
0x02,0x0e,0x00,0x09,0x6e,0x04,0x07,0x0a,0x00,0x09,0x77,0x04,0x01,0x0d,0x00,0x09,
0x80,0x04,0x00,0x0e,0x00,0x09,0x89,0x04,0x00,0x0f,0x00,0x09,0x92,0x04,0x00,0x0f,
0x00,0x09,0x9b,0x04,0x00,0x0f,0x00,0x09,0xa4,0x04,0x00,0x0f,0x00,0x09,0xad,0x04,
0x00,0x0f,0x00,0x09,0xb6,0x04,0x00,0x0f,0x00,0x09,0xbf,0x04,0x00,0x0f,0x00,0x09,
0xc8,0x04,0x00,0x0f,0x00,0x09,0xd1,0x04,0x00,0x0f,0x00,0x09,0xda,0x04,0x00,0x0f,
0x00,0x09,0xe3,0x04,0x00,0x0f,0x00,0x09,0xec,0x04,0x00,0x0f,0x00,0x09,0xf5,0x04,
0x00,0x0f,0x00,0x09,0xfe,0x04,0x00,0x0f,0x00,0x09,0x07,0x05,0x00,0x0f,0x00,0x09,
0x10,0x05,0x00,0x0f,0x00,0x09,0x19,0x05,0x00,0x0f,0x00,0x09,0x22,0x05,0x00,0x0f,
0x00,0x09,0x2b,0x05,0x00,0x0f,0x00,0x09,0x34,0x05,0x00,0x0f,0x00,0x09,0x3d,0x05,
0x00,0x0f,0x00,0x09,0x46,0x05,0x00,0x0f,0x00,0x09,0x4f,0x05,0x00,0x0f,0x00,0x09,
0x58,0x05,0x00,0x0f,0x00,0x09,0x61,0x05,0x00,0x0f,0x00,0x09,0x6a,0x05,0x00,0x0f,
0x00,0x09,0x73,0x05,0x00,0x0f,0x00,0x09,0x7c,0x05,0x00,0x0f,0x00,0x09,0x85,0x05,
0x00,0x0f,0x00,0x09,0x8e,0x05,0x00,0x0f,0x00,0x09,0x97,0x05,0x00,0x0f,0x00,0x09,
0xa0,0x05,0x00,0x0d,0x00,0x09,0xa9,0x05,0x05,0x0f,0x00,0x09,0xb2,0x05,0x02,0x0e,
0x00,0x09,0xbb,0x05,0x03,0x0d,0x00,0x09,0xc4,0x05,0x03,0x0d,0x00,0x09,0xcd,0x05,
0x03,0x0d,0x00,0x09,0xd6,0x05,0x02,0x0e,0x00,0x09,0xdf,0x05,0x03,0x0e,0x00,0x09,
0xe8,0x05,0x02,0x04,0x00,0x09,0xf1,0x05,0x03,0x0d,0x00,0x09,0xfa,0x05,0x03,0x0a,
0x00,0x09,0x03,0x06,0x06,0x0b,0x00,0x09,0x0c,0x06,0x07,0x0a,0x00,0x09,0x15,0x06,
0x08,0x09,0x00,0x09,0x1e,0x06,0x03,0x0b,0x00,0x09,0x27,0x06,0x02,0x03,0x00,0x09,
0x30,0x06,0x03,0x07,0x00,0x09,0x39,0x06,0x05,0x0c,0x00,0x09,0x42,0x06,0x03,0x0a,
0x00,0x09,0x4b,0x06,0x03,0x0a,0x00,0x09,0x54,0x06,0x02,0x04,0x00,0x09,0x5d,0x06,
0x05,0x0f,0x00,0x09,0x66,0x06,0x03,0x0e,0x00,0x09,0x6f,0x06,0x08,0x0a,0x00,0x09,
0x78,0x06,0x0d,0x0f,0x00,0x09,0x81,0x06,0x03,0x0a,0x00,0x09,0x8a,0x06,0x03,0x0a,
0x00,0x09,0x93,0x06,0x06,0x0b,0x00,0x09,0x9c,0x06,0x03,0x0d,0x00,0x09,0xa5,0x06,
0x03,0x0d,0x00,0x09,0xae,0x06,0x03,0x0d,0x00,0x09,0xb7,0x06,0x05,0x0f,0x00,0x09,
0xc0,0x06,0x00,0x0d,0x00,0x09,0xc9,0x06,0x00,0x0d,0x00,0x09,0xd2,0x06,0x00,0x0d,
0x00,0x09,0xdb,0x06,0x00,0x0d,0x00,0x09,0xe4,0x06,0x00,0x0d,0x00,0x09,0xed,0x06,
0x01,0x0d,0x00,0x09,0xf6,0x06,0x03,0x0d,0x00,0x09,0xff,0x06,0x03,0x0f,0x00,0x09,
0x08,0x07,0x00,0x0d,0x00,0x09,0x11,0x07,0x00,0x0d,0x00,0x09,0x1a,0x07,0x00,0x0d,
0x00,0x09,0x23,0x07,0x00,0x0d,0x00,0x09,0x2c,0x07,0x00,0x0d,0x00,0x09,0x35,0x07,
0x00,0x0d,0x00,0x09,0x3e,0x07,0x00,0x0d,0x00,0x09,0x47,0x07,0x00,0x0d,0x00,0x09,
0x50,0x07,0x03,0x0d,0x00,0x09,0x59,0x07,0x00,0x0d,0x00,0x09,0x62,0x07,0x00,0x0d,
0x00,0x09,0x6b,0x07,0x00,0x0d,0x00,0x09,0x74,0x07,0x00,0x0d,0x00,0x09,0x7d,0x07,
0x00,0x0d,0x00,0x09,0x86,0x07,0x00,0x0d,0x00,0x09,0x8f,0x07,0x06,0x0b,0x00,0x09,
0x98,0x07,0x03,0x0d,0x00,0x09,0xa1,0x07,0x00,0x0d,0x00,0x09,0xaa,0x07,0x00,0x0d,
0x00,0x09,0xb3,0x07,0x00,0x0d,0x00,0x09,0xbc,0x07,0x00,0x0d,0x00,0x09,0xc5,0x07,
0x00,0x0d,0x00,0x09,0xce,0x07,0x03,0x0d,0x00,0x09,0xd7,0x07,0x02,0x0d,0x00,0x09,
0xe0,0x07,0x02,0x0d,0x00,0x09,0xe9,0x07,0x02,0x0d,0x00,0x09,0xf2,0x07,0x02,0x0d,
0x00,0x09,0xfb,0x07,0x02,0x0d,0x00,0x09,0x04,0x08,0x02,0x0d,0x00,0x09,0x0d,0x08,
0x02,0x0d,0x00,0x09,0x16,0x08,0x05,0x0d,0x00,0x09,0x1f,0x08,0x05,0x0f,0x00,0x09,
0x28,0x08,0x02,0x0d,0x00,0x09,0x31,0x08,0x02,0x0d,0x00,0x09,0x3a,0x08,0x02,0x0d,
0x00,0x09,0x43,0x08,0x02,0x0d,0x00,0x09,0x4c,0x08,0x02,0x0d,0x00,0x09,0x55,0x08,
0x02,0x0d,0x00,0x09,0x5e,0x08,0x02,0x0d,0x00,0x09,0x67,0x08,0x02,0x0d,0x00,0x09,
0x70,0x08,0x02,0x0d,0x00,0x09,0x79,0x08,0x02,0x0d,0x00,0x09,0x82,0x08,0x02,0x0d,
0x00,0x09,0x8b,0x08,0x02,0x0d,0x00,0x09,0x94,0x08,0x02,0x0d,0x00,0x09,0x9d,0x08,
0x02,0x0d,0x00,0x09,0xa6,0x08,0x02,0x0d,0x00,0x09,0xaf,0x08,0x05,0x0c,0x00,0x09,
0xb8,0x08,0x05,0x0d,0x00,0x09,0xc1,0x08,0x02,0x0d,0x00,0x09,0xca,0x08,0x02,0x0d,
0x00,0x09,0xd3,0x08,0x02,0x0d,0x00,0x09,0xdc,0x08,0x02,0x0d,0x00,0x09,0xe5,0x08,
0x02,0x0f,0x00,0x09,0xee,0x08,0x03,0x0f,0x00,0x09,0xf7,0x08,0x02,0x0f,0x00,0x09,
0x00,0x09,0x00,0x00,0x00,0x00,
};
int sizeofdefont = sizeof defontdata;
void
_unpackinfo(Fontchar *fc, uchar *p, int n)
{
int j;
for(j=0; j<=n; j++){
fc->x = p[0]|(p[1]<<8);
fc->top = p[2];
fc->bottom = p[3];
fc->left = p[4];
fc->width = p[5];
fc++;
p += 6;
}
}

303
src/libdraw/defont.h Normal file
View file

@ -0,0 +1,303 @@
/*
* lucm/latin1.9
*/
char _defontfile[] = "15 13\n0 255\t*default*\n";
static uchar
defontdata[] =
{
// xd -b ../../font/lucm/latin1.9 | awk '{$1=""; for(i=2; i<=NF;i++) $i="0x"$i","; print}'
0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x6b, 0x31, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x30, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x32, 0x33, 0x30, 0x34, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x31, 0x35, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x31, 0x35, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x32, 0x39, 0x37, 0x36, 0x20, 0x80,
0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x7c, 0x00, 0x10, 0x00, 0x80, 0xff, 0x7c, 0x00, 0x80,
0xff, 0x7c, 0x45, 0x87, 0x00, 0x00, 0x30, 0x06, 0x06, 0x03, 0x42, 0x40, 0x00, 0x08, 0x90, 0x18,
0x03, 0x03, 0x02, 0x43, 0x00, 0x60, 0x60, 0x48, 0x00, 0x0d, 0x0c, 0x01, 0x81, 0x80, 0xd0, 0x90,
0x00, 0x12, 0x84, 0x01, 0x81, 0x81, 0x40, 0x60, 0x7c, 0x43, 0x04, 0x00, 0x87, 0x18, 0x7f, 0x9c,
0x1c, 0x0e, 0x07, 0x01, 0x80, 0x1c, 0x11, 0x8c, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x04, 0x81, 0xc1,
0xc0, 0x70, 0x00, 0x1c, 0x1c, 0x7c, 0x40, 0x7c, 0x00, 0x7c, 0x00, 0x1c, 0x00, 0x88, 0xaa, 0x80,
0xc0, 0x63, 0xe3, 0xf1, 0xf8, 0xfe, 0x7f, 0x0d, 0x09, 0x80, 0xfc, 0x00, 0x07, 0x8c, 0x1f, 0x8f,
0xc7, 0xe3, 0xf1, 0xfb, 0x7e, 0x3e, 0x3f, 0x8f, 0xff, 0xe3, 0xe3, 0x7d, 0x1f, 0x10, 0x00, 0x98,
0x0c, 0x18, 0x09, 0x05, 0x82, 0x40, 0xc0, 0x00, 0x00, 0x06, 0x0c, 0x04, 0x82, 0x40, 0xc1, 0x80,
0x90, 0x48, 0x00, 0x16, 0x03, 0x06, 0x02, 0x41, 0x60, 0x01, 0x1f, 0x80, 0x06, 0x00, 0x07, 0x80,
0x41, 0x20, 0xf1, 0x64, 0x00, 0x86, 0x3e, 0x7f, 0xa0, 0x10, 0x08, 0x04, 0x02, 0x05, 0x69, 0x10,
0x00, 0x8c, 0x90, 0x48, 0x24, 0x12, 0x09, 0x06, 0x82, 0x01, 0x00, 0x90, 0x00, 0x20, 0x10, 0x10,
0x13, 0x82, 0x04, 0x80, 0x00, 0x00, 0x21, 0x82, 0x38, 0x06, 0x18, 0x0c, 0x0e, 0x80, 0x06, 0x7c,
0x57, 0x2c, 0x00, 0x83, 0x07, 0xc6, 0x01, 0xf0, 0x00, 0xb3, 0x80, 0x00, 0x00, 0x3f, 0x88, 0x30,
0x00, 0x3c, 0x00, 0x60, 0x06, 0x01, 0x8c, 0x07, 0x00, 0xbb, 0x28, 0x00, 0x8d, 0x01, 0xe0, 0xc3,
0xc0, 0x01, 0x54, 0x9c, 0xc0, 0x5f, 0xef, 0xf7, 0xfb, 0xfd, 0xbf, 0x0d, 0x1f, 0x80, 0xfb, 0x01,
0x1f, 0x8c, 0x6f, 0xb7, 0xdb, 0xed, 0xf6, 0xf9, 0x7d, 0xfe, 0xff, 0x6f, 0xff, 0xdf, 0xef, 0x11,
0x1f, 0x80, 0x01, 0x0a, 0x22, 0x81, 0x00, 0x14, 0x10, 0x3a, 0x80, 0x38, 0x08, 0x05, 0x3e, 0x11,
0x81, 0x01, 0x20, 0x64, 0x94, 0x80, 0x78, 0x02, 0x63, 0x82, 0x06, 0x82, 0x80, 0x00, 0x87, 0x06,
0x63, 0x8c, 0x41, 0x80, 0x30, 0x30, 0x24, 0x76, 0x0d, 0x0c, 0x00, 0xc0, 0xc0, 0xd0, 0x50, 0x12,
0x63, 0x82, 0x30, 0x00, 0x28, 0x82, 0x0f, 0x7f, 0xbc, 0x02, 0x3f, 0x8b, 0x03, 0xc0, 0x10, 0x70,
0x24, 0x10, 0x09, 0x07, 0x03, 0x80, 0xe0, 0x70, 0x09, 0x1f, 0x98, 0x05, 0x81, 0x81, 0xc0, 0x80,
0x70, 0x18, 0x1c, 0x07, 0x01, 0xc1, 0xc0, 0x90, 0x00, 0x0c, 0x04, 0x84, 0x83, 0xe1, 0xc0, 0xe0,
0x38, 0x0c, 0x0c, 0x02, 0x0d, 0x1f, 0x8a, 0x1c, 0x06, 0x0f, 0x87, 0xc0, 0x63, 0xf8, 0x78, 0xfe,
0x3e, 0x0e, 0x0c, 0x6b, 0xa0, 0x7c, 0x1c, 0x0c, 0x1f, 0x03, 0xc7, 0xc3, 0xf1, 0xf8, 0x3c, 0x63,
0x3f, 0x0f, 0x8c, 0x66, 0x06, 0x19, 0x84, 0x78, 0x7e, 0x1e, 0x1f, 0x07, 0xcf, 0xf3, 0x1b, 0x0d,
0x86, 0x63, 0x61, 0x9f, 0xc6, 0x06, 0x00, 0xcd, 0x81, 0x00, 0x10, 0x0d, 0x1f, 0x80, 0x60, 0x09,
0x1f, 0x80, 0x00, 0x15, 0x1f, 0x16, 0xbb, 0x88, 0x03, 0x00, 0xc0, 0x60, 0x00, 0xaa, 0xb6, 0xc0,
0x43, 0x02, 0x3f, 0x88, 0xfc, 0x3f, 0xef, 0x8f, 0xdb, 0xef, 0xf6, 0xf8, 0xfb, 0x02, 0x3d, 0x09,
0x1f, 0x8c, 0xfa, 0x7e, 0x7e, 0x3f, 0x7f, 0x8f, 0xe7, 0xe3, 0xf8, 0xfe, 0x3e, 0x3f, 0x6f, 0x00,
0x33, 0x88, 0x01, 0xc8, 0x0b, 0x0c, 0x30, 0x7c, 0x14, 0x0f, 0x0f, 0x08, 0xe8, 0x9c, 0x00, 0x1c,
0x00, 0x0f, 0x07, 0x81, 0x80, 0x00, 0x7c, 0x00, 0x00, 0x1c, 0x0f, 0x80, 0x04, 0x42, 0x23, 0x90,
0x00, 0x18, 0x0c, 0x06, 0x03, 0x01, 0x80, 0xc0, 0x3c, 0x3c, 0x3f, 0x02, 0x7f, 0x80, 0xe7, 0x04,
0x52, 0x91, 0x7c, 0x30, 0x8f, 0x07, 0x83, 0xc1, 0xe0, 0xf0, 0x00, 0x3d, 0x31, 0x98, 0xcc, 0x66,
0x36, 0x19, 0x80, 0xcc, 0x02, 0x63, 0x82, 0x0b, 0x02, 0x81, 0x01, 0x43, 0x0a, 0x63, 0x8a, 0x60,
0xc0, 0x48, 0x24, 0x18, 0x16, 0x03, 0x03, 0x01, 0x21, 0x60, 0x01, 0x1f, 0x06, 0x63, 0x02, 0x76,
0x80, 0x28, 0x82, 0x87, 0x7f, 0x84, 0x0a, 0x3f, 0x81, 0x38, 0x48, 0x01, 0x1f, 0x83, 0x04, 0x04,
0x81, 0x00, 0x02, 0x89, 0x01, 0x1f, 0x8b, 0x04, 0x80, 0x41, 0x00, 0x80, 0x40, 0x04, 0x10, 0x04,
0x02, 0x01, 0x20, 0x09, 0x1f, 0x87, 0x86, 0x53, 0x65, 0xb0, 0x08, 0x18, 0x06, 0x0a, 0x08, 0xcc,
0x8b, 0x0c, 0x36, 0x0e, 0x19, 0xcc, 0xe0, 0xe3, 0xf8, 0xcc, 0xfe, 0x63, 0x1b, 0x0c, 0xdc, 0x98,
0xc6, 0x62, 0x0c, 0x19, 0x86, 0x66, 0x63, 0x01, 0x80, 0x66, 0x63, 0x0c, 0x01, 0x8c, 0xc6, 0x06,
0x19, 0xc4, 0xcc, 0x63, 0x33, 0x19, 0x8c, 0x61, 0x83, 0x09, 0x1f, 0x85, 0x80, 0xc6, 0x03, 0x00,
0x30, 0x30, 0x00, 0xc5, 0x15, 0x1f, 0x06, 0x4b, 0x45, 0x1f, 0x84, 0x01, 0x54, 0x86, 0xc0, 0x7b,
0x0a, 0x3f, 0x81, 0xc7, 0xb7, 0x01, 0x1f, 0x84, 0xfb, 0xfb, 0x7e, 0xff, 0x7f, 0x09, 0x1f, 0x8b,
0xfb, 0x7f, 0xbe, 0xff, 0x7f, 0xbf, 0xfb, 0xef, 0xfb, 0xfd, 0xfe, 0xdf, 0x01, 0x1f, 0x88, 0x07,
0x83, 0x24, 0x13, 0x0c, 0x30, 0xc6, 0x00, 0x10, 0x01, 0x14, 0x84, 0x00, 0x00, 0x84, 0x00, 0x22,
0x00, 0x45, 0x00, 0x4f, 0x87, 0xf4, 0x00, 0x00, 0x2c, 0x18, 0xc0, 0x0c, 0x46, 0x00, 0xb2, 0x11,
0x1f, 0x82, 0x70, 0x66, 0x30, 0x00, 0x09, 0x00, 0x08, 0x8b, 0x60, 0x30, 0x66, 0x38, 0x99, 0x8c,
0xc6, 0x63, 0x31, 0x98, 0x00, 0x66, 0x15, 0x1f, 0x0c, 0x77, 0x26, 0xc7, 0x80, 0x6c, 0x32, 0x7f,
0x81, 0x80, 0x00, 0x82, 0xff, 0x7f, 0xb8, 0x02, 0x3f, 0x84, 0x02, 0x40, 0x7c, 0x70, 0x3c, 0x02,
0x3f, 0x80, 0x04, 0x00, 0xa3, 0x89, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x04, 0x83, 0x81, 0xc0, 0x70,
0x00, 0x08, 0x81, 0x07, 0x02, 0x0a, 0x3f, 0x89, 0x00, 0x04, 0x86, 0x43, 0x69, 0xb0, 0x30, 0x18,
0x06, 0x07, 0x0a, 0xd9, 0x8b, 0x0c, 0x63, 0x16, 0x00, 0xc0, 0x61, 0x62, 0x01, 0x80, 0x06, 0x63,
0x31, 0x00, 0xa0, 0x89, 0x60, 0x00, 0xc0, 0x06, 0x43, 0x16, 0x19, 0x8c, 0x06, 0x33, 0x00, 0x88,
0x05, 0x1f, 0x83, 0x86, 0x07, 0x39, 0xc5, 0x01, 0x16, 0x82, 0x99, 0x8c, 0x01, 0x01, 0x1f, 0x84,
0xb6, 0x63, 0x31, 0x01, 0x86, 0x0d, 0x1f, 0xa5, 0x3e, 0x1b, 0x03, 0xc1, 0xf0, 0xf0, 0x60, 0x3e,
0x6e, 0x3e, 0x0f, 0x8c, 0x60, 0xc5, 0xb1, 0xb8, 0x38, 0x6c, 0x0f, 0x8c, 0xc7, 0xc1, 0x83, 0x19,
0x8d, 0x82, 0x63, 0x31, 0x9f, 0xc1, 0x80, 0xc0, 0xc0, 0x00, 0xaa, 0x86, 0xc0, 0x47, 0x01, 0xec,
0x84, 0xfd, 0xbf, 0x83, 0x8f, 0xc3, 0x02, 0x3f, 0x83, 0xfc, 0xff, 0x3f, 0x9f, 0x01, 0xff, 0x86,
0xe3, 0xf1, 0xfb, 0x7c, 0x7e, 0x3f, 0x8f, 0x00, 0x08, 0x81, 0xf8, 0xfd, 0x06, 0x3f, 0x8a, 0x0c,
0x0d, 0x43, 0x03, 0xe1, 0x88, 0x30, 0xc0, 0x00, 0x27, 0x41, 0x00, 0x7e, 0x84, 0x01, 0x72, 0x00,
0x22, 0x04, 0x00, 0x79, 0x81, 0x03, 0x18, 0x01, 0x1f, 0x90, 0x0c, 0x18, 0xc0, 0x04, 0x82, 0x43,
0x20, 0x18, 0x2c, 0x16, 0x0b, 0x05, 0x82, 0xc1, 0x60, 0xb0, 0xc0, 0x19, 0x1f, 0x89, 0x63, 0x38,
0xb0, 0xd8, 0x6c, 0x36, 0x1b, 0x0c, 0x00, 0xc7, 0x05, 0x1f, 0x9f, 0x33, 0x11, 0xf8, 0xc8, 0x7c,
0x3e, 0x1f, 0x0f, 0x87, 0xc3, 0xe1, 0xd8, 0x3c, 0x1e, 0x0f, 0x07, 0x83, 0xc7, 0xc3, 0xe1, 0xf0,
0xf8, 0x06, 0x37, 0x07, 0x03, 0x81, 0xc0, 0xe0, 0x70, 0x10, 0x1d, 0x08, 0x23, 0x82, 0x19, 0xb0,
0xc6, 0x88, 0x8f, 0x7f, 0x87, 0x03, 0x81, 0x80, 0x90, 0x30, 0x6c, 0x02, 0x3f, 0x86, 0x06, 0x04,
0x04, 0x80, 0x20, 0x10, 0x10, 0x03, 0x6e, 0x89, 0x81, 0xc0, 0x60, 0x88, 0x38, 0x0c, 0x40, 0x09,
0x03, 0x84, 0x02, 0x65, 0x05, 0x1f, 0x89, 0x1f, 0xe7, 0x41, 0xd1, 0xa0, 0x00, 0x30, 0x03, 0x0a,
0x81, 0x05, 0x1f, 0x8b, 0x18, 0x63, 0x06, 0x00, 0xc0, 0xc2, 0x62, 0x01, 0xb0, 0x0c, 0x72, 0x31,
0x00, 0xfa, 0x80, 0xc0, 0x03, 0x30, 0x83, 0x8f, 0x16, 0x19, 0x0c, 0x15, 0x1f, 0x84, 0x8d, 0x06,
0x07, 0x39, 0x65, 0x05, 0x1f, 0x88, 0x0e, 0x01, 0x83, 0x19, 0x89, 0xb6, 0x32, 0x33, 0x03, 0x00,
0xa1, 0x81, 0x30, 0x78, 0x02, 0x22, 0x87, 0x1d, 0x86, 0x23, 0x31, 0x99, 0xfc, 0x66, 0x77, 0x03,
0x5f, 0x8a, 0x40, 0xc6, 0xd9, 0xdc, 0x6c, 0x76, 0x19, 0x8d, 0xcc, 0x27, 0xf3, 0x09, 0x1f, 0x81,
0x80, 0xc0, 0x00, 0x01, 0x8a, 0x01, 0x54, 0x8c, 0xc0, 0x78, 0xfc, 0x7e, 0x7f, 0x6f, 0xcf, 0x93,
0x02, 0x3f, 0x86, 0xf9, 0xfb, 0xff, 0xff, 0xdf, 0xef, 0xef, 0x03, 0x1b, 0x8c, 0x7e, 0x3f, 0x9f,
0x77, 0xc7, 0xf3, 0xbf, 0xf6, 0xfc, 0x7b, 0xfd, 0xbe, 0xbf, 0x01, 0x1f, 0x84, 0x19, 0x03, 0x03,
0x61, 0x98, 0x00, 0x51, 0x8c, 0x28, 0x4f, 0x83, 0x30, 0x00, 0x01, 0x4a, 0x00, 0x1c, 0x04, 0x03,
0x03, 0x80, 0x11, 0x1f, 0x84, 0xd9, 0x84, 0x82, 0x40, 0xa0, 0x45, 0x1f, 0x80, 0x2c, 0x0d, 0x1f,
0x81, 0x64, 0xcb, 0x08, 0xfb, 0x82, 0x31, 0x8c, 0xd8, 0x0a, 0x61, 0x83, 0x60, 0x30, 0x6c, 0x62,
0x02, 0xe9, 0x81, 0xc6, 0x60, 0x00, 0x09, 0x8a, 0x18, 0x1e, 0x3b, 0x8d, 0x86, 0xc3, 0x61, 0xb0,
0xd8, 0x10, 0x36, 0x0d, 0x1f, 0x81, 0xd8, 0xc6, 0x92, 0x0f, 0x7f, 0x82, 0x01, 0x02, 0x40, 0xd0,
0x40, 0x6c, 0x70, 0x24, 0x1c, 0x06, 0x04, 0x03, 0x01, 0xc0, 0xe0, 0x10, 0x03, 0x5d, 0x86, 0x82,
0x40, 0x90, 0x50, 0x10, 0x12, 0x70, 0x03, 0x70, 0x83, 0x01, 0xc1, 0x20, 0x60, 0x06, 0x3f, 0x83,
0x83, 0xc0, 0x20, 0xcc, 0x01, 0x1f, 0x80, 0x02, 0x0a, 0x3f, 0x01, 0x1f, 0x87, 0x01, 0x83, 0x84,
0x63, 0xf1, 0xd8, 0x18, 0x3c, 0x01, 0x1f, 0x87, 0x01, 0x83, 0xf8, 0x30, 0x1c, 0x9b, 0x33, 0x1e,
0x01, 0x1f, 0x90, 0xe1, 0x80, 0xc0, 0x7f, 0x0c, 0x01, 0x8f, 0x06, 0x07, 0x79, 0x65, 0x86, 0x66,
0x61, 0x9e, 0x07, 0x81, 0x05, 0x1f, 0x81, 0x1c, 0x1a, 0x09, 0x1f, 0x80, 0x48, 0x01, 0x1f, 0x86,
0x18, 0xcc, 0x06, 0x33, 0x18, 0x60, 0xc6, 0x00, 0x3e, 0x83, 0x8c, 0x80, 0xc6, 0xd9, 0x06, 0xee,
0x81, 0x8e, 0x4c, 0x01, 0x43, 0x96, 0x8d, 0x92, 0x32, 0x31, 0x81, 0x87, 0x00, 0xc0, 0x70, 0xe4,
0xaa, 0x98, 0xc0, 0x7d, 0xfe, 0xfd, 0xbf, 0x2f, 0xbf, 0x93, 0x8f, 0xdb, 0xe3, 0x01, 0x1f, 0x83,
0x1e, 0x3f, 0x1f, 0xef, 0x03, 0x5d, 0x86, 0x7d, 0xbf, 0x6f, 0xaf, 0xef, 0xed, 0x8f, 0x03, 0x70,
0x92, 0xfe, 0x3e, 0xdf, 0x9f, 0x00, 0x00, 0x19, 0x0f, 0xc6, 0x30, 0xd0, 0x00, 0xcc, 0x00, 0x28,
0x59, 0x86, 0x67, 0xf0, 0x02, 0x3f, 0x83, 0x00, 0x3f, 0x86, 0x00, 0x16, 0x3f, 0x85, 0xcc, 0xc5,
0x32, 0x83, 0x4c, 0x00, 0x00, 0xdc, 0x04, 0x5e, 0x81, 0xbc, 0xc0, 0x06, 0x23, 0x02, 0x9a, 0x82,
0x60, 0x30, 0xfb, 0x11, 0x1f, 0x80, 0x38, 0x09, 0x1f, 0x83, 0x31, 0xa1, 0x8c, 0xcc, 0x15, 0x1f,
0x80, 0xc0, 0x03, 0x75, 0x80, 0xcc, 0x09, 0x1f, 0x80, 0x37, 0x0d, 0x16, 0x82, 0x8c, 0x00, 0x67,
0x10, 0x08, 0x80, 0xc6, 0x80, 0x1f, 0x09, 0x1f, 0x9a, 0xb0, 0x40, 0x6c, 0x07, 0x03, 0x83, 0x80,
0xe0, 0xe0, 0x00, 0x18, 0x0e, 0x10, 0x10, 0x08, 0x04, 0x02, 0x00, 0xf0, 0x20, 0x10, 0x1e, 0x08,
0x89, 0x03, 0x00, 0xe0, 0x03, 0x6c, 0x05, 0x1f, 0x83, 0x81, 0xe0, 0x41, 0x6c, 0x01, 0x1f, 0x94,
0x00, 0x0f, 0xe0, 0x03, 0xf8, 0x00, 0x30, 0x63, 0x06, 0x03, 0x00, 0xc7, 0xf0, 0x39, 0x8c, 0x30,
0x3e, 0x1b, 0x80, 0x00, 0x03, 0x01, 0x30, 0x82, 0x30, 0x9b, 0x23, 0x0a, 0x3f, 0x81, 0xf8, 0xc6,
0x06, 0x3f, 0x88, 0x86, 0x05, 0xd9, 0x35, 0x86, 0x7c, 0x61, 0x9b, 0x01, 0x03, 0x3b, 0x84, 0x99,
0xb4, 0x1c, 0x0c, 0x06, 0x02, 0x6e, 0x80, 0x30, 0x03, 0xee, 0x80, 0x3f, 0x05, 0x1f, 0x80, 0xf8,
0x09, 0x1f, 0x81, 0x8f, 0x00, 0x0d, 0x1f, 0x8f, 0x8c, 0x0f, 0x81, 0x83, 0x18, 0xd9, 0xba, 0x1c,
0x1b, 0x03, 0x00, 0x80, 0xc0, 0x81, 0x75, 0x54, 0x0d, 0x1f, 0x9a, 0x4f, 0xbf, 0x93, 0xf8, 0xfc,
0x7c, 0x7f, 0x1f, 0x1f, 0x6f, 0xe7, 0xf1, 0xef, 0xef, 0xf7, 0xfb, 0xfd, 0xff, 0x0f, 0xdf, 0xef,
0xe1, 0xf7, 0x76, 0xfc, 0xff, 0x1f, 0x03, 0x6c, 0x94, 0x00, 0x08, 0x19, 0x03, 0x06, 0x31, 0xf8,
0x00, 0xc6, 0x00, 0x28, 0x5b, 0x8c, 0xc0, 0x11, 0xf1, 0x4a, 0x00, 0x00, 0x04, 0x0c, 0x05, 0x1f,
0x81, 0x74, 0x38, 0x01, 0x1f, 0x8d, 0xc6, 0x65, 0x52, 0xb8, 0x54, 0x18, 0x46, 0x23, 0x11, 0x88,
0xc4, 0x62, 0x31, 0x30, 0x22, 0x3f, 0x80, 0x26, 0x0d, 0x1f, 0x81, 0x10, 0xd3, 0x04, 0xfb, 0x85,
0x30, 0xc1, 0x8c, 0xc6, 0x7e, 0x3f, 0x0b, 0xbb, 0x86, 0xfc, 0xc0, 0x7f, 0x3f, 0x9f, 0xcf, 0xe0,
0x05, 0x1f, 0x05, 0x28, 0x05, 0x16, 0x81, 0xfe, 0x6b, 0x09, 0x43, 0x82, 0xb1, 0x8c, 0x6c, 0x80,
0x0e, 0x01, 0x1f, 0x80, 0x01, 0x03, 0x5f, 0x8a, 0xc6, 0x08, 0x01, 0x02, 0x00, 0x40, 0x80, 0xe0,
0x24, 0x04, 0x1c, 0x09, 0x1f, 0x93, 0x90, 0x20, 0x10, 0x12, 0x0d, 0x86, 0x00, 0x81, 0x00, 0x40,
0x20, 0x10, 0x00, 0x04, 0x00, 0x1f, 0xe1, 0x70, 0xbb, 0x28, 0x05, 0x1f, 0x0a, 0x3f, 0x01, 0x1f,
0x8a, 0x06, 0x00, 0x67, 0xf0, 0x19, 0x8c, 0x30, 0x67, 0x0d, 0x80, 0x00, 0x06, 0x3f, 0x84, 0x30,
0x9b, 0x7f, 0x19, 0x8c, 0x07, 0x5f, 0x05, 0x1f, 0x81, 0x8c, 0xc6, 0x05, 0x1f, 0x8b, 0x60, 0x61,
0x99, 0x80, 0xe1, 0x83, 0x18, 0xd0, 0xdc, 0x26, 0x0c, 0x0c, 0x05, 0x1f, 0x83, 0x84, 0x00, 0x00,
0x63, 0x05, 0x1f, 0x80, 0x00, 0x09, 0x1f, 0x80, 0x8d, 0x12, 0x3f, 0x81, 0x8c, 0x03, 0x00, 0x23,
0x05, 0x1f, 0x04, 0xc4, 0x83, 0xc1, 0x38, 0xaa, 0x80, 0x01, 0x1f, 0x80, 0xfe, 0x03, 0x5f, 0x8a,
0x39, 0xf7, 0xfe, 0xfd, 0xff, 0xbf, 0x7f, 0x0f, 0xdb, 0xfb, 0xe3, 0x09, 0x1f, 0x8b, 0x6f, 0xdf,
0xef, 0xed, 0xf2, 0x79, 0xff, 0x7e, 0xff, 0xbf, 0xdf, 0xef, 0x0b, 0x5f, 0x8a, 0x60, 0x60, 0x30,
0x66, 0x00, 0x28, 0x4d, 0xc6, 0x60, 0x10, 0x00, 0x00, 0x59, 0x82, 0x04, 0x0f, 0x87, 0x03, 0x5f,
0x8b, 0x14, 0x38, 0x00, 0x3f, 0x0f, 0x8c, 0xc2, 0x90, 0x84, 0xa4, 0x18, 0xfe, 0x04, 0xf3, 0x82,
0xe7, 0xf1, 0xf0, 0x3d, 0x1f, 0x80, 0x38, 0x11, 0x1f, 0x81, 0x98, 0xc6, 0x00, 0x7e, 0x05, 0x0e,
0x0a, 0x39, 0x01, 0x5f, 0x21, 0x1f, 0x80, 0x00, 0x19, 0x1f, 0x93, 0x1c, 0x7f, 0x81, 0x20, 0x90,
0x38, 0x18, 0x0b, 0x83, 0x06, 0x01, 0x03, 0x80, 0x40, 0xe0, 0x90, 0x24, 0x04, 0x03, 0x8e, 0x03,
0x82, 0x88, 0x90, 0x24, 0x12, 0x0e, 0x04, 0x8a, 0x81, 0xc7, 0x70, 0x04, 0x5f, 0x01, 0x11, 0x87,
0x04, 0x81, 0x31, 0x6f, 0x30, 0x00, 0x18, 0x06, 0x0d, 0x1f, 0x95, 0x60, 0x63, 0x06, 0x0c, 0x00,
0x60, 0x60, 0x19, 0x8c, 0x60, 0x63, 0x01, 0x80, 0x00, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x4d, 0xe1,
0x99, 0x21, 0x1f, 0x82, 0x04, 0x99, 0x1d, 0x09, 0x1f, 0x80, 0x61, 0x05, 0x1f, 0x80, 0x63, 0x05,
0x1f, 0x80, 0x60, 0x21, 0x1f, 0x80, 0x6e, 0x07, 0x5f, 0x80, 0xc0, 0x11, 0x1f, 0x80, 0x00, 0x04,
0x23, 0x84, 0xcc, 0x26, 0x0e, 0x0c, 0x03, 0x00, 0xa1, 0x80, 0x01, 0x02, 0x3f, 0xb2, 0x7e, 0xdf,
0x6f, 0xc7, 0xe7, 0xf4, 0x7c, 0xf9, 0xfe, 0xfc, 0x7f, 0xbf, 0x1f, 0x5f, 0xdb, 0xfb, 0xfc, 0x71,
0x79, 0x3c, 0x9e, 0x6f, 0xdb, 0xed, 0xf1, 0xfb, 0x75, 0x7e, 0x38, 0x8f, 0x3f, 0xcf, 0xe7, 0xf3,
0x00, 0x0c, 0x0d, 0x03, 0x03, 0xe1, 0xf8, 0x30, 0x3c, 0x00, 0x27, 0x40, 0x03, 0x30, 0x00, 0x00,
0x78, 0x04, 0x93, 0x07, 0xbd, 0x80, 0x14, 0x04, 0x06, 0x87, 0x19, 0x82, 0xf8, 0x98, 0xbe, 0x70,
0xc3, 0x61, 0x09, 0x0d, 0x26, 0x3f, 0x80, 0x23, 0x0d, 0x1f, 0x81, 0x4c, 0xe3, 0x0d, 0x1f, 0x80,
0xf0, 0x61, 0x1f, 0x81, 0x10, 0x73, 0x08, 0x23, 0x82, 0xe1, 0x8c, 0x38, 0x89, 0x1c, 0x7f, 0x80,
0xa0, 0x50, 0x10, 0x24, 0x0d, 0xff, 0x01, 0x0a, 0x3f, 0x8d, 0xf0, 0x24, 0x04, 0x02, 0x01, 0x81,
0x20, 0x10, 0x30, 0x28, 0x1a, 0x09, 0x06, 0x8a, 0x01, 0x3a, 0x80, 0x20, 0x06, 0x4c, 0x03, 0x5f,
0x83, 0x85, 0x32, 0x6f, 0xb8, 0x09, 0x1f, 0x8f, 0x01, 0xc0, 0x00, 0x70, 0x60, 0x36, 0x06, 0x1f,
0xcc, 0xe0, 0x63, 0x30, 0xd8, 0x60, 0x63, 0x33, 0x03, 0x69, 0x80, 0x60, 0x02, 0x1d, 0x01, 0x0d,
0x81, 0x86, 0x66, 0x01, 0x2d, 0x94, 0x66, 0x63, 0x0c, 0x03, 0x0c, 0x66, 0x04, 0x19, 0x1c, 0xcc,
0x60, 0x33, 0x18, 0xcc, 0x61, 0x81, 0xb0, 0x60, 0xcc, 0x63, 0x0c, 0x00, 0x37, 0x80, 0x60, 0x00,
0xc7, 0x88, 0x00, 0x67, 0x19, 0x86, 0x23, 0x71, 0x88, 0x60, 0x36, 0x05, 0x1f, 0x80, 0x60, 0x01,
0x1f, 0x88, 0x6c, 0x66, 0x1b, 0x8c, 0x08, 0x61, 0x83, 0xb8, 0x70, 0x04, 0x23, 0x05, 0x1f, 0x8b,
0x00, 0xaa, 0x98, 0xc0, 0x7f, 0x5f, 0xaf, 0xef, 0xdb, 0xf2, 0x00, 0xfe, 0x0a, 0x3f, 0x8d, 0x6f,
0xdb, 0xfb, 0xfd, 0xfe, 0x7e, 0xdf, 0xef, 0xcf, 0xd7, 0xe5, 0xf6, 0xf9, 0x75, 0x01, 0x3a, 0x80,
0xdf, 0x02, 0x4c, 0x8a, 0x00, 0x0c, 0x07, 0xc6, 0x04, 0x10, 0x60, 0x30, 0x06, 0x00, 0x10, 0x01,
0x9d, 0x08, 0x00, 0x80, 0x3f, 0x00, 0x08, 0x81, 0x03, 0xb8, 0x09, 0x1f, 0x85, 0x00, 0x04, 0x11,
0x21, 0x04, 0xc0, 0x15, 0x1f, 0x80, 0x66, 0x19, 0x1f, 0x82, 0x66, 0x23, 0x99, 0x05, 0x90, 0x98,
0x98, 0x00, 0x66, 0x1b, 0x0d, 0x86, 0xc3, 0x60, 0xc1, 0x80, 0xc6, 0xce, 0x67, 0x33, 0x99, 0xcc,
0xe6, 0x73, 0x74, 0x62, 0x31, 0x18, 0x8c, 0x46, 0x20, 0x05, 0x1f, 0x82, 0x36, 0x31, 0x8d, 0x02,
0x1c, 0x8b, 0xb0, 0xd8, 0x10, 0x36, 0x3b, 0x9d, 0xce, 0xe7, 0x70, 0xc1, 0x98, 0x30, 0x81, 0x00,
0x7f, 0x00, 0x3b, 0x84, 0x10, 0x24, 0x0c, 0x38, 0x0e, 0x09, 0x1f, 0x94, 0xa0, 0x18, 0x0e, 0x03,
0x00, 0x80, 0x40, 0x60, 0x50, 0x30, 0x16, 0x0e, 0x05, 0x88, 0x81, 0xc0, 0x81, 0xc0, 0x70, 0x38,
0x1c, 0x05, 0x1f, 0x85, 0x83, 0xe0, 0x39, 0xcc, 0x00, 0x0c, 0x02, 0x4a, 0x05, 0x1f, 0x8b, 0xc0,
0x1c, 0x06, 0x1f, 0xc7, 0xc0, 0x61, 0xe0, 0x70, 0x60, 0x3e, 0x1e, 0x01, 0x1f, 0x07, 0x71, 0x98,
0x1e, 0x61, 0x9f, 0x03, 0xc7, 0xc3, 0xf1, 0x80, 0x3e, 0x63, 0x3f, 0x1e, 0x0c, 0x67, 0xe4, 0x19,
0x0c, 0x78, 0x60, 0x1e, 0x18, 0xc7, 0xc1, 0x80, 0xe0, 0x05, 0x1f, 0x83, 0x1f, 0xc6, 0x00, 0x30,
0x05, 0x1f, 0x87, 0x3b, 0x9f, 0x03, 0xc1, 0xb0, 0xf0, 0x60, 0x06, 0x05, 0x1f, 0x80, 0x70, 0x01,
0x1f, 0x87, 0x38, 0x7c, 0x0d, 0x8c, 0x07, 0xc0, 0xf1, 0xd8, 0x08, 0x23, 0x80, 0xc3, 0x0a, 0x3f,
0x81, 0x80, 0xc0, 0x03, 0x18, 0x84, 0xef, 0xdb, 0xf3, 0xc7, 0xf1, 0x09, 0x1f, 0x9f, 0xff, 0xe7,
0xf1, 0xfc, 0xff, 0x7f, 0xbf, 0x9f, 0xaf, 0xcf, 0xe9, 0xf1, 0xfa, 0x77, 0x7e, 0x3f, 0x7e, 0x3f,
0x8f, 0xc7, 0xe3, 0x00, 0x0c, 0x01, 0x0f, 0xe8, 0x08, 0x60, 0x30, 0xc6, 0x00, 0x0f, 0x11, 0x1e,
0x0e, 0x3f, 0x80, 0xd8, 0x15, 0x1f, 0x80, 0x3d, 0x19, 0x1f, 0x9d, 0x3c, 0x3c, 0x3f, 0x1f, 0x8f,
0xc7, 0xe7, 0xe3, 0xf1, 0xf8, 0xfc, 0x7c, 0x21, 0x8f, 0x07, 0x83, 0xc1, 0xe0, 0xf0, 0x00, 0xbc,
0x0e, 0x07, 0x03, 0x81, 0xc0, 0xc1, 0x80, 0xcc, 0x77, 0x05, 0x04, 0x88, 0x73, 0xb9, 0x98, 0x3c,
0x1e, 0x0f, 0x07, 0x83, 0xc0, 0x05, 0x1f, 0x82, 0x1c, 0x31, 0x87, 0x00, 0x1a, 0x8b, 0xe0, 0x70,
0x00, 0x5c, 0x1d, 0x8e, 0xc7, 0x63, 0xb0, 0xc1, 0xf0, 0x30, 0x87, 0x00, 0x7f, 0x81, 0x40, 0xa0,
0x10, 0x28, 0x0a, 0x10, 0x63, 0x8f, 0x90, 0x00, 0x00, 0x02, 0x00, 0x80, 0x80, 0x10, 0xf8, 0x28,
0x12, 0x09, 0x04, 0x80, 0x01, 0x20, 0x15, 0x9f, 0x0f, 0x57, 0x81, 0x06, 0x18, 0x00, 0x04, 0x80,
0x40, 0x07, 0x50, 0x20, 0x00, 0x08, 0x19, 0x44, 0x00, 0x09, 0x38, 0x0c, 0x00, 0x85, 0x07, 0xc0,
0x31, 0xf0, 0x01, 0xff, 0x14, 0x0d, 0x80, 0xcc, 0x00, 0x34, 0x0c, 0x58, 0x80, 0x60, 0x10, 0x07,
0x86, 0x00, 0x00, 0x18, 0x00, 0x01, 0xe0, 0xc3, 0x00, 0x57, 0x88, 0xff, 0xc0, 0x7e, 0xbf, 0x5f,
0xef, 0xd7, 0xf5, 0xff, 0x18, 0x00, 0x8d, 0xfd, 0xff, 0x7f, 0x7f, 0xef, 0x07, 0xd7, 0xed, 0xf6,
0xfb, 0x7f, 0xfe, 0xdf, 0x7f, 0x04, 0x11, 0x01, 0x1f, 0x09, 0x93, 0x80, 0x7c, 0x34, 0x6f, 0x82,
0x14, 0x00, 0x08, 0x10, 0x0b, 0x80, 0xc6, 0x14, 0x14, 0x14, 0x10, 0x64, 0x00, 0x54, 0x23, 0x83,
0x01, 0x81, 0x80, 0x60, 0x01, 0x1f, 0x83, 0x20, 0x90, 0x10, 0x1c, 0x15, 0x1f, 0x04, 0x66, 0x82,
0x80, 0x81, 0xe0, 0x02, 0x51, 0x81, 0x12, 0x0e, 0x01, 0x1f, 0x81, 0xc0, 0x70, 0x3c, 0x34, 0x19,
0x32, 0x10, 0x00, 0x80, 0x02, 0x54, 0x76, 0x38, 0x29, 0x14, 0x00, 0x83, 0x78, 0x00, 0x00, 0x1f,
0x0c, 0x09, 0x25, 0x1f, 0x10, 0x00, 0x01, 0x04, 0x82, 0x6f, 0xef, 0xe3, 0x21, 0x1f, 0x83, 0xfc,
0x7f, 0x7e, 0x1f, 0x02, 0x51, 0x81, 0xed, 0xf1, 0x01, 0x1f, 0x81, 0x3f, 0x8f, 0x0d, 0x1f, 0x59,
0x8f, 0x06, 0xa5, 0x04, 0x00, 0x19, 0x3a, 0x14, 0x10, 0x64, 0x00, 0x54, 0x23, 0x05, 0x1f, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x32, 0x35, 0x36, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x31, 0x35, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x31, 0x33, 0x20, 0x00, 0x00, 0x01, 0x0c, 0x00, 0x09, 0x09, 0x00, 0x01, 0x0f, 0x00, 0x09, 0x12,
0x00, 0x01, 0x0f, 0x00, 0x09, 0x1b, 0x00, 0x01, 0x0f, 0x00, 0x09, 0x24, 0x00, 0x01, 0x0f, 0x00,
0x09, 0x2d, 0x00, 0x01, 0x0f, 0x00, 0x09, 0x36, 0x00, 0x01, 0x0f, 0x00, 0x09, 0x3f, 0x00, 0x03,
0x0d, 0x00, 0x09, 0x48, 0x00, 0x03, 0x0d, 0x00, 0x09, 0x51, 0x00, 0x03, 0x0d, 0x00, 0x09, 0x5a,
0x00, 0x03, 0x0d, 0x00, 0x09, 0x63, 0x00, 0x03, 0x0d, 0x00, 0x09, 0x6c, 0x00, 0x03, 0x0d, 0x00,
0x09, 0x75, 0x00, 0x03, 0x0e, 0x00, 0x09, 0x7e, 0x00, 0x03, 0x0d, 0x00, 0x09, 0x87, 0x00, 0x03,
0x0d, 0x00, 0x09, 0x90, 0x00, 0x01, 0x0f, 0x00, 0x09, 0x99, 0x00, 0x01, 0x0f, 0x00, 0x09, 0xa2,
0x00, 0x01, 0x0f, 0x00, 0x09, 0xab, 0x00, 0x01, 0x0f, 0x00, 0x09, 0xb4, 0x00, 0x01, 0x0f, 0x00,
0x09, 0xbd, 0x00, 0x01, 0x0f, 0x00, 0x09, 0xc6, 0x00, 0x01, 0x0f, 0x00, 0x09, 0xcf, 0x00, 0x01,
0x0f, 0x00, 0x09, 0xd8, 0x00, 0x01, 0x0f, 0x00, 0x09, 0xe1, 0x00, 0x03, 0x0d, 0x00, 0x09, 0xea,
0x00, 0x01, 0x0f, 0x00, 0x09, 0xf3, 0x00, 0x01, 0x0f, 0x00, 0x09, 0xfc, 0x00, 0x03, 0x0d, 0x00,
0x09, 0x05, 0x01, 0x03, 0x0d, 0x00, 0x09, 0x0e, 0x01, 0x03, 0x0d, 0x00, 0x09, 0x17, 0x01, 0x03,
0x0d, 0x00, 0x09, 0x20, 0x01, 0x00, 0x00, 0x00, 0x09, 0x29, 0x01, 0x03, 0x0d, 0x00, 0x09, 0x32,
0x01, 0x02, 0x05, 0x00, 0x09, 0x3b, 0x01, 0x03, 0x0d, 0x00, 0x09, 0x44, 0x01, 0x02, 0x0e, 0x00,
0x09, 0x4d, 0x01, 0x03, 0x0d, 0x00, 0x09, 0x56, 0x01, 0x03, 0x0d, 0x00, 0x09, 0x5f, 0x01, 0x02,
0x06, 0x00, 0x09, 0x68, 0x01, 0x02, 0x0e, 0x00, 0x09, 0x71, 0x01, 0x02, 0x0e, 0x00, 0x09, 0x7a,
0x01, 0x03, 0x08, 0x00, 0x09, 0x83, 0x01, 0x05, 0x0c, 0x00, 0x09, 0x8c, 0x01, 0x0b, 0x0f, 0x00,
0x09, 0x95, 0x01, 0x08, 0x09, 0x00, 0x09, 0x9e, 0x01, 0x0b, 0x0d, 0x00, 0x09, 0xa7, 0x01, 0x02,
0x0e, 0x00, 0x09, 0xb0, 0x01, 0x03, 0x0d, 0x00, 0x09, 0xb9, 0x01, 0x03, 0x0d, 0x00, 0x09, 0xc2,
0x01, 0x03, 0x0d, 0x00, 0x09, 0xcb, 0x01, 0x03, 0x0d, 0x00, 0x09, 0xd4, 0x01, 0x03, 0x0d, 0x00,
0x09, 0xdd, 0x01, 0x03, 0x0d, 0x00, 0x09, 0xe6, 0x01, 0x03, 0x0d, 0x00, 0x09, 0xef, 0x01, 0x03,
0x0d, 0x00, 0x09, 0xf8, 0x01, 0x03, 0x0d, 0x00, 0x09, 0x01, 0x02, 0x03, 0x0d, 0x00, 0x09, 0x0a,
0x02, 0x06, 0x0d, 0x00, 0x09, 0x13, 0x02, 0x06, 0x0f, 0x00, 0x09, 0x1c, 0x02, 0x05, 0x0c, 0x00,
0x09, 0x25, 0x02, 0x07, 0x0a, 0x00, 0x09, 0x2e, 0x02, 0x05, 0x0c, 0x00, 0x09, 0x37, 0x02, 0x03,
0x0d, 0x00, 0x09, 0x40, 0x02, 0x03, 0x0d, 0x00, 0x09, 0x49, 0x02, 0x03, 0x0d, 0x00, 0x09, 0x52,
0x02, 0x03, 0x0d, 0x00, 0x09, 0x5b, 0x02, 0x03, 0x0d, 0x00, 0x09, 0x64, 0x02, 0x03, 0x0d, 0x00,
0x09, 0x6d, 0x02, 0x03, 0x0d, 0x00, 0x09, 0x76, 0x02, 0x03, 0x0d, 0x00, 0x09, 0x7f, 0x02, 0x03,
0x0d, 0x00, 0x09, 0x88, 0x02, 0x03, 0x0d, 0x00, 0x09, 0x91, 0x02, 0x03, 0x0d, 0x00, 0x09, 0x9a,
0x02, 0x03, 0x0d, 0x00, 0x09, 0xa3, 0x02, 0x03, 0x0d, 0x00, 0x09, 0xac, 0x02, 0x03, 0x0d, 0x00,
0x09, 0xb5, 0x02, 0x03, 0x0d, 0x00, 0x09, 0xbe, 0x02, 0x03, 0x0d, 0x00, 0x09, 0xc7, 0x02, 0x03,
0x0d, 0x00, 0x09, 0xd0, 0x02, 0x03, 0x0d, 0x00, 0x09, 0xd9, 0x02, 0x03, 0x0f, 0x00, 0x09, 0xe2,
0x02, 0x03, 0x0d, 0x00, 0x09, 0xeb, 0x02, 0x03, 0x0d, 0x00, 0x09, 0xf4, 0x02, 0x03, 0x0d, 0x00,
0x09, 0xfd, 0x02, 0x03, 0x0d, 0x00, 0x09, 0x06, 0x03, 0x03, 0x0d, 0x00, 0x09, 0x0f, 0x03, 0x03,
0x0d, 0x00, 0x09, 0x18, 0x03, 0x03, 0x0d, 0x00, 0x09, 0x21, 0x03, 0x03, 0x0d, 0x00, 0x09, 0x2a,
0x03, 0x03, 0x0d, 0x00, 0x09, 0x33, 0x03, 0x02, 0x0e, 0x00, 0x09, 0x3c, 0x03, 0x02, 0x0e, 0x00,
0x09, 0x45, 0x03, 0x02, 0x0e, 0x00, 0x09, 0x4e, 0x03, 0x04, 0x0b, 0x00, 0x09, 0x57, 0x03, 0x0d,
0x0e, 0x00, 0x09, 0x60, 0x03, 0x02, 0x06, 0x00, 0x09, 0x69, 0x03, 0x05, 0x0d, 0x00, 0x09, 0x72,
0x03, 0x02, 0x0d, 0x00, 0x09, 0x7b, 0x03, 0x05, 0x0d, 0x00, 0x09, 0x84, 0x03, 0x02, 0x0d, 0x00,
0x09, 0x8d, 0x03, 0x05, 0x0d, 0x00, 0x09, 0x96, 0x03, 0x02, 0x0d, 0x00, 0x09, 0x9f, 0x03, 0x05,
0x0f, 0x00, 0x09, 0xa8, 0x03, 0x02, 0x0d, 0x00, 0x09, 0xb1, 0x03, 0x02, 0x0d, 0x00, 0x09, 0xba,
0x03, 0x02, 0x0f, 0x00, 0x09, 0xc3, 0x03, 0x02, 0x0d, 0x00, 0x09, 0xcc, 0x03, 0x02, 0x0d, 0x00,
0x09, 0xd5, 0x03, 0x05, 0x0d, 0x00, 0x09, 0xde, 0x03, 0x05, 0x0d, 0x00, 0x09, 0xe7, 0x03, 0x05,
0x0d, 0x00, 0x09, 0xf0, 0x03, 0x05, 0x0f, 0x00, 0x09, 0xf9, 0x03, 0x05, 0x0f, 0x00, 0x09, 0x02,
0x04, 0x05, 0x0d, 0x00, 0x09, 0x0b, 0x04, 0x05, 0x0d, 0x00, 0x09, 0x14, 0x04, 0x03, 0x0d, 0x00,
0x09, 0x1d, 0x04, 0x05, 0x0d, 0x00, 0x09, 0x26, 0x04, 0x05, 0x0d, 0x00, 0x09, 0x2f, 0x04, 0x05,
0x0d, 0x00, 0x09, 0x38, 0x04, 0x05, 0x0d, 0x00, 0x09, 0x41, 0x04, 0x05, 0x0f, 0x00, 0x09, 0x4a,
0x04, 0x05, 0x0d, 0x00, 0x09, 0x53, 0x04, 0x02, 0x0e, 0x00, 0x09, 0x5c, 0x04, 0x02, 0x0e, 0x00,
0x09, 0x65, 0x04, 0x02, 0x0e, 0x00, 0x09, 0x6e, 0x04, 0x07, 0x0a, 0x00, 0x09, 0x77, 0x04, 0x01,
0x0d, 0x00, 0x09, 0x80, 0x04, 0x00, 0x0e, 0x00, 0x09, 0x89, 0x04, 0x00, 0x0f, 0x00, 0x09, 0x92,
0x04, 0x00, 0x0f, 0x00, 0x09, 0x9b, 0x04, 0x00, 0x0f, 0x00, 0x09, 0xa4, 0x04, 0x00, 0x0f, 0x00,
0x09, 0xad, 0x04, 0x00, 0x0f, 0x00, 0x09, 0xb6, 0x04, 0x00, 0x0f, 0x00, 0x09, 0xbf, 0x04, 0x00,
0x0f, 0x00, 0x09, 0xc8, 0x04, 0x00, 0x0f, 0x00, 0x09, 0xd1, 0x04, 0x00, 0x0f, 0x00, 0x09, 0xda,
0x04, 0x00, 0x0f, 0x00, 0x09, 0xe3, 0x04, 0x00, 0x0f, 0x00, 0x09, 0xec, 0x04, 0x00, 0x0f, 0x00,
0x09, 0xf5, 0x04, 0x00, 0x0f, 0x00, 0x09, 0xfe, 0x04, 0x00, 0x0f, 0x00, 0x09, 0x07, 0x05, 0x00,
0x0f, 0x00, 0x09, 0x10, 0x05, 0x00, 0x0f, 0x00, 0x09, 0x19, 0x05, 0x00, 0x0f, 0x00, 0x09, 0x22,
0x05, 0x00, 0x0f, 0x00, 0x09, 0x2b, 0x05, 0x00, 0x0f, 0x00, 0x09, 0x34, 0x05, 0x00, 0x0f, 0x00,
0x09, 0x3d, 0x05, 0x00, 0x0f, 0x00, 0x09, 0x46, 0x05, 0x00, 0x0f, 0x00, 0x09, 0x4f, 0x05, 0x00,
0x0f, 0x00, 0x09, 0x58, 0x05, 0x00, 0x0f, 0x00, 0x09, 0x61, 0x05, 0x00, 0x0f, 0x00, 0x09, 0x6a,
0x05, 0x00, 0x0f, 0x00, 0x09, 0x73, 0x05, 0x00, 0x0f, 0x00, 0x09, 0x7c, 0x05, 0x00, 0x0f, 0x00,
0x09, 0x85, 0x05, 0x00, 0x0f, 0x00, 0x09, 0x8e, 0x05, 0x00, 0x0f, 0x00, 0x09, 0x97, 0x05, 0x00,
0x0f, 0x00, 0x09, 0xa0, 0x05, 0x00, 0x00, 0x00, 0x09, 0xa9, 0x05, 0x05, 0x0f, 0x00, 0x09, 0xb2,
0x05, 0x02, 0x0e, 0x00, 0x09, 0xbb, 0x05, 0x03, 0x0d, 0x00, 0x09, 0xc4, 0x05, 0x03, 0x0d, 0x00,
0x09, 0xcd, 0x05, 0x03, 0x0d, 0x00, 0x09, 0xd6, 0x05, 0x02, 0x0e, 0x00, 0x09, 0xdf, 0x05, 0x03,
0x0e, 0x00, 0x09, 0xe8, 0x05, 0x02, 0x04, 0x00, 0x09, 0xf1, 0x05, 0x03, 0x0d, 0x00, 0x09, 0xfa,
0x05, 0x03, 0x0a, 0x00, 0x09, 0x03, 0x06, 0x06, 0x0b, 0x00, 0x09, 0x0c, 0x06, 0x07, 0x0a, 0x00,
0x09, 0x15, 0x06, 0x08, 0x09, 0x00, 0x09, 0x1e, 0x06, 0x03, 0x0b, 0x00, 0x09, 0x27, 0x06, 0x02,
0x03, 0x00, 0x09, 0x30, 0x06, 0x03, 0x07, 0x00, 0x09, 0x39, 0x06, 0x05, 0x0c, 0x00, 0x09, 0x42,
0x06, 0x03, 0x0a, 0x00, 0x09, 0x4b, 0x06, 0x03, 0x0a, 0x00, 0x09, 0x54, 0x06, 0x02, 0x04, 0x00,
0x09, 0x5d, 0x06, 0x05, 0x0f, 0x00, 0x09, 0x66, 0x06, 0x03, 0x0e, 0x00, 0x09, 0x6f, 0x06, 0x08,
0x0a, 0x00, 0x09, 0x78, 0x06, 0x0d, 0x0f, 0x00, 0x09, 0x81, 0x06, 0x03, 0x0a, 0x00, 0x09, 0x8a,
0x06, 0x03, 0x0a, 0x00, 0x09, 0x93, 0x06, 0x06, 0x0b, 0x00, 0x09, 0x9c, 0x06, 0x03, 0x0d, 0x00,
0x09, 0xa5, 0x06, 0x03, 0x0d, 0x00, 0x09, 0xae, 0x06, 0x03, 0x0d, 0x00, 0x09, 0xb7, 0x06, 0x05,
0x0f, 0x00, 0x09, 0xc0, 0x06, 0x00, 0x0d, 0x00, 0x09, 0xc9, 0x06, 0x00, 0x0d, 0x00, 0x09, 0xd2,
0x06, 0x00, 0x0d, 0x00, 0x09, 0xdb, 0x06, 0x00, 0x0d, 0x00, 0x09, 0xe4, 0x06, 0x00, 0x0d, 0x00,
0x09, 0xed, 0x06, 0x01, 0x0d, 0x00, 0x09, 0xf6, 0x06, 0x03, 0x0d, 0x00, 0x09, 0xff, 0x06, 0x03,
0x0f, 0x00, 0x09, 0x08, 0x07, 0x00, 0x0d, 0x00, 0x09, 0x11, 0x07, 0x00, 0x0d, 0x00, 0x09, 0x1a,
0x07, 0x00, 0x0d, 0x00, 0x09, 0x23, 0x07, 0x00, 0x0d, 0x00, 0x09, 0x2c, 0x07, 0x00, 0x0d, 0x00,
0x09, 0x35, 0x07, 0x00, 0x0d, 0x00, 0x09, 0x3e, 0x07, 0x00, 0x0d, 0x00, 0x09, 0x47, 0x07, 0x00,
0x0d, 0x00, 0x09, 0x50, 0x07, 0x03, 0x0d, 0x00, 0x09, 0x59, 0x07, 0x00, 0x0d, 0x00, 0x09, 0x62,
0x07, 0x00, 0x0d, 0x00, 0x09, 0x6b, 0x07, 0x00, 0x0d, 0x00, 0x09, 0x74, 0x07, 0x00, 0x0d, 0x00,
0x09, 0x7d, 0x07, 0x00, 0x0d, 0x00, 0x09, 0x86, 0x07, 0x00, 0x0d, 0x00, 0x09, 0x8f, 0x07, 0x06,
0x0b, 0x00, 0x09, 0x98, 0x07, 0x03, 0x0d, 0x00, 0x09, 0xa1, 0x07, 0x00, 0x0d, 0x00, 0x09, 0xaa,
0x07, 0x00, 0x0d, 0x00, 0x09, 0xb3, 0x07, 0x00, 0x0d, 0x00, 0x09, 0xbc, 0x07, 0x00, 0x0d, 0x00,
0x09, 0xc5, 0x07, 0x00, 0x0d, 0x00, 0x09, 0xce, 0x07, 0x03, 0x0d, 0x00, 0x09, 0xd7, 0x07, 0x02,
0x0d, 0x00, 0x09, 0xe0, 0x07, 0x02, 0x0d, 0x00, 0x09, 0xe9, 0x07, 0x02, 0x0d, 0x00, 0x09, 0xf2,
0x07, 0x02, 0x0d, 0x00, 0x09, 0xfb, 0x07, 0x02, 0x0d, 0x00, 0x09, 0x04, 0x08, 0x02, 0x0d, 0x00,
0x09, 0x0d, 0x08, 0x02, 0x0d, 0x00, 0x09, 0x16, 0x08, 0x05, 0x0d, 0x00, 0x09, 0x1f, 0x08, 0x05,
0x0f, 0x00, 0x09, 0x28, 0x08, 0x02, 0x0d, 0x00, 0x09, 0x31, 0x08, 0x02, 0x0d, 0x00, 0x09, 0x3a,
0x08, 0x02, 0x0d, 0x00, 0x09, 0x43, 0x08, 0x02, 0x0d, 0x00, 0x09, 0x4c, 0x08, 0x02, 0x0d, 0x00,
0x09, 0x55, 0x08, 0x02, 0x0d, 0x00, 0x09, 0x5e, 0x08, 0x02, 0x0d, 0x00, 0x09, 0x67, 0x08, 0x02,
0x0d, 0x00, 0x09, 0x70, 0x08, 0x02, 0x0d, 0x00, 0x09, 0x79, 0x08, 0x02, 0x0d, 0x00, 0x09, 0x82,
0x08, 0x02, 0x0d, 0x00, 0x09, 0x8b, 0x08, 0x02, 0x0d, 0x00, 0x09, 0x94, 0x08, 0x02, 0x0d, 0x00,
0x09, 0x9d, 0x08, 0x02, 0x0d, 0x00, 0x09, 0xa6, 0x08, 0x02, 0x0d, 0x00, 0x09, 0xaf, 0x08, 0x05,
0x0c, 0x00, 0x09, 0xb8, 0x08, 0x05, 0x0d, 0x00, 0x09, 0xc1, 0x08, 0x02, 0x0d, 0x00, 0x09, 0xca,
0x08, 0x02, 0x0d, 0x00, 0x09, 0xd3, 0x08, 0x02, 0x0d, 0x00, 0x09, 0xdc, 0x08, 0x02, 0x0d, 0x00,
0x09, 0xe5, 0x08, 0x02, 0x0f, 0x00, 0x09, 0xee, 0x08, 0x03, 0x0f, 0x00, 0x09, 0xf7, 0x08, 0x02,
0x0f, 0x00, 0x09, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00,
};

View file

@ -132,8 +132,7 @@ agefont(Font *f)
if(s->age){
if(s->age<SUBFAGE && s->cf->name != nil){
/* clean up */
if(display==nil || s->f != display->defaultsubfont)
freesubfont(s->f);
freesubfont(s->f);
s->cf = nil;
s->f = nil;
s->age = 0;

View file

@ -1,60 +0,0 @@
#include <u.h>
#include <libc.h>
#include <draw.h>
Subfont*
getdefont(Display *d)
{
char *hdr, *p;
int n;
Fontchar *fc;
Subfont *f;
int ld;
Rectangle r;
Image *i;
/*
* make sure data is word-aligned. this is true with Plan 9 compilers
* but not in general. the byte order is right because the data is
* declared as char*, not ulong*.
*/
p = (char*)defontdata;
n = (ulong)p & 3;
if(n != 0){
memmove(p+(4-n), p, sizeofdefont-n);
p += 4-n;
}
ld = atoi(p+0*12);
r.min.x = atoi(p+1*12);
r.min.y = atoi(p+2*12);
r.max.x = atoi(p+3*12);
r.max.y = atoi(p+4*12);
i = allocimage(d, r, drawld2chan[ld], 0, 0);
if(i == 0)
return 0;
p += 5*12;
n = loadimage(i, r, (uchar*)p, (defontdata+sizeofdefont)-(uchar*)p);
if(n < 0){
freeimage(i);
return 0;
}
hdr = p+n;
n = atoi(hdr);
p = hdr+3*12;
fc = malloc(sizeof(Fontchar)*(n+1));
if(fc == 0){
freeimage(i);
return 0;
}
_unpackinfo(fc, (uchar*)p, n);
f = allocsubfont("*default*", n, atoi(hdr+12), atoi(hdr+24), fc, i);
if(f == 0){
freeimage(i);
free(fc);
return 0;
}
return f;
}

View file

@ -1,12 +1,14 @@
#include <u.h>
#include <libc.h>
#include <draw.h>
#include "defont.h"
/*
* Default version: treat as file name
*/
int _fontpipe(char*);
static int defaultpipe(void);
static void scalesubfont(Subfont*, int);
@ -17,12 +19,14 @@ _getsubfont(Display *d, char *name)
Subfont *f;
int scale;
char *fname;
scale = parsefontscale(name, &fname);
fd = open(fname, OREAD);
if(strcmp(fname, "*default*") == 0)
fd = defaultpipe();
else
fd = open(fname, OREAD);
if(fd < 0 && strncmp(fname, "/mnt/font/", 10) == 0)
fd = _fontpipe(fname+10);
if(fd < 0){
fprint(2, "getsubfont: can't open %s: %r\n", fname);
return 0;
@ -46,6 +50,21 @@ _getsubfont(Display *d, char *name)
return f;
}
static int
defaultpipe(void)
{
int p[2];
// assuming defontdata (<5k) fits in pipe buffer.
// especially reasonable since p9pipe is actually
// a socket pair.
if(pipe(p) < 0)
return -1;
write(p[1], defontdata, sizeof defontdata);
close(p[1]);
return p[0];
}
static void
scalesubfont(Subfont *f, int scale)
{
@ -69,8 +88,10 @@ scalesubfont(Subfont *f, int scale)
i = allocimage(f->bits->display, r2, f->bits->chan, 0, DBlack);
for(y=r.min.y; y < r.max.y; y++) {
n = unloadimage(f->bits, Rect(r.min.x, y, r.max.x, y+1), src, srcn);
if(n != srcn)
sysfatal("scalesubfont: bad unload: %d < %d: %r", n, srcn);
if(n != srcn) {
abort();
sysfatal("scalesubfont: bad unload %R %R: %d < %d: %r", f->bits->r, Rect(r.min.x, y, r.max.x, y+1), n, srcn);
}
memset(dst, 0, dstn+1);
pack = 8 / f->bits->depth;
mask = (1<<f->bits->depth) - 1;

View file

@ -8,7 +8,6 @@ Font *font;
Image *screen;
int _drawdebug;
static char deffontname[] = "*default*";
Screen *_screen;
int debuglockdisplay = 1;
@ -41,8 +40,7 @@ drawshutdown(void)
int
geninitdraw(char *devdir, void(*error)(Display*, char*), char *fontname, char *label, char *windir, int ref)
{
Subfont *df;
char buf[128], *p;
char *p;
if(label == nil)
label = argv0;
@ -53,9 +51,7 @@ geninitdraw(char *devdir, void(*error)(Display*, char*), char *fontname, char *l
/*
* Set up default font
*/
df = getdefont(display);
display->defaultsubfont = df;
if(df == nil){
if(openfont(display, "*default*") == 0) {
fprint(2, "imageinit: can't open default subfont: %r\n");
Error:
closedisplay(display);
@ -69,21 +65,13 @@ geninitdraw(char *devdir, void(*error)(Display*, char*), char *fontname, char *l
* Build fonts with caches==depth of screen, for speed.
* If conversion were faster, we'd use 0 and save memory.
*/
if(fontname == nil){
snprint(buf, sizeof buf, "%d %d\n0 %d\t%s\n", df->height, df->ascent,
df->n-1, deffontname);
//BUG: Need something better for this installsubfont("*default*", df);
font = buildfont(display, buf, deffontname);
if(font == nil){
fprint(2, "imageinit: can't open default font: %r\n");
goto Error;
}
}else{
font = openfont(display, fontname); /* BUG: grey fonts */
if(font == nil){
fprint(2, "imageinit: can't open font %s: %r\n", fontname);
goto Error;
}
if(fontname == nil)
fontname = strdup("*default*");
font = openfont(display, fontname);
if(font == nil){
fprint(2, "imageinit: can't open font %s: %r\n", fontname);
goto Error;
}
display->defaultfont = font;
@ -306,7 +294,7 @@ _initdisplay(void (*error)(Display*, char*), char *label)
/*
* Call with d unlocked.
* Note that disp->defaultfont and defaultsubfont are not freed here.
* Note that disp->defaultfont is not freed here.
*/
void
closedisplay(Display *disp)

View file

@ -16,7 +16,6 @@ OFILES=\
creadimage.$O\
cursor.$O\
debug.$O\
defont.$O\
draw.$O\
drawclient.$O\
drawfcall.$O\
@ -27,7 +26,6 @@ OFILES=\
event.$O\
font.$O\
freesubfont.$O\
getdefont.$O\
getrect.$O\
getsubfont.$O\
icossin.$O\
@ -72,5 +70,7 @@ HFILES=\
$PLAN9/include/mouse.h\
$PLAN9/include/keyboard.h\
getsubfont.$O: defont.h
<$PLAN9/src/mksyslib

View file

@ -26,6 +26,8 @@ parsefontscale(char *name, char **base)
return scale;
}
extern char _defontfile[];
Font*
openfont1(Display *d, char *name)
{
@ -37,6 +39,10 @@ openfont1(Display *d, char *name)
freename = nil;
scale = parsefontscale(name, &fname);
if(strcmp(fname, "*default*") == 0) {
buf = strdup(_defontfile);
goto build;
}
fd = open(fname, OREAD);
if(fd < 0 && strncmp(fname, "/lib/font/bit/", 14) == 0){
nambuf = smprint("#9/font/%s", fname+14);
@ -87,6 +93,7 @@ openfont1(Display *d, char *name)
return 0;
}
buf[i] = 0;
build:
fnt = buildfont(d, buf, name);
free(buf);
free(nambuf);

View file

@ -58,3 +58,19 @@ readsubfont(Display*d, char *name, int fd, int dolock)
{
return readsubfonti(d, name, fd, nil, dolock);
}
void
_unpackinfo(Fontchar *fc, uchar *p, int n)
{
int j;
for(j=0; j<=n; j++){
fc->x = p[0]|(p[1]<<8);
fc->top = p[2];
fc->bottom = p[3];
fc->left = p[4];
fc->width = p[5];
fc++;
p += 6;
}
}

View file

@ -12,8 +12,6 @@ Subfont *lastsubfont;
Subfont*
lookupsubfont(Display *d, char *name)
{
if(d && strcmp(name, "*default*") == 0)
return d->defaultsubfont;
if(lastname && strcmp(name, lastname)==0)
if(d==lastsubfont->bits->display){
lastsubfont->ref++;

View file

@ -15,8 +15,13 @@ subfontname(char *cfname, char *fname, int maxdepth)
scale = parsefontscale(fname, &base);
t = strdup(cfname); /* t is the return string */
if(strcmp(cfname, "*default*") == 0)
if(strcmp(cfname, "*default*") == 0) {
if(scale > 1) {
free(t);
return smprint("%d*%s", scale, cfname);
}
return t;
}
if(t[0] != '/'){
tmp2 = strdup(base);
u = utfrrune(tmp2, '/');

View file

@ -1,68 +0,0 @@
#include <u.h>
#include <libc.h>
#include <draw.h>
#include <memdraw.h>
Memsubfont*
getmemdefont(void)
{
char *hdr, *p;
int n;
Fontchar *fc;
Memsubfont *f;
int ld;
Rectangle r;
Memdata *md;
Memimage *i;
/*
* make sure data is word-aligned. this is true with Plan 9 compilers
* but not in general. the byte order is right because the data is
* declared as char*, not u32int*.
*/
p = (char*)defontdata;
n = (uintptr)p & 3;
if(n != 0){
memmove(p+(4-n), p, sizeofdefont-n);
p += 4-n;
}
ld = atoi(p+0*12);
r.min.x = atoi(p+1*12);
r.min.y = atoi(p+2*12);
r.max.x = atoi(p+3*12);
r.max.y = atoi(p+4*12);
md = mallocz(sizeof(Memdata), 1);
if(md == nil)
return nil;
p += 5*12;
md->base = nil; /* so freememimage doesn't free p */
md->bdata = (uchar*)p; /* ick */
md->ref = 1;
md->allocd = 1; /* so freememimage does free md */
i = allocmemimaged(r, drawld2chan[ld], md, nil);
if(i == nil){
free(md);
return nil;
}
hdr = p+Dy(r)*i->width*sizeof(u32int);
n = atoi(hdr);
p = hdr+3*12;
fc = malloc(sizeof(Fontchar)*(n+1));
if(fc == 0){
freememimage(i);
return 0;
}
_unpackinfo(fc, (uchar*)p, n);
f = allocmemsubfont("*default*", n, atoi(hdr+12), atoi(hdr+24), fc, i);
if(f == 0){
freememimage(i);
free(fc);
return 0;
}
return f;
}

View file

@ -10,7 +10,6 @@ OFILES=\
cload-stub.$O\
cmap.$O\
cread.$O\
defont.$O\
draw.$O\
draw-stub.$O\
ellipse.$O\