diff options
author | Matthias Clasen <matthiasc@src.gnome.org> | 2002-03-13 18:11:15 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2002-03-13 18:11:15 +0000 |
commit | 5ebe8faab2c02715bbc13412206aa00c1772b16c (patch) | |
tree | 22b3c42acb7d144eb63b5978778a1d9a6a07a5dd /gdk-pixbuf | |
parent | 166894bd8b77d45ace190a1b9ee1470f764b7beb (diff) | |
download | gtk+-5ebe8faab2c02715bbc13412206aa00c1772b16c.tar.gz |
Add valid_ras_test and invalid_bmp_1.
* test-images.h: Add valid_ras_test and invalid_bmp_1.
* test-loaders.c (main): Add random tests for ras and pnm and an
invalid bmp which was a crasher until my 2002-03-12 commit.
* io-pnm.c (gdk_pixbuf__pnm_image_load_increment): Don't unref the
pixbuf on errors.
* io-ras.c: Handle some errors.
Diffstat (limited to 'gdk-pixbuf')
-rw-r--r-- | gdk-pixbuf/ChangeLog | 12 | ||||
-rw-r--r-- | gdk-pixbuf/io-pnm.c | 2 | ||||
-rw-r--r-- | gdk-pixbuf/io-ras.c | 88 | ||||
-rw-r--r-- | gdk-pixbuf/test-images.h | 446 | ||||
-rw-r--r-- | gdk-pixbuf/test-loaders.c | 24 |
5 files changed, 532 insertions, 40 deletions
diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog index cc79137ac6..494890123b 100644 --- a/gdk-pixbuf/ChangeLog +++ b/gdk-pixbuf/ChangeLog @@ -1,3 +1,15 @@ +2002-03-13 Matthias Clasen <maclas@gmx.de> + + * test-images.h: Add valid_ras_test and invalid_bmp_1. + + * test-loaders.c (main): Add random tests for ras and pnm and an + invalid bmp which was a crasher until my 2002-03-12 commit. + + * io-pnm.c (gdk_pixbuf__pnm_image_load_increment): Don't unref the + pixbuf on errors. + + * io-ras.c: Handle some errors. + 2002-03-12 Sven Neumann <sven@gimp.org> * gdk-pixbuf.c (gdk_pixbuf_fill): use sequential writes instead of diff --git a/gdk-pixbuf/io-pnm.c b/gdk-pixbuf/io-pnm.c index bb188eedf2..adf843f33c 100644 --- a/gdk-pixbuf/io-pnm.c +++ b/gdk-pixbuf/io-pnm.c @@ -1013,8 +1013,6 @@ gdk_pixbuf__pnm_image_load_increment (gpointer data, if (retval == PNM_SUSPEND) { break; } else if (retval == PNM_FATAL_ERR) { - if (context->pixbuf) - g_object_unref (context->pixbuf); return FALSE; } else if (retval == PNM_OK) { /* send updated signal */ diff --git a/gdk-pixbuf/io-ras.c b/gdk-pixbuf/io-ras.c index ad692428bb..593c89a86c 100644 --- a/gdk-pixbuf/io-ras.c +++ b/gdk-pixbuf/io-ras.c @@ -138,8 +138,9 @@ static GdkPixbuf *gdk_pixbuf__ras_image_load(FILE * f, GError **error) return pb; } -static void RAS2State(struct rasterfile *RAS, - struct ras_progressive_state *State) +static gboolean RAS2State(struct rasterfile *RAS, + struct ras_progressive_state *State, + GError **error) { State->Header.width = GUINT32_FROM_BE(RAS->width); State->Header.height = GUINT32_FROM_BE(RAS->height); @@ -148,47 +149,73 @@ static void RAS2State(struct rasterfile *RAS, State->Header.maptype = GUINT32_FROM_BE(RAS->maptype); State->Header.maplength = GUINT32_FROM_BE(RAS->maplength); - g_assert(State->Header.maplength <= 768); /* Otherwise, we are in trouble */ + if ((gint)State->Header.width <= 0 || + (gint)State->Header.height <= 0 || + State->Header.maplength > 768) { + g_set_error (error, + GDK_PIXBUF_ERROR, + GDK_PIXBUF_ERROR_CORRUPT_IMAGE, + _("RAS image has bogus header data")); + return FALSE; + } State->RasType = State->Header.depth; /* This may be less trivial someday */ State->HeaderSize = 32 + State->Header.maplength; if (State->RasType == 32) State->LineWidth = State->Header.width * 4; - if (State->RasType == 24) + else if (State->RasType == 24) State->LineWidth = State->Header.width * 3; - if (State->RasType == 8) + else if (State->RasType == 8) State->LineWidth = State->Header.width * 1; - if (State->RasType == 1) { + else if (State->RasType == 1) { State->LineWidth = State->Header.width / 8; if ((State->Header.width & 7) != 0) State->LineWidth++; } + else { + g_set_error (error, + GDK_PIXBUF_ERROR, + GDK_PIXBUF_ERROR_CORRUPT_IMAGE, + _("RAS image has unknown type")); + return FALSE; + } - /* Now padd the line to be a multiple of 16 bits */ + /* Now pad the line to be a multiple of 16 bits */ if ((State->LineWidth & 1) != 0) State->LineWidth++; - if (State->LineBuf == NULL) - State->LineBuf = g_malloc(State->LineWidth); + if (!State->LineBuf) { + State->LineBuf = g_try_malloc (State->LineWidth); - g_assert(State->LineBuf != NULL); + if (!State->LineBuf) { + g_set_error (error, + GDK_PIXBUF_ERROR, + GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY, + _("Not enough memory to load RAS image")); + return FALSE; + } + } - if (State->pixbuf == NULL) { + if (!State->pixbuf) { if (State->RasType == 32) - State->pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, - 8, - (gint) - State->Header.width, - (gint) - State->Header. - height); + State->pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, + (gint) State->Header.width, + (gint) State->Header.height); else - State->pixbuf = - gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, - (gint) State->Header.width, - (gint) State->Header.height); + State->pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, + (gint) State->Header.width, + (gint) State->Header.height); + + if (!State->pixbuf) { + g_set_error (error, + GDK_PIXBUF_ERROR, + GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY, + _("Not enough memory to load RAS image")); + return FALSE; + } + if (State->prepared_func != NULL) /* Notify the client that we are ready to go */ (*State->prepared_func) (State->pixbuf, @@ -197,7 +224,7 @@ static void RAS2State(struct rasterfile *RAS, } - if ((State->Header.maplength==0)&&(State->RasType==1)) { + if ((State->Header.maplength == 0) && (State->RasType == 1)) { State->HeaderBuf[32] = 255; State->HeaderBuf[33] = 0; State->HeaderBuf[34] = 255; @@ -206,6 +233,7 @@ static void RAS2State(struct rasterfile *RAS, State->HeaderBuf[37] = 0; } + return TRUE; } /* @@ -362,6 +390,9 @@ static void OneLine1(struct ras_progressive_state *context) static void OneLine(struct ras_progressive_state *context) { + context->LineDone = 0; + if (context->Lines >= context->Header.height) + return; if (context->RasType == 32) OneLine32(context); if (context->RasType == 24) @@ -372,8 +403,6 @@ static void OneLine(struct ras_progressive_state *context) OneLine1(context); context->LineDone = 0; - if (context->Lines > context->Header.height) - return; context->Lines++; if (context->updated_func != NULL) { @@ -392,7 +421,7 @@ static void OneLine(struct ras_progressive_state *context) * buf - new image data * size - length of new image data * - * append image data onto inrecrementally built output image + * append image data onto incrementally built output image */ static gboolean gdk_pixbuf__ras_image_load_increment(gpointer data, @@ -443,8 +472,10 @@ gdk_pixbuf__ras_image_load_increment(gpointer data, } if (context->HeaderDone >= 32) - RAS2State((struct rasterfile *) context->HeaderBuf, - context); + if (!RAS2State((struct rasterfile *) context->HeaderBuf, + context, error)) { + return FALSE; + } } @@ -460,3 +491,4 @@ gdk_pixbuf__ras_fill_vtable (GdkPixbufModule *module) module->stop_load = gdk_pixbuf__ras_image_stop_load; module->load_increment = gdk_pixbuf__ras_image_load_increment; } + diff --git a/gdk-pixbuf/test-images.h b/gdk-pixbuf/test-images.h index 7bf9993748..b805b128de 100644 --- a/gdk-pixbuf/test-images.h +++ b/gdk-pixbuf/test-images.h @@ -9460,5 +9460,449 @@ static unsigned char const valid_xpm_test[] = { 46, 32, 46, 32, 46, 32, 34, 125, 59, 10 }; -#endif +static unsigned char const valid_ras_test[] = { +89, 166, 106, 149, 0, 0, 0, 48, 0, 0, 0, 48, 0, 0, 0, 24, +0, 0, 27, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 253, 253, 251, 251, 251, +250, 250, 250, 249, 249, 249, 248, 248, 248, 248, 248, 248, 248, 248, 248, 249, +249, 249, 250, 250, 250, 251, 251, 251, 253, 253, 253, 254, 254, 254, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 254, 254, 254, 253, 253, 253, 251, 251, 251, 248, 248, 248, 245, 245, 245, +243, 243, 243, 241, 241, 241, 239, 239, 239, 239, 239, 239, 239, 239, 239, 240, +240, 240, 242, 242, 242, 245, 245, 245, 248, 248, 248, 250, 250, 250, 253, 253, +253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, +253, 251, 251, 251, 248, 248, 248, 244, 244, 244, 240, 240, 240, 235, 235, 235, +231, 231, 231, 227, 227, 227, 224, 224, 224, 224, 224, 224, 224, 224, 224, 226, +226, 226, 229, 229, 229, 233, 233, 233, 238, 238, 238, 243, 243, 243, 248, 248, +248, 251, 251, 251, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 253, 253, 253, 250, 250, +250, 246, 246, 246, 241, 241, 241, 234, 234, 234, 227, 227, 227, 221, 221, 221, +215, 215, 215, 209, 209, 209, 206, 206, 206, 204, 204, 204, 205, 205, 205, 207, +207, 207, 211, 211, 211, 217, 217, 217, 224, 224, 224, 231, 231, 231, 238, 238, +238, 245, 245, 245, 249, 249, 249, 253, 253, 253, 254, 254, 254, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 250, 250, 250, 245, 245, +245, 238, 238, 238, 230, 230, 230, 221, 221, 221, 213, 213, 213, 200, 200, 201, +174, 179, 182, 157, 165, 170, 144, 154, 161, 134, 145, 154, 127, 139, 147, 120, +131, 140, 122, 132, 141, 134, 141, 147, 160, 164, 167, 204, 205, 206, 225, 225, +225, 234, 234, 234, 242, 242, 242, 248, 248, 248, 252, 252, 252, 254, 254, 254, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 253, 253, 253, 250, 250, 250, 245, 245, 245, 237, 237, +237, 228, 228, 228, 218, 218, 218, 200, 201, 203, 170, 177, 182, 155, 166, 174, +156, 167, 175, 155, 166, 174, 151, 163, 171, 147, 158, 166, 140, 151, 159, 132, +143, 151, 122, 134, 142, 110, 123, 133, 101, 113, 121, 90, 101, 109, 132, 139, +144, 203, 204, 205, 231, 231, 231, 241, 241, 241, 248, 248, 248, 252, 252, 252, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 254, 254, 254, 251, 251, 251, 246, 246, 246, 238, 238, 238, 228, 228, +228, 217, 217, 217, 184, 189, 192, 160, 172, 178, 165, 177, 184, 169, 179, 186, +171, 180, 187, 169, 179, 186, 165, 177, 184, 159, 171, 178, 153, 164, 172, 143, +155, 163, 133, 144, 153, 122, 134, 142, 109, 122, 132, 98, 110, 120, 85, 98, +107, 79, 89, 97, 155, 158, 161, 230, 230, 230, 241, 241, 241, 249, 249, 249, +253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, +254, 254, 252, 252, 252, 247, 247, 247, 240, 240, 240, 230, 230, 230, 218, 218, +218, 178, 184, 189, 164, 176, 183, 174, 184, 190, 179, 189, 195, 184, 193, 199, +185, 194, 200, 184, 193, 199, 179, 189, 195, 174, 184, 190, 164, 176, 183, 155, +166, 174, 143, 155, 163, 132, 143, 151, 118, 130, 139, 104, 117, 127, 92, 104, +114, 80, 91, 99, 66, 78, 86, 128, 134, 137, 231, 231, 231, 242, 242, 242, +250, 250, 250, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, +253, 253, 250, 250, 250, 243, 243, 243, 234, 234, 234, 222, 222, 222, 178, 184, +188, 164, 176, 183, 176, 186, 192, 185, 194, 200, 192, 202, 207, 197, 207, 212, +199, 208, 212, 197, 207, 212, 192, 202, 207, 185, 194, 200, 176, 186, 192, 164, +176, 183, 153, 164, 172, 143, 153, 161, 127, 139, 147, 111, 124, 134, 98, 110, +120, 85, 96, 104, 71, 83, 92, 60, 71, 78, 123, 130, 134, 233, 233, 233, +244, 244, 244, 251, 251, 251, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 252, +252, 252, 247, 247, 247, 238, 238, 238, 227, 227, 227, 187, 191, 195, 159, 171, +178, 174, 184, 190, 185, 194, 200, 196, 205, 209, 204, 213, 217, 211, 219, 222, +213, 221, 224, 211, 219, 222, 204, 213, 217, 196, 205, 209, 185, 194, 200, 174, +184, 190, 159, 171, 178, 147, 158, 166, 138, 148, 157, 116, 128, 137, 103, 115, +123, 90, 101, 109, 75, 88, 96, 62, 73, 82, 50, 62, 68, 148, 152, 154, +237, 237, 237, 247, 247, 247, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 250, +250, 250, 243, 243, 243, 233, 233, 233, 211, 213, 214, 152, 164, 172, 165, 177, +184, 179, 189, 195, 192, 202, 207, 204, 213, 217, 215, 223, 225, 224, 230, 232, +226, 232, 234, 224, 230, 232, 215, 223, 225, 204, 213, 217, 192, 202, 207, 179, +189, 195, 165, 177, 184, 151, 163, 171, 137, 149, 157, 123, 134, 141, 106, 117, +126, 92, 104, 114, 79, 90, 98, 65, 77, 85, 52, 64, 70, 46, 56, 61, +206, 207, 207, 241, 241, 241, 250, 250, 250, 254, 254, 254, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 248, +248, 248, 240, 240, 240, 228, 228, 228, 171, 177, 182, 155, 166, 174, 169, 179, +186, 183, 192, 198, 197, 207, 212, 211, 219, 222, 224, 230, 232, 233, 238, 239, +239, 242, 243, 233, 238, 239, 224, 230, 232, 211, 219, 222, 197, 207, 212, 184, +193, 199, 169, 179, 186, 155, 166, 174, 140, 151, 159, 124, 136, 144, 117, 128, +136, 95, 107, 115, 80, 92, 101, 66, 78, 86, 53, 65, 71, 41, 52, 57, +107, 113, 116, 233, 233, 233, 246, 246, 246, 252, 252, 252, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 251, 251, 251, 245, +245, 245, 235, 235, 235, 215, 216, 216, 141, 153, 160, 156, 167, 175, 171, 180, +187, 185, 194, 200, 199, 208, 212, 213, 221, 224, 226, 232, 234, 239, 242, 243, +251, 251, 251, 239, 242, 243, 226, 232, 234, 213, 221, 224, 199, 208, 212, 185, +194, 200, 171, 180, 187, 156, 167, 175, 141, 153, 160, 126, 137, 146, 123, 134, +142, 110, 117, 121, 79, 89, 97, 66, 78, 86, 54, 66, 72, 41, 52, 58, +27, 38, 42, 206, 207, 207, 239, 239, 239, 249, 249, 249, 254, 254, 254, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 250, 250, 250, 242, +242, 242, 230, 230, 230, 179, 183, 187, 140, 151, 159, 155, 166, 174, 169, 179, +186, 184, 193, 199, 197, 207, 212, 211, 219, 222, 224, 230, 232, 233, 238, 239, +239, 242, 243, 233, 238, 239, 224, 230, 232, 211, 219, 222, 197, 207, 212, 184, +193, 199, 169, 179, 186, 155, 166, 174, 140, 151, 159, 124, 136, 144, 128, 137, +143, 92, 94, 95, 90, 91, 91, 34, 40, 44, 43, 53, 58, 32, 40, 44, +21, 29, 32, 130, 135, 136, 230, 230, 230, 245, 245, 245, 252, 252, 252, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 249, 249, 249, 240, +240, 240, 226, 226, 226, 152, 160, 165, 137, 149, 157, 151, 163, 171, 164, 176, +183, 179, 189, 195, 192, 202, 207, 204, 213, 217, 215, 223, 225, 224, 230, 232, +226, 232, 234, 224, 230, 232, 215, 223, 225, 204, 213, 217, 192, 202, 207, 179, +189, 195, 165, 177, 184, 151, 163, 171, 137, 149, 157, 122, 134, 142, 125, 134, +140, 82, 83, 84, 177, 178, 178, 105, 106, 106, 26, 33, 36, 22, 28, 31, +26, 34, 36, 78, 85, 88, 218, 218, 218, 238, 238, 238, 249, 249, 249, 254, +254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 247, 247, 247, 237, +237, 237, 222, 222, 222, 131, 141, 149, 133, 144, 153, 147, 158, 166, 159, 171, +178, 174, 184, 190, 185, 194, 200, 196, 205, 209, 204, 213, 217, 211, 219, 222, +213, 221, 224, 211, 219, 222, 204, 213, 217, 196, 205, 209, 185, 194, 200, 174, +184, 190, 159, 171, 178, 147, 158, 166, 133, 144, 153, 118, 130, 139, 107, 118, +126, 88, 88, 89, 191, 193, 195, 208, 209, 209, 62, 63, 64, 18, 24, 26, +46, 53, 55, 33, 41, 43, 202, 202, 202, 229, 229, 229, 245, 245, 245, 253, +253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 247, 247, 247, 235, +235, 235, 219, 219, 219, 115, 126, 136, 127, 139, 147, 140, 151, 159, 153, 164, +172, 164, 176, 183, 176, 186, 192, 185, 194, 200, 192, 202, 207, 197, 207, 212, +199, 208, 212, 197, 207, 212, 192, 202, 207, 185, 194, 200, 176, 186, 192, 164, +176, 183, 153, 164, 172, 140, 151, 159, 127, 139, 147, 111, 124, 134, 77, 87, +95, 65, 66, 67, 142, 145, 147, 224, 224, 224, 139, 140, 140, 35, 37, 39, +34, 43, 46, 16, 24, 27, 185, 185, 185, 218, 218, 218, 239, 239, 239, 250, +250, 250, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 246, 246, 246, 234, +234, 234, 216, 216, 216, 104, 117, 127, 118, 130, 139, 132, 143, 151, 141, 153, +161, 155, 166, 174, 164, 176, 183, 174, 184, 190, 179, 189, 195, 184, 193, 199, +185, 194, 200, 184, 193, 199, 179, 189, 195, 174, 184, 190, 164, 176, 183, 155, +166, 174, 143, 155, 163, 132, 143, 151, 118, 130, 139, 104, 117, 127, 68, 77, +84, 59, 62, 64, 67, 68, 69, 163, 165, 165, 194, 195, 195, 15, 18, 20, +16, 24, 26, 17, 24, 27, 166, 166, 166, 205, 205, 205, 232, 232, 232, 247, +247, 247, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 246, 246, 246, 234, +234, 234, 215, 215, 215, 100, 112, 122, 109, 122, 132, 122, 134, 142, 121, 131, +139, 96, 104, 110, 163, 172, 179, 159, 171, 178, 165, 177, 184, 169, 179, 186, +171, 180, 187, 169, 179, 186, 165, 177, 184, 159, 171, 178, 153, 164, 172, 143, +155, 163, 133, 144, 153, 122, 134, 142, 109, 122, 132, 98, 110, 120, 76, 88, +96, 49, 53, 56, 38, 38, 39, 106, 110, 111, 187, 189, 189, 92, 95, 96, +16, 21, 24, 24, 31, 34, 148, 148, 148, 191, 191, 191, 223, 223, 223, 242, +242, 242, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 247, 247, 247, 235, +235, 235, 215, 215, 215, 87, 94, 100, 101, 113, 121, 110, 123, 133, 99, 109, +115, 56, 60, 63, 100, 105, 108, 147, 158, 166, 151, 163, 171, 155, 166, 174, +156, 167, 175, 155, 166, 174, 151, 163, 171, 147, 158, 166, 140, 151, 159, 132, +143, 151, 122, 134, 142, 110, 123, 133, 101, 113, 121, 72, 81, 87, 46, 51, +55, 79, 84, 87, 81, 86, 88, 46, 48, 49, 65, 71, 74, 138, 140, 141, +20, 26, 29, 35, 42, 47, 132, 132, 132, 176, 176, 176, 212, 212, 212, 236, +236, 236, 249, 249, 249, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 248, 248, 248, 236, +236, 236, 216, 216, 216, 117, 122, 127, 58, 65, 70, 74, 82, 88, 86, 91, +94, 149, 151, 153, 77, 81, 83, 109, 118, 125, 129, 140, 148, 140, 151, 159, +141, 153, 160, 140, 151, 159, 137, 149, 157, 133, 144, 153, 127, 139, 147, 118, +130, 139, 93, 104, 113, 63, 70, 75, 54, 60, 65, 101, 106, 110, 132, 140, +146, 99, 107, 113, 38, 46, 50, 35, 41, 43, 38, 46, 49, 65, 68, 70, +91, 93, 94, 44, 50, 53, 118, 118, 118, 163, 163, 163, 202, 202, 202, 230, +230, 230, 246, 246, 246, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 249, 249, 249, 238, +238, 238, 219, 219, 219, 166, 169, 171, 171, 177, 181, 74, 79, 82, 56, 57, +59, 204, 204, 205, 124, 126, 128, 48, 53, 57, 74, 82, 87, 108, 119, 126, +106, 116, 123, 85, 93, 99, 93, 102, 109, 78, 86, 92, 64, 72, 78, 52, +58, 63, 46, 51, 56, 83, 88, 92, 140, 145, 149, 110, 118, 124, 88, 97, +104, 59, 71, 77, 27, 34, 38, 54, 64, 68, 47, 57, 62, 32, 40, 45, +123, 125, 125, 32, 35, 37, 109, 109, 109, 152, 152, 152, 192, 192, 192, 223, +223, 223, 242, 242, 242, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 250, 250, 250, 241, +241, 241, 223, 223, 223, 185, 186, 187, 85, 96, 104, 157, 163, 168, 82, 84, +86, 210, 210, 210, 193, 194, 194, 18, 19, 20, 31, 33, 34, 31, 35, 37, +60, 66, 71, 54, 60, 64, 57, 61, 65, 81, 86, 90, 120, 126, 131, 146, +152, 156, 166, 173, 177, 158, 164, 168, 88, 99, 107, 62, 73, 80, 52, 64, +70, 43, 54, 61, 29, 38, 42, 37, 45, 48, 62, 72, 79, 52, 64, 70, +67, 72, 74, 120, 121, 121, 84, 84, 84, 144, 144, 144, 184, 184, 184, 217, +217, 217, 238, 238, 238, 249, 249, 249, 254, 254, 254, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 244, +244, 244, 228, 228, 228, 201, 201, 201, 103, 110, 114, 66, 78, 86, 37, 41, +43, 181, 182, 182, 218, 218, 218, 54, 55, 56, 73, 76, 79, 107, 109, 110, +160, 164, 168, 180, 185, 189, 172, 178, 183, 171, 177, 181, 157, 163, 167, 101, +110, 117, 87, 97, 105, 66, 78, 86, 60, 71, 78, 51, 63, 69, 43, 54, +61, 38, 49, 54, 29, 39, 43, 30, 39, 43, 82, 92, 97, 66, 78, 86, +53, 60, 64, 118, 118, 118, 51, 51, 51, 140, 140, 140, 178, 178, 178, 211, +211, 211, 235, 235, 235, 247, 247, 247, 253, 253, 253, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 247, +247, 247, 233, 233, 233, 208, 208, 208, 159, 160, 161, 57, 69, 75, 26, 30, +33, 164, 165, 166, 194, 194, 195, 105, 109, 112, 20, 22, 24, 69, 74, 77, +84, 90, 95, 104, 114, 122, 105, 115, 122, 73, 85, 93, 71, 83, 92, 66, +78, 86, 62, 73, 80, 55, 67, 73, 48, 60, 66, 42, 53, 59, 38, 49, +54, 34, 46, 52, 37, 47, 52, 35, 43, 47, 96, 106, 113, 74, 84, 92, +54, 55, 56, 65, 65, 65, 92, 92, 92, 111, 111, 111, 174, 174, 174, 207, +207, 207, 231, 231, 231, 246, 246, 246, 253, 253, 253, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 250, +250, 250, 239, 239, 239, 217, 217, 217, 183, 183, 183, 102, 106, 109, 34, 42, +46, 93, 95, 96, 146, 146, 147, 100, 103, 106, 20, 22, 24, 35, 42, 46, +40, 47, 52, 56, 66, 73, 65, 77, 85, 61, 72, 81, 60, 71, 78, 55, +67, 73, 50, 62, 68, 45, 56, 63, 40, 51, 56, 37, 48, 53, 39, 50, +55, 44, 55, 62, 52, 63, 69, 57, 64, 69, 93, 103, 110, 52, 58, 61, +62, 62, 62, 84, 84, 84, 82, 82, 82, 60, 60, 60, 172, 172, 172, 204, +204, 204, 229, 229, 229, 244, 244, 244, 252, 252, 252, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, +252, 252, 244, 244, 244, 226, 226, 226, 195, 195, 195, 153, 153, 153, 68, 74, +77, 44, 48, 50, 95, 96, 97, 46, 49, 51, 27, 30, 32, 29, 35, 39, +28, 34, 37, 47, 58, 63, 52, 64, 70, 52, 64, 70, 49, 61, 67, 45, +56, 63, 43, 54, 61, 41, 52, 57, 41, 52, 57, 42, 54, 60, 51, 63, +69, 62, 73, 80, 70, 81, 88, 71, 78, 83, 59, 68, 74, 55, 55, 55, +71, 71, 71, 91, 91, 91, 101, 101, 101, 55, 55, 55, 131, 131, 131, 204, +204, 204, 228, 228, 228, 243, 243, 243, 251, 251, 251, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, +254, 254, 248, 248, 248, 234, 234, 234, 208, 208, 208, 169, 169, 169, 123, 123, +123, 49, 54, 57, 6, 8, 9, 13, 16, 18, 23, 27, 29, 43, 47, 50, +26, 33, 36, 40, 50, 55, 48, 60, 66, 47, 59, 65, 46, 57, 64, 47, +59, 65, 48, 60, 66, 48, 60, 66, 51, 63, 69, 61, 72, 79, 71, 83, +92, 81, 93, 102, 82, 93, 100, 62, 68, 73, 51, 51, 51, 65, 65, 65, +81, 81, 81, 100, 100, 100, 122, 122, 122, 75, 75, 75, 56, 56, 56, 187, +187, 187, 227, 227, 227, 243, 243, 243, 251, 251, 251, 254, 254, 254, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 251, 251, 251, 241, 241, 241, 220, 220, 220, 186, 186, 186, 142, 142, +142, 98, 98, 98, 14, 16, 17, 9, 11, 13, 18, 23, 25, 44, 48, 50, +40, 47, 51, 42, 52, 57, 55, 67, 73, 57, 69, 75, 62, 73, 80, 62, +73, 80, 65, 77, 85, 71, 82, 90, 79, 90, 98, 83, 94, 102, 91, 102, +110, 93, 104, 112, 51, 58, 63, 50, 50, 50, 62, 62, 62, 76, 76, 76, +92, 92, 92, 109, 109, 109, 131, 131, 131, 148, 148, 148, 29, 29, 29, 154, +154, 154, 228, 228, 228, 243, 243, 243, 251, 251, 251, 254, 254, 254, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 253, 253, 253, 246, 246, 246, 230, 230, 230, 202, 202, 202, 163, 163, +163, 120, 120, 120, 32, 32, 32, 10, 10, 10, 37, 43, 47, 25, 29, 32, +59, 63, 67, 57, 67, 74, 71, 83, 92, 75, 88, 96, 81, 93, 102, 84, +95, 103, 90, 101, 109, 92, 104, 114, 98, 110, 120, 98, 110, 120, 58, 67, +71, 46, 47, 48, 52, 52, 52, 62, 62, 62, 74, 74, 74, 87, 87, 87, +103, 103, 103, 120, 120, 120, 140, 140, 140, 162, 162, 162, 114, 114, 114, 45, +45, 45, 230, 230, 230, 244, 244, 244, 251, 251, 251, 254, 254, 254, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 254, 254, 254, 250, 250, 250, 239, 239, 239, 217, 217, 217, 184, 184, +184, 144, 144, 144, 58, 58, 58, 13, 13, 13, 44, 44, 44, 41, 43, 43, +40, 43, 47, 71, 79, 83, 79, 91, 99, 97, 108, 118, 100, 111, 120, 100, +112, 120, 87, 98, 106, 70, 79, 85, 52, 58, 63, 21, 22, 23, 14, 14, +14, 56, 56, 56, 65, 65, 65, 75, 75, 75, 87, 87, 87, 100, 100, 100, +114, 114, 114, 131, 131, 131, 149, 149, 149, 170, 170, 170, 191, 191, 191, 63, +63, 63, 146, 146, 146, 245, 245, 245, 252, 252, 252, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 252, 252, 252, 245, 245, 245, 228, 228, 228, 202, 202, +202, 168, 168, 168, 94, 94, 94, 15, 15, 15, 55, 55, 55, 64, 64, 64, +54, 54, 54, 48, 48, 48, 44, 44, 44, 42, 42, 42, 41, 41, 41, 42, +42, 42, 44, 44, 44, 47, 47, 47, 51, 51, 51, 49, 49, 49, 11, 11, +11, 68, 68, 68, 79, 79, 79, 88, 88, 88, 99, 99, 99, 112, 112, 112, +126, 126, 126, 142, 142, 142, 160, 160, 160, 179, 179, 179, 200, 200, 200, 186, +186, 186, 66, 66, 66, 227, 227, 227, 252, 252, 252, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 254, 254, 254, 249, 249, 249, 238, 238, 238, 217, 217, +217, 189, 189, 189, 156, 156, 156, 20, 20, 20, 66, 66, 66, 86, 86, 86, +75, 75, 75, 67, 67, 67, 63, 63, 63, 60, 60, 60, 58, 58, 58, 59, +59, 59, 60, 60, 60, 62, 62, 62, 66, 66, 66, 72, 72, 72, 20, 20, +20, 59, 59, 59, 93, 93, 93, 102, 102, 102, 113, 113, 113, 125, 125, 125, +138, 138, 138, 154, 154, 154, 170, 170, 170, 189, 189, 189, 207, 207, 207, 225, +225, 225, 93, 93, 93, 153, 153, 153, 253, 253, 253, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 244, 244, 244, 230, 230, +230, 207, 207, 207, 180, 180, 180, 33, 33, 33, 58, 58, 58, 110, 110, 110, +97, 97, 97, 88, 88, 88, 82, 82, 82, 79, 79, 79, 77, 77, 77, 76, +76, 76, 77, 77, 77, 79, 79, 79, 82, 82, 82, 87, 87, 87, 61, 61, +61, 34, 34, 34, 107, 107, 107, 116, 116, 116, 126, 126, 126, 138, 138, 138, +151, 151, 151, 166, 166, 166, 181, 181, 181, 198, 198, 198, 215, 215, 215, 231, +231, 231, 208, 208, 208, 80, 80, 80, 242, 242, 242, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 249, 249, 249, 239, 239, +239, 223, 223, 223, 200, 200, 200, 72, 72, 72, 47, 47, 47, 134, 134, 134, +120, 120, 120, 109, 109, 109, 102, 102, 102, 98, 98, 98, 96, 96, 96, 94, +94, 94, 95, 95, 95, 96, 96, 96, 99, 99, 99, 103, 103, 103, 104, 104, +104, 32, 32, 32, 108, 108, 108, 131, 131, 131, 140, 140, 140, 151, 151, 151, +164, 164, 164, 178, 178, 178, 192, 192, 192, 208, 208, 208, 223, 223, 223, 236, +236, 236, 245, 245, 245, 132, 132, 132, 133, 133, 133, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 252, 252, 246, 246, +246, 234, 234, 234, 218, 218, 218, 130, 130, 130, 46, 46, 46, 157, 157, 157, +142, 142, 142, 131, 131, 131, 123, 123, 123, 118, 118, 118, 115, 115, 115, 113, +113, 113, 113, 113, 113, 114, 114, 114, 116, 116, 116, 119, 119, 119, 124, 124, +124, 68, 68, 68, 77, 77, 77, 145, 145, 145, 155, 155, 155, 165, 165, 165, +177, 177, 177, 190, 190, 190, 203, 203, 203, 218, 218, 218, 231, 231, 231, 242, +242, 242, 249, 249, 249, 238, 238, 238, 95, 95, 95, 246, 246, 246, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 250, 250, +250, 243, 243, 243, 231, 231, 231, 196, 196, 196, 57, 57, 57, 179, 179, 179, +165, 165, 165, 153, 153, 153, 144, 144, 144, 138, 138, 138, 134, 134, 134, 131, +131, 131, 131, 131, 131, 131, 131, 131, 133, 133, 133, 136, 136, 136, 140, 140, +140, 119, 119, 119, 76, 76, 76, 160, 160, 160, 169, 169, 169, 179, 179, 179, +190, 190, 190, 202, 202, 202, 215, 215, 215, 227, 227, 227, 238, 238, 238, 246, +246, 246, 252, 252, 252, 254, 254, 254, 164, 164, 164, 131, 131, 131, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, +253, 249, 249, 249, 241, 241, 241, 227, 227, 227, 83, 83, 83, 173, 173, 173, +186, 186, 186, 174, 174, 174, 165, 165, 165, 158, 158, 158, 153, 153, 153, 150, +150, 150, 149, 149, 149, 149, 149, 149, 150, 150, 150, 153, 153, 153, 157, 157, +157, 160, 160, 160, 96, 96, 96, 162, 162, 162, 183, 183, 183, 193, 193, 193, +203, 203, 203, 214, 214, 214, 225, 225, 225, 236, 236, 236, 244, 244, 244, 250, +250, 250, 253, 253, 253, 255, 255, 255, 245, 245, 245, 111, 111, 111, 243, 243, +243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, +254, 252, 252, 252, 248, 248, 248, 240, 240, 240, 112, 112, 112, 161, 161, 161, +206, 206, 206, 195, 195, 195, 185, 185, 185, 178, 178, 178, 173, 173, 173, 169, +169, 169, 167, 167, 167, 167, 167, 167, 168, 168, 168, 170, 170, 170, 173, 173, +173, 178, 178, 178, 156, 156, 156, 135, 135, 135, 198, 198, 198, 206, 206, 206, +216, 216, 216, 225, 225, 225, 235, 235, 235, 243, 243, 243, 249, 249, 249, 252, +252, 252, 254, 254, 254, 255, 255, 255, 255, 255, 255, 186, 186, 186, 185, 185, +185, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 254, 254, 254, 252, 252, 252, 248, 248, 248, 169, 169, 169, 143, 143, 143, +223, 223, 223, 214, 214, 214, 205, 205, 205, 198, 198, 198, 192, 192, 192, 188, +188, 188, 186, 186, 186, 185, 185, 185, 185, 185, 185, 187, 187, 187, 190, 190, +190, 194, 194, 194, 191, 191, 191, 158, 158, 158, 212, 212, 212, 219, 219, 219, +228, 228, 228, 236, 236, 236, 243, 243, 243, 248, 248, 248, 252, 252, 252, 254, +254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 183, +183, 236, 236, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 254, 254, 254, 252, 252, 252, 219, 219, 219, 121, 121, 121, +236, 236, 236, 229, 229, 229, 222, 222, 222, 216, 216, 216, 210, 210, 210, 206, +206, 206, 204, 204, 204, 203, 203, 203, 203, 203, 203, 204, 204, 204, 206, 206, +206, 209, 209, 209, 214, 214, 214, 183, 183, 183, 217, 217, 217, 232, 232, 232, +238, 238, 238, 244, 244, 244, 248, 248, 248, 252, 252, 252, 254, 254, 254, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 235, 235, +235, 217, 217, 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 247, 247, 247, 144, 144, 144, +246, 246, 246, 241, 241, 241, 236, 236, 236, 231, 231, 231, 226, 226, 226, 223, +223, 223, 221, 221, 221, 219, 219, 219, 219, 219, 219, 220, 220, 220, 221, 221, +221, 224, 224, 224, 228, 228, 228, 212, 212, 212, 204, 204, 204, 241, 241, 241, +246, 246, 246, 249, 249, 249, 252, 252, 252, 254, 254, 254, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 185, 185, 185, +228, 228, 228, 248, 248, 248, 245, 245, 245, 242, 242, 242, 239, 239, 239, 236, +236, 236, 235, 235, 235, 233, 233, 233, 233, 233, 233, 234, 234, 234, 235, 235, +235, 237, 237, 237, 239, 239, 239, 242, 242, 242, 214, 214, 214, 248, 248, 248, +251, 251, 251, 253, 253, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 227, 227, +196, 196, 196, 253, 253, 253, 251, 251, 251, 249, 249, 249, 247, 247, 247, 246, +246, 246, 245, 245, 245, 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, +245, 246, 246, 246, 248, 248, 248, 249, 249, 249, 246, 246, 246, 248, 248, 248, +254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +207, 207, 207, 255, 255, 255, 254, 254, 254, 253, 253, 253, 252, 252, 252, 252, +252, 252, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, +251, 252, 252, 252, 252, 252, 252, 253, 253, 253, 254, 254, 254, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +230, 230, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, +254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, +254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 +}; + + +static unsigned char const invalid_bmp_1[] = { +66, 77, 54, 27, 204, 0, 0, 0, 0, 0, 246, 0, 0, 0, 40, 0, 0, 0, 126, 0, 0, 0, 48, 0, 0, 0, 1, 0, 24, 0, 199, 0, 0, 153, 0, 27, 0, 0, 18, 11, 0, 0, 93, 11, 0, 98, 0, 0, 0, 67, 0, 126, 0, 0, 255, 255, 137, 255, 255, 255, 255, 255, 255, 255, 255, 240, 255, 255, 255, 255, 255, 228, 255, 23, 255, 255, 255, 233, 255, 255, 255, 255, 255, 255, 255, 255, 5, 255, 218, 255, 255, 255, 255, 255, 143, 95, 255, 255, 255, 255, 255, 255, 255, 255, 255, 103, 255, 255, 81, 255, 255, 255, 255, 69, 255, 255, 8, 218, 255, 255, 125, 255, 255, 74, 255, 79, 255, 255, 255, 255, 255, 184, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 104, 196, 255, 255, 255, 255, 255, 255, 211, 255, 255, 255, 255, 255, 255, 63, 255, 255, 255, 255, 12, 255, 196, 255, 255, 7, 255, 255, 255, 255, 255, 255, 255, 255, 81, 255, 255, 255, 255, 255, 255, 255, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 255, 48, 255, 200, 255, 255, 255, 36, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156, 255, 255, 255, 255, 255, 255, 255, 255, 176, 255, 255, 255, 255, 255, 255, 128, 255, 229, 255, 66, 254, 254, 254, 252, 252, 252, 175, 229, 251, 250, 250, 250, 248, 248, 24, 250, 250, 250, 250, 250, 250, 252, 100, 252, 253, 253, 253, 254, 110, 254, 254, 43, 254, 254, 254, 254, 255, 245, 255, 55, 255, 255, 255, 255, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 194, 255, 255, 255, 255, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 74, 255, 255, 76, 255, 113, 196, 255, 123, 255, 255, 164, 255, 210, 255, 255, 222, 255, 255, 255, 255, 255, 254, 102, 254, 249, 249, 249, 129, 244, 171, 240, 240, 240, 125, 232, 232, 225, 225, 44, 220, 220, 220, 174, 24, 23, 222, 222, 222, 221, 221, 221, 222, 222, 222, 194, 221, 221, 226, 113, 226, 229, 229, 229, 231, 231, 137, 234, 234, 234, 220, 56, 138, 235, 235, 235, 239, 239, 194, 206, 64, 254, 243, 243, 243, 247, 247, 247, 253, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 255, 255, 255, 255, 255, 255, 253, 38, 10, 255, 255, 19, 121, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 73, 162, 255, 255, 171, 255, 255, 255, 255, 72, 255, 255, 219, 255, 255, 255, 69, 255, 255, 232, 255, 255, 255, 253, 253, 253, 250, 250, 250, 241, 241, 163, 85, 227, 232, 215, 215, 55, 11, 200, 200, 130, 178, 178, 160, 160, 253, 170, 153, 153, 149, 193, 149, 155, 225, 155, 160, 160, 160, 159, 159, 159, 159, 159, 159, 144, 64, 158, 164, 164, 164, 169, 8, 169, 176, 176, 176, 177, 177, 177, 177, 177, 177, 186, 186, 27, 188, 185, 185, 190, 190, 190, 195, 195, 195, 212, 212, 212, 228, 228, 228, 244, 244, 20, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 255, 255, 255, 105, 255, 255, 255, 255, 255, 255, 255, 255, 18, 255, 255, 255, 255, 255, 255, 255, 255, 255, 190, 255, 255, 255, 255, 255, 181, 255, 255, 255, 255, 6, 255, 255, 255, 255, 29, 255, 255, 255, 255, 253, 37, 253, 244, 21, 244, 231, 250, 231, 212, 212, 212, 188, 188, 54, 166, 166, 166, 139, 139, 139, 117, 117, 117, 90, 90, 90, 61, 61, 222, 47, 47, 185, 46, 46, 46, 45, 45, 82, 45, 45, 45, 33, 2, 33, 26, 26, 220, 22, 22, 22, 177, 12, 12, 10, 10, 2, 20, 20, 20, 31, 147, 32, 54, 54, 197, 84, 84, 84, 103, 185, 103, 121, 121, 121, 126, 126, 126, 149, 149, 149, 174, 174, 174, 197, 197, 197, 222, 222, 222, 240, 240, 240, 250, 250, 250, 254, 254, 254, 54, 255, 255, 10, 255, 255, 238, 255, 255, 255, 255, 255, 255, 10, 255, 255, 255, 255, 255, 255, 50, 255, 255, 255, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 122, 123, 255, 255, 255, 255, 255, 2, 254, 252, 252, 239, 239, 216, 215, 215, 76, 180, 180, 125, 149, 149, 149, 122, 122, 122, 73, 73, 73, 27, 254, 27, 8, 8, 177, 20, 30, 254, 19, 216, 27, 0, 0, 134, 0, 0, 0, 0, 175, 0, 74, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 215, 0, 0, 203, 0, 0, 0, 0, 0, 69, 138, 1, 1, 1, 13, 13, 13, 45, 77, 150, 84, 84, 84, 114, 114, 114, 115, 136, 136, 163, 126, 77, 159, 194, 150, 217, 100, 217, 236, 236, 236, 252, 252, 252, 255, 255, 255, 255, 255, 255, 114, 255, 255, 251, 251, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 28, 255, 163, 255, 255, 255, 255, 255, 255, 140, 51, 255, 255, 255, 254, 254, 254, 246, 246, 246, 202, 218, 218, 178, 178, 178, 126, 126, 126, 57, 57, 57, 123, 11, 84, 8, 13, 12, 33, 49, 81, 45, 71, 106, 44, 199, 105, 44, 67, 99, 80, 56, 80, 8, 11, 17, 0, 0, 0, 0, 0, 0, 10, 16, 15, 29, 43, 60, 36, 56, 82, 41, 63, 93, 40, 67, 101, 42, 71, 101, 40, 69, 92, 30, 45, 137, 107, 17, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 12, 12, 12, 70, 70, 70, 111, 111, 111, 81, 132, 132, 166, 166, 166, 200, 200, 200, 231, 231, 231, 251, 251, 251, 131, 255, 255, 255, 255, 255, 245, 87, 245, 211, 254, 254, 255, 255, 255, 255, 255, 255, 122, 255, 255, 255, 255, 230, 255, 222, 255, 230, 255, 255, 210, 255, 255, 253, 253, 253, 238, 206, 238, 204, 132, 204, 158, 158, 86, 41, 41, 41, 0, 0, 0, 146, 193, 75, 50, 73, 25, 48, 85, 109, 48, 198, 243, 47, 77, 110, 44, 170, 105, 43, 97, 104, 44, 72, 107, 41, 72, 208, 156, 220, 108, 45, 71, 18, 74, 73, 198, 44, 71, 107, 44, 130, 211, 44, 72, 105, 48, 78, 105, 223, 73, 56, 44, 146, 95, 40, 178, 89, 28, 138, 56, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 12, 12, 12, 80, 80, 80, 117, 117, 117, 101, 155, 155, 196, 148, 196, 235, 3, 235, 219, 255, 255, 255, 255, 255, 241, 241, 219, 251, 109, 251, 255, 255, 255, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 159, 252, 18, 239, 239, 210, 210, 210, 116, 116, 116, 7, 12, 11, 44, 61, 147, 53, 79, 122, 74, 84, 121, 55, 78, 116, 53, 21, 117, 53, 76, 114, 49, 192, 116, 229, 71, 110, 45, 70, 108, 43, 71, 195, 45, 161, 108, 41, 71, 108, 43, 73, 110, 45, 71, 106, 48, 72, 109, 49, 78, 110, 50, 247, 105, 48, 75, 103, 45, 71, 98, 42, 141, 89, 39, 121, 88, 34, 53, 222, 183, 119, 0, 0, 0, 0, 0, 0, 0, 24, 70, 0, 167, 142, 0, 193, 3, 3, 93, 63, 63, 50, 112, 112, 59, 165, 165, 214, 25, 214, 255, 255, 255, 255, 255, 174, 242, 242, 242, 217, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 141, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 253, 253, 246, 246, 246, 229, 229, 229, 123, 0, 160, 185, 78, 13, 59, 85, 128, 61, 87, 126, 60, 84, 127, 57, 84, 128, 57, 84, 128, 216, 81, 128, 56, 80, 125, 70, 77, 122, 52, 236, 119, 112, 78, 117, 49, 74, 233, 48, 74, 113, 46, 76, 113, 109, 83, 7, 47, 79, 114, 52, 81, 111, 49, 54, 5, 50, 75, 105, 50, 75, 103, 45, 70, 96, 40, 69, 91, 36, 61, 85, 31, 52, 68, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 33, 16, 16, 74, 64, 64, 152, 152, 152, 201, 201, 201, 255, 255, 255, 255, 255, 255, 248, 248, 248, 255, 255, 255, 255, 212, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 255, 255, 255, 255, 255, 255, 253, 195, 253, 196, 202, 210, 80, 100, 140, 63, 88, 134, 63, 52, 134, 65, 89, 237, 195, 85, 137, 65, 92, 119, 63, 90, 238, 65, 92, 142, 65, 91, 138, 63, 104, 132, 59, 249, 130, 57, 83, 130, 56, 160, 125, 56, 84, 125, 195, 67, 72, 50, 80, 121, 104, 136, 120, 49, 75, 114, 103, 79, 110, 54, 78, 115, 54, 80, 111, 109, 80, 105, 47, 74, 94, 39, 242, 86, 34, 56, 81, 28, 46, 61, 0, 0, 0, 188, 58, 167, 0, 0, 0, 10, 10, 87, 20, 17, 146, 90, 90, 90, 166, 166, 178, 209, 209, 209, 255, 62, 255, 255, 255, 255, 254, 124, 137, 255, 255, 255, 177, 255, 255, 255, 255, 255, 255, 255, 64, 255, 26, 255, 255, 219, 255, 7, 255, 255, 255, 255, 255, 255, 255, 255, 36, 234, 50, 79, 98, 144, 68, 94, 254, 67, 92, 144, 104, 94, 144, 68, 93, 149, 72, 98, 151, 71, 34, 112, 72, 195, 151, 193, 98, 152, 67, 97, 142, 66, 98, 151, 76, 101, 147, 66, 39, 22, 67, 95, 142, 187, 91, 139, 59, 83, 132, 57, 83, 130, 53, 85, 132, 105, 82, 95, 53, 78, 120, 55, 36, 116, 54, 81, 111, 54, 22, 107, 45, 72, 102, 44, 64, 87, 221, 56, 77, 33, 56, 80, 20, 33, 152, 0, 0, 0, 5, 5, 5, 42, 42, 42, 104, 104, 138, 165, 58, 165, 200, 99, 200, 230, 230, 230, 255, 181, 255, 255, 255, 146, 255, 255, 255, 87, 255, 255, 255, 255, 23, 255, 255, 255, 255, 102, 255, 255, 255, 255, 45, 255, 255, 255, 255, 255, 255, 72, 255, 228, 233, 233, 86, 104, 146, 70, 91, 143, 24, 92, 144, 72, 95, 149, 76, 98, 153, 77, 142, 160, 78, 105, 77, 77, 102, 158, 78, 103, 161, 76, 102, 161, 79, 106, 160, 75, 105, 160, 165, 103, 157, 74, 105, 157, 74, 106, 153, 68, 95, 180, 108, 96, 145, 189, 120, 140, 61, 88, 134, 59, 84, 130, 57, 85, 128, 56, 31, 123, 52, 112, 113, 52, 79, 107, 49, 77, 104, 44, 187, 93, 20, 202, 85, 34, 55, 74, 88, 58, 76, 4, 73, 72, 112, 112, 112, 148, 148, 148, 182, 24, 182, 245, 214, 34, 235, 235, 235, 249, 249, 249, 255, 255, 255, 255, 255, 255, 255, 102, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 255, 255, 255, 255, 255, 125, 255, 255, 255, 255, 255, 255, 124, 137, 56, 69, 91, 146, 70, 89, 149, 116, 65, 153, 79, 102, 177, 81, 104, 164, 82, 106, 167, 177, 104, 168, 83, 17, 172, 84, 45, 60, 82, 218, 169, 81, 109, 174, 80, 110, 171, 80, 109, 239, 240, 107, 50, 78, 105, 254, 72, 114, 159, 69, 100, 152, 66, 96, 147, 67, 114, 142, 65, 89, 132, 240, 86, 130, 56, 80, 123, 218, 81, 117, 52, 125, 115, 53, 75, 106, 47, 71, 98, 39, 64, 88, 31, 54, 78, 32, 32, 79, 77, 96, 109, 191, 191, 191, 215, 215, 215, 159, 236, 236, 247, 247, 195, 253, 253, 253, 242, 173, 255, 255, 173, 255, 255, 255, 255, 255, 255, 177, 255, 255, 189, 255, 255, 255, 255, 255, 255, 255, 255, 48, 255, 255, 255, 165, 255, 230, 255, 255, 255, 134, 58, 220, 72, 94, 147, 74, 46, 155, 76, 97, 16, 82, 103, 163, 82, 106, 167, 84, 107, 171, 86, 109, 175, 87, 110, 174, 88, 113, 177, 88, 112, 179, 87, 113, 180, 89, 115, 157, 85, 114, 180, 85, 113, 221, 85, 114, 174, 179, 107, 165, 79, 107, 164, 74, 226, 161, 73, 103, 154, 67, 100, 150, 66, 94, 220, 66, 93, 65, 61, 87, 130, 58, 78, 119, 54, 79, 117, 51, 71, 108, 50, 137, 103, 41, 64, 10, 37, 237, 82, 31, 50, 186, 31, 56, 172, 206, 212, 211, 253, 253, 86, 100, 255, 255, 103, 255, 255, 255, 255, 255, 255, 36, 255, 76, 255, 255, 255, 255, 255, 179, 255, 255, 255, 43, 245, 255, 110, 171, 255, 255, 255, 255, 255, 255, 122, 255, 255, 70, 24, 255, 255, 255, 56, 87, 103, 213, 76, 96, 153, 83, 101, 158, 85, 104, 166, 90, 109, 145, 88, 54, 45, 90, 109, 173, 89, 113, 180, 93, 140, 84, 92, 124, 49, 96, 118, 181, 92, 116, 185, 92, 116, 183, 93, 116, 182, 147, 114, 179, 87, 193, 176, 83, 109, 176, 80, 108, 171, 155, 107, 168, 78, 105, 161, 72, 164, 157, 215, 102, 154, 68, 96, 120, 66, 89, 137, 60, 86, 133, 58, 74, 112, 53, 75, 114, 47, 72, 106, 44, 68, 95, 34, 63, 91, 226, 49, 75, 32, 53, 43, 103, 142, 137, 255, 255, 255, 255, 255, 255, 255, 255, 168, 255, 255, 255, 255, 42, 74, 255, 255, 255, 255, 255, 255, 247, 255, 255, 67, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 153, 255, 255, 204, 207, 216, 73, 192, 144, 81, 100, 162, 89, 107, 166, 150, 114, 173, 102, 119, 177, 231, 118, 178, 96, 116, 181, 96, 116, 183, 98, 118, 185, 99, 119, 184, 96, 117, 185, 95, 117, 106, 97, 58, 188, 94, 118, 187, 91, 115, 184, 91, 51, 182, 10, 111, 178, 85, 111, 172, 81, 105, 172, 37, 104, 163, 75, 104, 162, 73, 96, 111, 73, 99, 148, 68, 90, 145, 63, 88, 140, 60, 87, 133, 53, 74, 120, 217, 67, 111, 244, 63, 97, 184, 63, 94, 33, 53, 80, 57, 59, 81, 33, 56, 33, 215, 222, 220, 255, 255, 255, 168, 255, 255, 255, 255, 255, 255, 255, 255, 50, 255, 255, 254, 184, 255, 13, 255, 255, 255, 255, 255, 255, 255, 255, 6, 29, 255, 255, 143, 255, 255, 255, 255, 255, 255, 255, 124, 237, 171, 75, 91, 152, 86, 100, 163, 100, 61, 173, 110, 124, 183, 56, 125, 186, 106, 122, 189, 102, 117, 183, 98, 64, 187, 103, 121, 188, 105, 123, 188, 102, 121, 189, 100, 119, 189, 100, 182, 189, 97, 144, 190, 188, 139, 185, 93, 241, 182, 180, 115, 184, 88, 111, 177, 167, 108, 172, 81, 107, 166, 80, 103, 161, 76, 99, 157, 71, 162, 154, 70, 95, 147, 66, 92, 145, 69, 25, 140, 74, 80, 127, 253, 76, 119, 45, 71, 110, 40, 62, 99, 35, 56, 84, 33, 56, 75, 33, 52, 78, 127, 188, 151, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 177, 255, 255, 255, 255, 196, 255, 234, 255, 15, 255, 255, 255, 255, 255, 255, 57, 255, 255, 255, 255, 255, 255, 255, 73, 198, 148, 77, 34, 160, 91, 106, 172, 104, 119, 183, 118, 132, 191, 119, 135, 196, 116, 131, 135, 110, 80, 187, 111, 126, 75, 108, 122, 193, 110, 124, 53, 108, 124, 191, 102, 119, 191, 102, 121, 191, 99, 120, 195, 96, 118, 230, 94, 116, 189, 93, 116, 184, 90, 35, 181, 86, 112, 158, 144, 108, 169, 80, 103, 163, 47, 103, 134, 232, 100, 155, 75, 97, 152, 73, 92, 148, 67, 89, 144, 63, 85, 136, 58, 82, 36, 48, 69, 112, 46, 68, 85, 39, 66, 93, 35, 171, 84, 31, 57, 82, 48, 68, 90, 255, 255, 255, 255, 255, 109, 255, 255, 255, 255, 255, 255, 255, 181, 255, 255, 255, 65, 81, 68, 255, 85, 255, 255, 255, 187, 183, 109, 255, 255, 255, 42, 255, 255, 255, 255, 109, 216, 216, 76, 90, 153, 82, 96, 167, 95, 177, 180, 79, 128, 189, 81, 141, 202, 130, 142, 199, 134, 132, 173, 117, 128, 196, 112, 126, 219, 114, 126, 197, 113, 127, 196, 111, 125, 196, 157, 122, 37, 104, 119, 193, 101, 48, 192, 27, 118, 190, 97, 119, 57, 92, 114, 185, 92, 129, 122, 89, 112, 180, 85, 184, 174, 85, 108, 168, 81, 104, 164, 78, 99, 159, 88, 96, 154, 73, 91, 148, 63, 88, 145, 69, 87, 140, 58, 161, 131, 54, 73, 119, 49, 68, 104, 111, 63, 93, 33, 58, 88, 80, 53, 69, 157, 58, 82, 126, 195, 193, 158, 255, 255, 255, 167, 255, 255, 255, 255, 255, 255, 255, 255, 73, 255, 255, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 255, 255, 255, 17, 255, 255, 185, 189, 206, 73, 85, 156, 81, 99, 170, 102, 114, 185, 3, 139, 197, 140, 150, 203, 137, 147, 172, 128, 84, 203, 122, 132, 203, 118, 130, 201, 119, 69, 200, 120, 160, 203, 118, 30, 197, 112, 123, 72, 107, 219, 196, 107, 124, 196, 209, 160, 193, 0, 115, 139, 59, 115, 188, 93, 115, 186, 186, 114, 182, 89, 112, 178, 85, 39, 30, 83, 107, 159, 79, 99, 164, 77, 97, 156, 75, 64, 232, 73, 91, 150, 69, 130, 140, 63, 83, 65, 56, 77, 123, 47, 65, 110, 41, 65, 102, 34, 52, 89, 33, 63, 88, 33, 53, 80, 130, 148, 142, 255, 87, 17, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 255, 255, 77, 13, 255, 255, 48, 255, 255, 255, 147, 255, 255, 255, 255, 255, 255, 255, 255, 184, 187, 208, 77, 89, 215, 87, 98, 16, 100, 79, 189, 146, 153, 209, 146, 153, 209, 140, 146, 155, 135, 145, 208, 124, 134, 207, 124, 177, 233, 129, 138, 204, 126, 135, 205, 120, 132, 203, 115, 61, 166, 112, 126, 197, 112, 127, 199, 110, 124, 195, 103, 94, 192, 100, 117, 189, 95, 106, 186, 93, 105, 184, 91, 110, 180, 87, 23, 156, 124, 106, 170, 82, 99, 163, 136, 97, 161, 73, 94, 154, 70, 87, 123, 69, 85, 144, 61, 76, 138, 59, 79, 130, 51, 68, 119, 42, 59, 99, 37, 60, 138, 239, 58, 86, 33, 46, 82, 89, 99, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 191, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 221, 255, 255, 175, 188, 205, 76, 86, 161, 86, 94, 175, 97, 42, 99, 158, 159, 212, 153, 157, 214, 141, 149, 210, 138, 225, 75, 135, 145, 208, 131, 140, 208, 135, 145, 206, 130, 138, 209, 173, 135, 205, 120, 130, 207, 120, 131, 201, 114, 128, 203, 110, 22, 199, 107, 121, 194, 101, 118, 192, 98, 115, 187, 93, 176, 184, 113, 112, 182, 88, 107, 177, 86, 104, 171, 82, 242, 167, 81, 95, 164, 216, 86, 160, 72, 85, 153, 69, 83, 146, 111, 77, 138, 57, 76, 132, 53, 71, 169, 46, 146, 109, 207, 65, 247, 27, 180, 90, 36, 59, 85, 37, 53, 80, 255, 255, 255, 255, 255, 109, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 18, 255, 255, 43, 255, 255, 255, 255, 255, 93, 255, 255, 255, 255, 255, 255, 255, 228, 231, 232, 180, 89, 160, 85, 94, 178, 100, 241, 189, 162, 166, 217, 164, 168, 250, 148, 151, 217, 151, 157, 216, 145, 118, 214, 134, 141, 211, 132, 210, 211, 135, 146, 210, 131, 137, 208, 125, 217, 208, 122, 134, 205, 117, 130, 123, 64, 125, 205, 108, 121, 122, 103, 119, 196, 97, 114, 80, 220, 112, 186, 93, 111, 186, 91, 108, 180, 85, 90, 174, 207, 103, 170, 79, 92, 170, 79, 197, 160, 72, 82, 155, 68, 72, 153, 66, 162, 145, 63, 77, 132, 58, 16, 150, 45, 65, 112, 42, 60, 97, 79, 61, 92, 132, 66, 105, 172, 58, 84, 255, 255, 255, 255, 255, 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 255, 255, 75, 214, 156, 86, 95, 175, 95, 104, 188, 154, 160, 67, 174, 178, 223, 175, 176, 228, 160, 218, 205, 163, 166, 224, 138, 145, 213, 138, 143, 55, 137, 142, 212, 133, 58, 78, 128, 51, 207, 124, 53, 209, 119, 127, 216, 115, 126, 206, 82, 123, 120, 106, 119, 199, 102, 117, 195, 97, 114, 188, 95, 110, 186, 92, 140, 183, 90, 109, 97, 53, 104, 171, 112, 146, 168, 78, 136, 89, 74, 82, 161, 72, 75, 154, 66, 74, 147, 62, 200, 135, 57, 80, 124, 52, 76, 70, 44, 61, 95, 37, 40, 92, 36, 55, 83, 38, 228, 112, 255, 94, 228, 118, 255, 255, 255, 255, 176, 255, 255, 255, 255, 255, 205, 29, 149, 217, 211, 255, 9, 255, 247, 255, 255, 184, 255, 255, 255, 255, 223, 255, 223, 255, 255, 255, 227, 131, 168, 81, 87, 170, 94, 101, 187, 145, 148, 212, 187, 191, 194, 186, 187, 215, 247, 174, 74, 158, 162, 219, 163, 170, 222, 136, 141, 130, 223, 147, 87, 134, 187, 215, 129, 137, 208, 125, 131, 210, 122, 128, 207, 119, 80, 208, 114, 125, 205, 110, 122, 199, 101, 76, 196, 98, 114, 82, 115, 109, 185, 93, 108, 102, 88, 124, 179, 85, 100, 174, 81, 96, 172, 77, 5, 168, 248, 82, 161, 60, 77, 154, 66, 68, 149, 145, 32, 136, 153, 75, 128, 52, 221, 113, 41, 62, 100, 36, 58, 91, 195, 59, 73, 39, 223, 88, 255, 255, 255, 255, 255, 255, 255, 255, 65, 255, 255, 255, 255, 64, 255, 64, 255, 255, 136, 255, 255, 255, 241, 255, 241, 255, 255, 202, 66, 255, 255, 255, 255, 122, 255, 228, 207, 207, 219, 77, 84, 73, 89, 94, 184, 108, 114, 27, 186, 187, 229, 191, 192, 232, 177, 183, 226, 187, 188, 232, 147, 138, 216, 28, 139, 216, 147, 149, 220, 148, 156, 217, 198, 135, 209, 125, 133, 210, 123, 131, 208, 122, 130, 209, 120, 130, 205, 110, 123, 203, 106, 211, 159, 129, 112, 180, 95, 111, 188, 93, 109, 186, 89, 184, 78, 171, 69, 175, 82, 93, 173, 77, 134, 172, 72, 76, 4, 68, 75, 159, 66, 74, 37, 65, 74, 140, 60, 189, 127, 100, 7, 112, 101, 60, 96, 34, 60, 91, 36, 60, 93, 44, 64, 91, 227, 255, 178, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 111, 113, 177, 155, 89, 178, 99, 99, 136, 0, 161, 220, 193, 193, 232, 80, 194, 232, 181, 4, 21, 188, 190, 231, 154, 142, 215, 137, 142, 212, 155, 202, 222, 137, 141, 214, 127, 135, 210, 121, 127, 210, 122, 128, 209, 87, 126, 114, 114, 126, 203, 108, 119, 201, 101, 114, 196, 97, 112, 190, 91, 107, 188, 89, 184, 182, 87, 100, 194, 84, 44, 177, 78, 85, 173, 76, 80, 169, 72, 76, 161, 66, 68, 32, 59, 70, 136, 59, 74, 50, 46, 68, 113, 41, 57, 20, 34, 98, 93, 41, 63, 94, 85, 112, 148, 255, 255, 255, 255, 2, 98, 255, 255, 255, 255, 255, 16, 255, 255, 255, 255, 255, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 255, 255, 255, 24, 178, 193, 255, 2, 36, 255, 206, 206, 219, 81, 83, 172, 90, 92, 89, 124, 124, 84, 188, 187, 228, 204, 202, 235, 206, 206, 237, 182, 183, 229, 158, 163, 219, 131, 133, 214, 126, 157, 211, 133, 21, 214, 124, 177, 209, 69, 126, 211, 193, 123, 210, 117, 126, 210, 68, 125, 205, 110, 100, 201, 107, 119, 196, 98, 114, 191, 93, 104, 188, 91, 112, 111, 86, 98, 183, 82, 89, 181, 77, 82, 176, 74, 76, 171, 71, 75, 162, 67, 76, 148, 60, 72, 133, 50, 70, 121, 45, 65, 106, 86, 60, 92, 38, 61, 95, 44, 65, 184, 169, 27, 183, 255, 98, 255, 255, 245, 54, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 209, 205, 201, 207, 168, 255, 255, 255, 255, 255, 100, 141, 255, 255, 255, 255, 255, 255, 255, 14, 145, 147, 189, 85, 114, 194, 92, 70, 187, 149, 147, 216, 197, 93, 232, 215, 213, 240, 195, 197, 234, 178, 178, 227, 161, 161, 222, 122, 242, 76, 117, 122, 210, 119, 58, 248, 116, 11, 209, 45, 120, 209, 187, 122, 205, 112, 121, 205, 113, 119, 202, 106, 115, 199, 100, 111, 193, 93, 104, 188, 226, 95, 185, 84, 119, 183, 81, 83, 180, 219, 85, 176, 75, 77, 166, 67, 73, 156, 67, 91, 144, 4, 72, 135, 51, 66, 114, 45, 65, 102, 38, 54, 89, 41, 57, 77, 80, 98, 128, 255, 255, 255, 139, 255, 161, 255, 255, 255, 221, 209, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 205, 210, 207, 78, 176, 121, 190, 197, 193, 255, 255, 255, 255, 255, 31, 255, 255, 255, 255, 255, 255, 255, 156, 236, 94, 90, 167, 88, 84, 198, 95, 95, 186, 227, 118, 201, 153, 237, 217, 196, 195, 232, 131, 177, 226, 173, 17, 226, 137, 137, 212, 111, 113, 178, 140, 113, 226, 112, 114, 207, 111, 114, 147, 111, 116, 206, 112, 163, 205, 97, 9, 201, 206, 113, 196, 96, 223, 191, 161, 38, 190, 87, 89, 186, 80, 80, 192, 61, 78, 183, 77, 77, 176, 72, 77, 169, 65, 69, 152, 147, 73, 209, 57, 68, 206, 49, 120, 110, 45, 59, 221, 37, 59, 92, 17, 62, 33, 222, 224, 91, 255, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 255, 255, 255, 255, 255, 255, 255, 255, 13, 255, 255, 255, 255, 104, 133, 136, 135, 130, 119, 107, 123, 37, 181, 189, 183, 240, 242, 241, 255, 255, 255, 255, 255, 255, 67, 227, 230, 94, 90, 172, 84, 148, 241, 92, 86, 183, 95, 93, 188, 95, 92, 195, 110, 110, 201, 121, 119, 204, 102, 104, 67, 106, 203, 86, 102, 104, 201, 104, 106, 201, 106, 97, 201, 103, 110, 202, 114, 39, 199, 106, 208, 199, 103, 110, 198, 23, 102, 189, 90, 94, 187, 227, 208, 221, 188, 18, 211, 80, 32, 179, 76, 74, 171, 71, 75, 158, 69, 78, 146, 48, 74, 130, 54, 68, 81, 45, 59, 106, 41, 53, 94, 44, 61, 97, 166, 174, 119, 255, 255, 192, 255, 24, 45, 255, 66, 255, 255, 242, 255, 255, 255, 255, 255, 123, 125, 248, 255, 255, 87, 12, 62, 255, 255, 255, 2, 255, 255, 175, 188, 181, 107, 133, 119, 254, 142, 129, 98, 121, 64, 34, 119, 109, 143, 155, 146, 228, 231, 229, 255, 255, 255, 227, 227, 231, 111, 108, 178, 222, 77, 168, 83, 81, 176, 87, 83, 182, 88, 86, 226, 87, 87, 186, 86, 62, 183, 88, 91, 185, 163, 90, 187, 61, 160, 189, 93, 98, 188, 123, 102, 192, 95, 102, 192, 99, 106, 194, 97, 102, 190, 93, 96, 203, 88, 90, 183, 81, 81, 180, 81, 79, 182, 120, 73, 174, 70, 230, 161, 69, 77, 152, 64, 75, 113, 59, 73, 126, 50, 65, 113, 45, 61, 76, 61, 79, 113, 193, 125, 205, 255, 255, 255, 255, 255, 244, 255, 255, 255, 255, 255, 255, 103, 55, 255, 255, 255, 255, 176, 255, 255, 242, 255, 255, 255, 255, 187, 255, 255, 255, 255, 255, 255, 255, 255, 51, 103, 124, 172, 104, 134, 121, 122, 160, 145, 114, 136, 123, 105, 141, 32, 112, 127, 117, 147, 158, 150, 230, 233, 231, 214, 255, 255, 206, 205, 219, 127, 126, 180, 82, 73, 158, 77, 74, 163, 75, 74, 159, 76, 183, 158, 113, 4, 175, 126, 129, 180, 107, 109, 142, 137, 84, 170, 212, 90, 176, 88, 94, 181, 90, 228, 183, 91, 251, 182, 91, 95, 182, 85, 87, 178, 80, 80, 175, 79, 51, 170, 75, 72, 161, 65, 220, 152, 156, 78, 144, 59, 70, 128, 50, 67, 75, 81, 237, 102, 102, 114, 140, 222, 223, 224, 255, 179, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 255, 255, 142, 255, 255, 145, 255, 255, 16, 255, 255, 255, 255, 255, 255, 255, 255, 107, 15, 255, 255, 255, 255, 49, 255, 255, 255, 200, 207, 202, 166, 118, 105, 104, 133, 119, 109, 136, 122, 18, 150, 133, 104, 127, 114, 162, 149, 141, 133, 145, 136, 174, 182, 18, 249, 249, 249, 255, 69, 255, 255, 255, 255, 255, 255, 255, 55, 255, 255, 255, 255, 104, 179, 187, 182, 236, 124, 113, 132, 119, 119, 142, 142, 142, 167, 135, 184, 79, 85, 166, 81, 87, 170, 84, 90, 169, 84, 88, 169, 80, 86, 167, 3, 77, 3, 71, 3, 154, 63, 73, 144, 61, 69, 140, 106, 211, 127, 52, 67, 3, 87, 84, 133, 193, 108, 200, 255, 162, 170, 255, 255, 192, 210, 194, 70, 255, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 255, 255, 72, 255, 255, 255, 255, 255, 255, 118, 134, 123, 209, 130, 116, 103, 130, 116, 109, 46, 131, 98, 121, 108, 202, 159, 90, 99, 121, 108, 98, 115, 103, 101, 117, 106, 126, 109, 169, 196, 202, 198, 233, 235, 233, 220, 224, 221, 135, 148, 140, 210, 107, 95, 58, 139, 127, 183, 101, 104, 117, 117, 117, 255, 255, 255, 190, 204, 206, 98, 147, 157, 244, 80, 153, 74, 76, 149, 73, 78, 146, 68, 75, 141, 63, 103, 136, 58, 67, 127, 91, 100, 137, 140, 65, 157, 223, 224, 224, 158, 255, 255, 255, 255, 255, 255, 255, 49, 65, 255, 212, 255, 255, 255, 255, 229, 241, 255, 255, 255, 255, 230, 255, 255, 255, 255, 255, 157, 255, 255, 255, 255, 255, 20, 255, 255, 255, 255, 21, 255, 255, 33, 255, 255, 255, 255, 255, 255, 255, 51, 255, 255, 37, 215, 219, 245, 94, 58, 99, 107, 144, 128, 103, 129, 115, 105, 139, 232, 122, 163, 146, 103, 130, 116, 105, 135, 121, 97, 125, 111, 91, 110, 148, 91, 107, 96, 92, 108, 96, 91, 108, 96, 90, 95, 95, 120, 135, 125, 255, 255, 255, 91, 77, 104, 44, 44, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 210, 211, 176, 187, 254, 177, 187, 190, 176, 187, 189, 197, 202, 203, 104, 254, 254, 254, 254, 255, 255, 148, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 255, 255, 255, 161, 255, 255, 255, 255, 255, 255, 255, 226, 255, 255, 255, 255, 255, 255, 205, 255, 255, 255, 255, 255, 255, 255, 197, 255, 255, 255, 255, 255, 64, 255, 255, 255, 48, 255, 255, 255, 255, 255, 255, 170, 143, 134, 230, 113, 63, 115, 157, 174, 102, 129, 115, 107, 130, 118, 107, 138, 157, 122, 166, 243, 122, 161, 145, 163, 163, 118, 122, 163, 146, 111, 146, 131, 93, 110, 98, 135, 147, 139, 119, 255, 255, 255, 255, 220, 105, 117, 122, 30, 30, 30, 188, 188, 188, 255, 255, 255, 255, 255, 120, 255, 255, 131, 255, 152, 255, 255, 255, 92, 255, 255, 255, 255, 53, 255, 50, 255, 255, 48, 255, 255, 255, 255, 255, 255, 255, 169, 255, 97, 255, 255, 255, 255, 255, 255, 159, 255, 255, 255, 255, 255, 255, 255, 255, 167, 255, 255, 255, 255, 255, 11, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 255, 255, 255, 255, 255, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 255, 255, 57, 115, 103, 98, 123, 109, 142, 144, 158, 102, 130, 136, 104, 183, 201, 219, 126, 112, 100, 124, 110, 100, 126, 111, 100, 128, 150, 95, 167, 100, 178, 186, 180, 255, 255, 255, 255, 255, 52, 255, 255, 255, 144, 156, 160, 28, 32, 33, 62, 62, 62, 255, 255, 255, 255, 255, 255, 255, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 75, 153, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 142, 194, 255, 255, 255, 255, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 255, 255, 255, 255, 109, 255, 255, 255, 255, 147, 255, 255, 242, 243, 210, 115, 111, 99, 97, 120, 203, 113, 150, 133, 128, 154, 141, 108, 101, 124, 115, 157, 140, 27, 147, 130, 97, 112, 101, 177, 189, 183, 255, 255, 255, 255, 255, 22, 255, 255, 136, 255, 255, 255, 225, 94, 35, 73, 89, 95, 25, 25, 25, 189, 189, 189, 183, 255, 255, 255, 255, 255, 128, 255, 255, 58, 255, 255, 255, 255, 255, 255, 255, 0, 139, 255, 202, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 255, 255, 255, 255, 255, 255, 255, 4, 255, 255, 255, 208, 255, 255, 255, 153, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 255, 255, 255, 255, 255, 255, 255, 255, 238, 255, 255, 255, 255, 167, 21, 255, 255, 255, 221, 188, 183, 18, 113, 99, 185, 125, 112, 115, 156, 139, 106, 144, 126, 95, 116, 103, 56, 113, 101, 178, 186, 180, 255, 219, 255, 255, 255, 255, 255, 255, 27, 255, 255, 131, 255, 255, 255, 234, 255, 255, 104, 119, 126, 36, 54, 227, 78, 119, 78, 190, 240, 240, 15, 255, 255, 255, 255, 181, 255, 255, 33, 255, 255, 18, 255, 36, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 255, 255, 255, 255, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 255, 255, 255, 255, 194, 56, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 146, 255, 255, 255, 255, 119, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59, 220, 255, 255, 255, 203, 85, 204, 132, 145, 136, 109, 123, 113, 101, 117, 106, 142, 153, 145, 243, 245, 244, 255, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 255, 10, 49, 160, 170, 174, 77, 93, 100, 78, 78, 78, 244, 244, 244, 255, 255, 255, 255, 255, 255, 255, 255, 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54, 255, 255, 255, 219, 255, 255, 255, 214, 255, 17, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 118, 255, 255, 255, 255, 255, 255, 255, 193, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 255, 255, 255, 255, 255, 255, 255, 214, 255, 255, 255, 163, 255, 255, 255, 255, 255, 255, 255, 255, 99, 255, 255, 255, 245, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 76, 255, 255, 255, 255, 255, 255, 255, 75, 255, 255, 255, 255, 255, 255, 255, 192, 255, 255, 109, 255, 255, 255, 221, 222, 222, 249, 174, 249, 255, 255, 255, 255, 255, 135, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 215, 255, 255, 255, 255, 255, 157, 255, 255, 255, 255, 255, 136, 255, 255, 255, 108, 255, 255, 255, 255, 255, 255, 255, 88, 255, 255, 255, 37, 255, 255, 255, 255, 255, 255, 255, 139, 255, 255, 255, 105, 255, 10, 255, 66, 255, 255, 95, 255, 255, 255, 255, 255, 132, 255, 211, 255, 255, 255, 255, 255, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 236, 255, 255, 151, 255, 255, 103, 255, 255, 35, 255, 255, 255, 255, 255, 255, 255, 60, 255, 202, 255, 255, 255, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155, 255, 255, 255, 255, 166, 255, 255, 167, 255, 255, 255, 255, 255, 255, 252, 255, 34, 255, 255, 255, 10, 255, 255, 255, 224, 255, 250, 255, 255, 255, 255, 255, 255, 50, 255, 255, 255, 123, 255, 255, 189, 255, 57, 255, 255, 255, 141, 255, 134, 255, 255, 255, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 255, 255, 213, 255, 255, 255, 211, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 12, 255, 255, 255, 148, 255, 61, 255, 255, 255, 155, 255, 30, 255, 255, 255, 255, 255, 115, 255, 255, 25, 255, 255, 255, 141, 117, 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 255, 255, 255, 255, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 33, 255, 255, 255, 255, 255, 255, 178, 255, 90, 255, 255, 255, 255, 255, 255, 255, 255, 217, 255, 255, 61, 255, 255, 255, 255, 255, 255, 142, 255, 255, 255, 255, 115, 251, 105, 255, 181, 255, 218, 255, 255, 29, 255, 255, 255, 255, 255, 255, 57, 255, 164, 255, 255, 255, 36, 255, 255, 255, 255, 255, 255, 255, 174, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, 255, 255, 255, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 255, 255, 255, 255, 255, 6, 255, 255, 249, 255, 133, 255, 61, 255, 255, 188, 255, 255, 255, 255, 254, 255, 255, 255, 145, 255, 255, 255, 255, 255, 255, 235, 255, 255, 255, 242, 255, 255, 16, 255, 255, 255, 255, 255, 255, 255, 46, 60, 255, 255, 255, 255, 255, 255, 255, 98, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 41, 255, 255, 90, 255, 255, 255, 255, 255, 255, 255, 98, 213, 255, 168, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 143, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 6, 255, 255, 255, 255, 255, 255, 255, 255, 37, 164, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 255, 255, 92, 255, 255, 255, 255, 255, 255, 6, 227, 255, 255, 255, 255, 255, 255, 120, 255, 123, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 152, 255, 255, 99, 255, 255, 255, 255, 255, 255, 71, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 76, 255, 255, 255, 255, 255, 255, 215, 255, 255, 145, 255, 247, 255, 255, 81, 255, 194, 255, 50, 216, 255, 255, 255, 255, 255, 142, 255, 255, 255, 255, 255, 255, 255, 255, 78, 255, 255, 255, 255, 255, 255, 82, 255, 6, 255, 255, 255, 255, 255, 97, 255, 255, 255, 123, 255, 255, 255, 141, 238, 255, 133, 255, 255, 255, 234, 0, 255, 244, 255, 76, 255, 255, 255, 255, 255, 255, 242, 255, 54, 50, 48, 77, 80, 255, 255, 255, 255, 255, 255, 255, 167, 255, 255, 148, 255, 255, 255, 116, 255, 255, 150, 255, 255, 195, 255, 255, 255, 211, 49, 255, 255, 255, 255, 255, 255, 22, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 237, 255, 255, 255, 255, 24, 255, 255, 255, 255, 255, 255, 255, 255, 183, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 178, 255, 255, 45, 156, 255, 255, +255, 255, 61, 255, 255, 255, 217, 255, 255, 255, 56, 255, 255, 255, 255, 114, 255, 255, 255, 255, 255, 255, 255, 58, 255, 255, 255, 255, 130, 239, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 234, 255, 255 +}; + +#endif diff --git a/gdk-pixbuf/test-loaders.c b/gdk-pixbuf/test-loaders.c index 5286f020d6..68db054798 100644 --- a/gdk-pixbuf/test-loaders.c +++ b/gdk-pixbuf/test-loaders.c @@ -358,10 +358,6 @@ main (int argc, char **argv) { int seed; - /* Set a malloc which emulates low mem */ - max_allocation = G_MAXINT; - g_mem_set_vtable (&limited_table); - if (argc > 1) seed = atoi (argv[1]); else @@ -370,6 +366,10 @@ main (int argc, char **argv) write_seed (seed); } g_random_set_seed (seed); + + /* Set a malloc which emulates low mem */ + max_allocation = G_MAXINT; + g_mem_set_vtable (&limited_table); g_type_init (); g_log_set_always_fatal (G_LOG_LEVEL_WARNING | G_LOG_LEVEL_ERROR | G_LOG_LEVEL_CRITICAL); @@ -411,7 +411,7 @@ main (int argc, char **argv) TEST (tiff1_test_1, FALSE); TEST (tiff1_test_2, FALSE); #if 0 - TEST (tiff1_test_3, FALSE); /* Segfault in TIFFReadDirectory with libtiff 3.5.5, fixed in 3.5.7 */ + TEST (tiff1_test_3, FALSE); /* Segfault in TIFFReadDirectory */ #endif TEST (valid_tga_test, TRUE); @@ -421,7 +421,11 @@ main (int argc, char **argv) TEST (wbmp_test_1, FALSE); TEST (wbmp_test_2, FALSE); - + + TEST (invalid_bmp_1, FALSE); + + TEST (valid_ras_test, TRUE); + TEST_RANDOM (GIF_HEADER, 150, FALSE); TEST_RANDOM (PNG_HEADER, 1100, FALSE); TEST_RANDOM (JPEG_HEADER, 800, FALSE); @@ -435,8 +439,9 @@ main (int argc, char **argv) TEST_RANDOM (BMP_HEADER, 150, FALSE); #define XPM_HEADER '/', '*', ' ', 'X', 'P', 'M', ' ', '*', '/' TEST_RANDOM (XPM_HEADER, 150, FALSE); - - +#define RAS_HEADER 0x59, 0xA6, 0x6A, 0x95 + TEST_RANDOM (RAS_HEADER, 300, FALSE); + TEST_RANDOMLY_MODIFIED (valid_tiff1_test, FALSE); TEST_RANDOMLY_MODIFIED (valid_gif_test, FALSE); TEST_RANDOMLY_MODIFIED (valid_png_test, FALSE); @@ -445,8 +450,9 @@ main (int argc, char **argv) TEST_RANDOMLY_MODIFIED (valid_ico_test, FALSE); TEST_RANDOMLY_MODIFIED (valid_bmp_test, FALSE); TEST_RANDOMLY_MODIFIED (valid_xpm_test, FALSE); + TEST_RANDOMLY_MODIFIED (valid_ras_test, FALSE); + TEST_RANDOMLY_MODIFIED (valid_ppm_4, FALSE); - /* memory tests */ /* How do the loaders behave when memory is low? |