You are not logged in.

#1 2008-07-02 23:33:47

JustWoody
Member

Yet another additional GRRLib printf function

I've made some amendments to the printf and drawchar function to support any configuration and amount of characters in the font (although 1024 limit still exists wink)

What this actually means is that your font does not need to have all 256 characters so you can have a reduced set (the example below only has the upper case letters, the numbers and a few symbols) + in any configuration of characters wide and high.

In order to use them you need to add some extra variables to the font for example:-

Code:

const int font295_width = 16;
const int font295_height = 16;
const int font295_chars_wide = 20;
const int font295_chars_high = 3;
const char *font295_fontmap = "ABCDEFGHIJKLMNOPQRSTUVWXYZ -0123456789.,'!?:";

The the new versions to go in the GRRLIB.c:

Code:

// This version adds ability to have a font with different number of characters wide and high instead of hardcoded to 16x16
inline void GRRLIB_DrawChar(f32 xpos, f32 ypos, u16 width, u16 height, u8 data[], u16 chars_wide, u16 chars_high,float degrees, float scaleX, f32 scaleY, u8 frame, GXColor c ){
GXTexObj texObj;
f32 s1= ((frame    %chars_wide))    /(f32)chars_wide;
f32 s2= ((frame    %chars_wide)+1)    /(f32)chars_wide;
f32 t1= ((frame    /chars_wide))    /(f32)chars_high;
f32 t2= ((frame    /chars_wide)+1)    /(f32)chars_high;

    GX_InitTexObj(&texObj, data, width*chars_wide,height*chars_high, GX_TF_RGBA8,GX_CLAMP, GX_CLAMP,GX_FALSE);
    GX_InitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1);
    GX_LoadTexObj(&texObj, GX_TEXMAP0);

    GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE);
      GX_SetVtxDesc (GX_VA_TEX0, GX_DIRECT);

    Mtx m,m1,m2,mv;
    width *=.5;
    height*=.5;

    guMtxIdentity (m1);
    guMtxScaleApply(m1,m1,scaleX,scaleY,1.0);
    Vector axis =(Vector) {0,0,1};
    guMtxRotAxisDeg (m2, &axis, degrees);
    guMtxConcat(m2,m1,m);
    guMtxTransApply(m,m, xpos+width,ypos+height,0);
    guMtxConcat (GXmodelView2D, m, mv);
    GX_LoadPosMtxImm (mv, GX_PNMTX0);

    GX_Begin(GX_QUADS, GX_VTXFMT0,4);

          GX_Position3f32(-width, -height,  0);
          GX_Color4u8(c.r,c.g,c.b,c.a);
          GX_TexCoord2f32(s1, t1);

          GX_Position3f32(width, -height,  0);
         GX_Color4u8(c.r,c.g,c.b,c.a);
          GX_TexCoord2f32(s2, t1);

          GX_Position3f32(width, height,  0);
        GX_Color4u8(c.r,c.g,c.b,c.a);
          GX_TexCoord2f32(s2, t2);

          GX_Position3f32(-width, height,  0);
        GX_Color4u8(c.r,c.g,c.b,c.a);
          GX_TexCoord2f32(s1, t2);

    GX_End();

    GX_LoadPosMtxImm (GXmodelView2D, GX_PNMTX0);
    GX_SetTevOp (GX_TEVSTAGE0, GX_PASSCLR);
      GX_SetVtxDesc (GX_VA_TEX0, GX_NONE);
}

/*
    This version of GRRLIB_Printf takes in a fontmap along with the number of character wide and high of the the font.
    The fontmap is just a terminated string containing the characters that appear in the font in the position they
    appear. e.g. "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:-+!" I would advise this to part of the font file along with
    the number of characters wide and high.

    It will not output anything for a character that is not in present in the fontmap
*/
void GRRLIB_Printf(f32 xpos, f32 ypos, u8 font[], u16 font_width, u16 font_height, char fontmap[], u16 chars_wide, u16 chars_high, u32 color, f32 zoom, char *text,...){
    int i,size=0;
    char tmp[1024];

    va_list argp;
    va_start(argp, text);
    size = vsprintf(tmp, text, argp);
    va_end(argp);

    GXColor col = GRRLIB_Splitu32(color);
    for(i=0;i<size;i++){
        char * pch = strchr(fontmap, tmp[i]);
        if(pch!=NULL) {
            GRRLIB_DrawChar(xpos+i * font_width * zoom, ypos, font_width, font_height, font, chars_wide, chars_high, 0, zoom, zoom, pch-fontmap, col );
        }
    }
}

changes to GRRLIB.h:

Code:

inline void GRRLIB_DrawGChar(f32 xpos, f32 ypos, u16 width, u16 height, u8 data[], u16 chars_wide, u16 chars_high,float degrees, float scaleX, f32 scaleY, u8 frame, GXColor c);
void GRRLIB_GPrintf(f32 xpos, f32 ypos, u8 font[], u16 font_width, u16 font_height, char *fontmap, u16 chars_wide, u16 chars_high, u32 color, f32 zoom, char *text,...);

Heres a sample font:

font266.c:

Code:

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

font266.h

Code:

//---------------------------------------------------------------------------------
#ifndef _font266_h_
#define _font266_h_
//---------------------------------------------------------------------------------
extern const unsigned char font266[];
extern const int font266_size;
extern const int font266_width;
extern const int font266_height;
extern const int font266_chars_wide;
extern const int font266_chars_high;
extern const char *font266_fontmap;
//---------------------------------------------------------------------------------
#endif //_font266_h_
//---------------------------------------------------------------------------------

The changes to the DrawChar function could probably be used in the DrawTile method as well to give support to multiple lines of tiles.

Apologies for any dodgy coding as I'm more from an old school asm (68000, 6502) and Java background these days.

Offline

 

#2 2008-11-06 17:49:49

chris
Member

Re: Yet another additional GRRLib printf function

Very useful, thank you.

Offline

 

#3 2008-11-07 09:46:29

JustWoody
Member

Re: Yet another additional GRRLib printf function

np chris

I've actually made quite a few changes to this now adding features like variable width characters, loading of up to three fonts into GGRLib, rewrote all the font access functions so they have a lot less parameters - as you just reference the font that you want to use instead of supplying all the info every time (much cleaner code in your app), etc.

I'm thinking about posting this new code (if anyone would like it) when I get some time.

Offline

 

#4 2008-11-07 11:42:52

chris
Member

Re: Yet another additional GRRLib printf function

I'd like to see it when you're ready.  Btw Mahjongg rules!

Offline

 

Board footer

Powered by FluxBB