Merge lp:~myro-cpp-dev/myro-c++/cimg-backend into lp:myro-c++

Proposed by John Hoare
Status: Merged
Merge reported by: John Hoare
Merged at revision: not available
Proposed branch: lp:~myro-cpp-dev/myro-c++/cimg-backend
Merge into: lp:myro-c++
Diff against target: 75520 lines (+73666/-916)
109 files modified
CHANGELOG.txt (+2/-0)
CMakeLists.txt (+14/-9)
README-Cygwin.txt (+0/-19)
README.txt (+0/-2)
headers/CImg/CImg.h (+40837/-0)
headers/CImg/CMakeLists.txt (+2/-0)
headers/CImg/jpeg_buffer.h (+374/-0)
headers/CMakeLists.txt (+3/-1)
headers/ColorPicture.h (+4/-0)
headers/Graphics.h (+351/-0)
headers/GrayPicture.h (+3/-0)
headers/Myro.h (+2/-0)
headers/MyroCImg.h (+34/-0)
headers/MyroForwardDec.h (+0/-4)
headers/MyroInternals.h (+81/-37)
headers/Picture.h (+24/-5)
headers/VideoStream.h (+2/-9)
headers/jmemsrc.h (+1/-1)
jpeg/CMakeLists.txt (+38/-0)
jpeg/Makefile (+118/-0)
jpeg/README (+385/-0)
jpeg/change.log (+217/-0)
jpeg/coderules.doc (+118/-0)
jpeg/filelist.doc (+210/-0)
jpeg/jcapimin.c (+280/-0)
jpeg/jcapistd.c (+161/-0)
jpeg/jccoefct.c (+449/-0)
jpeg/jccolor.c (+459/-0)
jpeg/jcdctmgr.c (+387/-0)
jpeg/jchuff.c (+909/-0)
jpeg/jcinit.c (+72/-0)
jpeg/jcmainct.c (+293/-0)
jpeg/jcmarker.c (+664/-0)
jpeg/jcmaster.c (+590/-0)
jpeg/jcomapi.c (+106/-0)
jpeg/jconfig.doc (+155/-0)
jpeg/jcparam.c (+610/-0)
jpeg/jcphuff.c (+833/-0)
jpeg/jcprepct.c (+354/-0)
jpeg/jcsample.c (+519/-0)
jpeg/jctrans.c (+388/-0)
jpeg/jdapimin.c (+395/-0)
jpeg/jdapistd.c (+275/-0)
jpeg/jdatadst.c (+151/-0)
jpeg/jdatasrc.c (+212/-0)
jpeg/jdcoefct.c (+736/-0)
jpeg/jdcolor.c (+396/-0)
jpeg/jddctmgr.c (+269/-0)
jpeg/jdhuff.c (+651/-0)
jpeg/jdinput.c (+381/-0)
jpeg/jdmainct.c (+512/-0)
jpeg/jdmarker.c (+1360/-0)
jpeg/jdmaster.c (+557/-0)
jpeg/jdmerge.c (+400/-0)
jpeg/jdphuff.c (+668/-0)
jpeg/jdpostct.c (+290/-0)
jpeg/jdsample.c (+478/-0)
jpeg/jdtrans.c (+143/-0)
jpeg/jerror.c (+253/-0)
jpeg/jfdctflt.c (+168/-0)
jpeg/jfdctfst.c (+224/-0)
jpeg/jfdctint.c (+283/-0)
jpeg/jidctflt.c (+242/-0)
jpeg/jidctfst.c (+368/-0)
jpeg/jidctint.c (+389/-0)
jpeg/jidctred.c (+398/-0)
jpeg/jmemmgr.c (+1118/-0)
jpeg/jmemnobs.c (+109/-0)
jpeg/jquant1.c (+856/-0)
jpeg/jquant2.c (+1310/-0)
jpeg/jutils.c (+179/-0)
jpeg/libjpeg.doc (+3006/-0)
jpeg/makedepend (+94/-0)
jpeg/makefile.wat (+67/-0)
jpeg/myrojpeg/CMakeLists.txt (+1/-0)
jpeg/myrojpeg/myrojchuff.h (+47/-0)
jpeg/myrojpeg/myrojconfig.h (+50/-0)
jpeg/myrojpeg/myrojdct.h (+176/-0)
jpeg/myrojpeg/myrojdhuff.h (+201/-0)
jpeg/myrojpeg/myrojerror.h (+291/-0)
jpeg/myrojpeg/myrojinclude.h (+91/-0)
jpeg/myrojpeg/myrojmemsys.h (+198/-0)
jpeg/myrojpeg/myrojmorecfg.h (+316/-0)
jpeg/myrojpeg/myrojpegint.h (+392/-0)
jpeg/myrojpeg/myrojpeglib.h (+1096/-0)
jpeg/myrojpeg/myrojversion.h (+14/-0)
jpeg/structure.doc (+948/-0)
jpeg/usage.doc (+562/-0)
jpeg/wizard.doc (+211/-0)
src/CMakeLists.txt (+5/-7)
src/ColorPicture.cpp (+37/-271)
src/Graphics.cpp (+588/-0)
src/GrayPicture.cpp (+20/-258)
src/Myro.cpp (+0/-6)
src/MyroInternals.cpp (+194/-112)
src/Picture.cpp (+7/-4)
src/VideoStream.cpp (+24/-166)
src/jmemsrc.c (+2/-2)
src/xcolors.cpp (+860/-0)
test/CMakeLists.txt (+7/-2)
test/Makefile (+7/-1)
test/graphics/CMakeLists.txt (+7/-0)
test/graphics/circles.cpp (+26/-0)
test/graphics/graphwin_test.cpp (+74/-0)
test/graphics/polygon_test.cpp (+30/-0)
test/graphics/robot_joystick.cpp (+54/-0)
test/take_snapshot.cpp (+55/-0)
test/test_camera_fourwindow.cpp (+45/-0)
test/test_camera_nonblocking.cpp (+43/-0)
To merge this branch: bzr merge lp:~myro-cpp-dev/myro-c++/cimg-backend
Reviewer Review Type Date Requested Status
Myro-C++-Developers Pending
Review via email: mp+61017@code.launchpad.net

Description of the change

Changed backend to CImg, added Graphics Drawing Library. Added a rudimentary joystick control program using the Drawing Library.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CHANGELOG.txt'
2--- CHANGELOG.txt 2011-03-26 19:06:15 +0000
3+++ CHANGELOG.txt 2011-05-15 12:49:22 +0000
4@@ -1,4 +1,6 @@
5 2.3.0 (bzr-trunk)
6+ - Added Graphics Drawing Library
7+ - Switched from using FLTK to CImg library (included with myro-c++).
8 - Changed it so the connect() functions on the robot can take a string to hard-code into your code the commport of your robot.
9 - Fixed Bug where robot.setName() dropped the 9th character.
10
11
12=== modified file 'CMakeLists.txt'
13--- CMakeLists.txt 2011-01-27 22:54:33 +0000
14+++ CMakeLists.txt 2011-05-15 12:49:22 +0000
15@@ -21,15 +21,20 @@
16 SET(CPACK_PACKAGE_VERSION_PATCH "${MYRO_PKG_VER_PATCH}")
17 INCLUDE(CPack)
18
19-
20-SET(FLTK_SKIP_FLUID TRUE)
21-SET(FLTK_SKIP_OPENGL TRUE)
22-SET(FLTK_SKIP_FORMS TRUE)
23-FIND_PACKAGE(FLTK REQUIRED)
24-INCLUDE_DIRECTORIES(${FLTK_INCLUDE_DIRS})
25-
26-FIND_PACKAGE(JPEG REQUIRED)
27-INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIRS})
28+IF(WIN32)
29+SET(GUI_LIBRARIES gdi32)
30+#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Dcimg_OS=2")
31+ELSE(WIN32)
32+FIND_PACKAGE(X11 REQUIRED)
33+SET(GUI_LIBRARIES ${X11_LIBRARIES})
34+ENDIF(WIN32)
35+
36+
37+# Build included libjpeg library...
38+#FIND_PACKAGE(JPEG REQUIRED)
39+#INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIRS})
40+add_subdirectory(jpeg)
41+INCLUDE_DIRECTORIES(${MYROCPPJPEG_SOURCE_DIR})
42
43
44 #set(Boost_DEBUG TRUE)
45
46=== removed file 'README-Cygwin.txt'
47--- README-Cygwin.txt 2010-12-24 21:31:17 +0000
48+++ README-Cygwin.txt 1970-01-01 00:00:00 +0000
49@@ -1,19 +0,0 @@
50-Building On Cygwin
51-==================
52-
53-As per main readme, building on cygwin requires the same dependencies:
54-
55- * Boost Threads (www.boost.org)
56- * FLTK 1.1 (www.fltk.org)
57- * libjpeg (www.ijg.org)
58-
59-Cygwin Known Issues
60-===================
61-
62- 1.) For the drawing elements to work, you must compile myro-cpp with the
63- version of fltk that uses the X11 window system (i.e. not native
64- windows drawing)
65- 2.) VideoStream will not function (as in the myro_video_stream,
66- myro_test_blob test executables) if the program is waiting on
67- console I/O. However, if a sleep() is inserted, instead of
68- cin >> foo; The VideoStream element will work fine.
69
70=== modified file 'README.txt'
71--- README.txt 2010-12-24 21:31:17 +0000
72+++ README.txt 2011-05-15 12:49:22 +0000
73@@ -32,8 +32,6 @@
74 Myro-Cpp depends on the following software Libraries:
75
76 * Boost Threads (www.boost.org)
77- * FLTK 1.1 (www.fltk.org)
78- * libjpeg (www.ijg.org)
79
80 Questions
81 =========
82
83=== added directory 'headers/CImg'
84=== added file 'headers/CImg/CImg.h'
85--- headers/CImg/CImg.h 1970-01-01 00:00:00 +0000
86+++ headers/CImg/CImg.h 2011-05-15 12:49:22 +0000
87@@ -0,0 +1,40837 @@
88+/*
89+ #
90+ # File : CImg.h
91+ # ( C++ header file )
92+ #
93+ # Description : The C++ Template Image Processing Toolkit.
94+ # This file is the main component of the CImg Library project.
95+ # ( http://cimg.sourceforge.net )
96+ #
97+ # Project manager : David Tschumperle.
98+ # ( http://www.greyc.ensicaen.fr/~dtschump/ )
99+ #
100+ # The complete list of contributors is available in file 'README.txt'
101+ # distributed within the CImg package.
102+ #
103+ # Licenses : This file is 'dual-licensed', you have to choose one
104+ # of the two licenses below to apply.
105+ #
106+ # CeCILL-C
107+ # The CeCILL-C license is close to the GNU LGPL.
108+ # ( http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html )
109+ #
110+ # or CeCILL v2.0
111+ # The CeCILL license is compatible with the GNU GPL.
112+ # ( http://www.cecill.info/licences/Licence_CeCILL_V2-en.html )
113+ #
114+ # This software is governed either by the CeCILL or the CeCILL-C license
115+ # under French law and abiding by the rules of distribution of free software.
116+ # You can use, modify and or redistribute the software under the terms of
117+ # the CeCILL or CeCILL-C licenses as circulated by CEA, CNRS and INRIA
118+ # at the following URL : "http://www.cecill.info".
119+ #
120+ # As a counterpart to the access to the source code and rights to copy,
121+ # modify and redistribute granted by the license, users are provided only
122+ # with a limited warranty and the software's author, the holder of the
123+ # economic rights, and the successive licensors have only limited
124+ # liability.
125+ #
126+ # In this respect, the user's attention is drawn to the risks associated
127+ # with loading, using, modifying and/or developing or reproducing the
128+ # software by the user in light of its specific status of free software,
129+ # that may mean that it is complicated to manipulate, and that also
130+ # therefore means that it is reserved for developers and experienced
131+ # professionals having in-depth computer knowledge. Users are therefore
132+ # encouraged to load and test the software's suitability as regards their
133+ # requirements in conditions enabling the security of their systems and/or
134+ # data to be ensured and, more generally, to use and operate it in the
135+ # same conditions as regards security.
136+ #
137+ # The fact that you are presently reading this means that you have had
138+ # knowledge of the CeCILL and CeCILL-C licenses and that you accept its terms.
139+ #
140+*/
141+
142+// Define version number of the library file.
143+#ifndef cimg_version
144+#define cimg_version 148
145+
146+/*-----------------------------------------------------------
147+ #
148+ # Test and auto-set CImg configuration variables
149+ # and include required headers.
150+ #
151+ # If you find that default configuration variables are
152+ # not adapted to your case, you can override their values
153+ # before including the header file "CImg.h"
154+ # (use the #define directive).
155+ #
156+ ------------------------------------------------------------*/
157+
158+// Include required standard C++ headers.
159+#include <cstdio>
160+#include <cstdlib>
161+#include <cstdarg>
162+#include <cstring>
163+#include <cmath>
164+#include <ctime>
165+#include <exception>
166+
167+// Operating system configuration.
168+//
169+// Define 'cimg_OS' to : '0' for an unknown OS (will try to minize library dependancies).
170+// '1' for a Unix-like OS (Linux, Solaris, BSD, MacOSX, Irix, ...).
171+// '2' for Microsoft Windows.
172+// (autodetection is done by default).
173+#ifndef cimg_OS
174+#if defined(unix) || defined(__unix) || defined(__unix__) \
175+ || defined(linux) || defined(__linux) || defined(__linux__) \
176+ || defined(sun) || defined(__sun) \
177+ || defined(BSD) || defined(__OpenBSD__) || defined(__NetBSD__) \
178+ || defined(__FreeBSD__) || defined __DragonFly__ \
179+ || defined(sgi) || defined(__sgi) \
180+ || defined(__MACOSX__) || defined(__APPLE__) \
181+ || defined(__CYGWIN__)
182+#define cimg_OS 1
183+#elif defined(_MSC_VER) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) \
184+ || defined(WIN64) || defined(_WIN64) || defined(__WIN64__)
185+#define cimg_OS 2
186+#else
187+#define cimg_OS 0
188+#endif
189+#elif !(cimg_OS==0 || cimg_OS==1 || cimg_OS==2)
190+#error CImg Library : Configuration variable 'cimg_OS' is badly defined.
191+#error (valid values are '0 = unknown OS', '1 = Unix-like OS', '2 = Microsoft Windows').
192+#endif
193+
194+// Disable silly warnings on Microsoft VC++ compilers.
195+#ifdef _MSC_VER
196+#pragma warning(push)
197+#pragma warning(disable:4311)
198+#pragma warning(disable:4312)
199+#pragma warning(disable:4800)
200+#pragma warning(disable:4804)
201+#pragma warning(disable:4996)
202+#define _CRT_SECURE_NO_DEPRECATE 1
203+#define _CRT_NONSTDC_NO_DEPRECATE 1
204+#endif
205+
206+// Include OS-specific headers for system management.
207+#if cimg_OS==1
208+#include <sys/types.h>
209+#include <sys/time.h>
210+#include <unistd.h>
211+#elif cimg_OS==2
212+#include <windows.h>
213+#ifndef _WIN32_IE
214+#define _WIN32_IE 0x0400
215+#endif
216+#include <shlobj.h>
217+#include <io.h>
218+#define cimg_snprintf _snprintf
219+#define cimg_vsnprintf _vsnprintf
220+#endif
221+#ifndef cimg_snprintf
222+#include <stdio.h>
223+#define cimg_snprintf snprintf
224+#define cimg_vsnprintf vsnprintf
225+#endif
226+
227+// Filename separator configuration.
228+//
229+// Default separator is '/' for Unix-based OS, and '\' or Windows.
230+#ifndef cimg_file_separator
231+#if cimg_OS==2
232+#define cimg_file_separator '\\'
233+#else
234+#define cimg_file_separator '/'
235+#endif
236+#endif
237+
238+// Output messages verbosity configuration.
239+//
240+// Define 'cimg_verbosity' to : '0' to hide library messages (quiet mode).
241+// '1' to print library messages on the console.
242+// '2' to display library messages on a dialog window (default behavior).
243+// '3' to do as '1' + add extra warnings (may slow down the code !).
244+// '4' to do as '2' + add extra warnings (may slow down the code !).
245+//
246+// Define 'cimg_strict_warnings' to replace warning messages by exception throwns.
247+//
248+// Define 'cimg_use_vt100' to allow output of color messages (require VT100-compatible terminal).
249+#ifndef cimg_verbosity
250+#define cimg_verbosity 2
251+#elif !(cimg_verbosity==0 || cimg_verbosity==1 || cimg_verbosity==2 || cimg_verbosity==3 || cimg_verbosity==4)
252+#error CImg Library : Configuration variable 'cimg_verbosity' is badly defined.
253+#error (should be { 0=quiet | 1=console | 2=dialog | 3=console+warnings | 4=dialog+warnings }).
254+#endif
255+
256+// Display framework configuration.
257+//
258+// Define 'cimg_display' to : '0' to disable display capabilities.
259+// '1' to use X-Window framework (X11).
260+// '2' to use Microsoft GDI32 framework.
261+#ifndef cimg_display
262+#if cimg_OS==0
263+#define cimg_display 0
264+#elif cimg_OS==1
265+#if defined(__MACOSX__) || defined(__APPLE__)
266+#define cimg_display 1
267+#else
268+#define cimg_display 1
269+#endif
270+#elif cimg_OS==2
271+#define cimg_display 2
272+#endif
273+#elif !(cimg_display==0 || cimg_display==1 || cimg_display==2)
274+#error CImg Library : Configuration variable 'cimg_display' is badly defined.
275+#error (should be { 0=none | 1=X-Window (X11) | 2=Microsoft GDI32 }).
276+#endif
277+
278+// Include display-specific headers.
279+#if cimg_display==1
280+#include <X11/Xlib.h>
281+#include <X11/Xutil.h>
282+#include <X11/keysym.h>
283+#include <pthread.h>
284+#ifdef cimg_use_xshm
285+#include <sys/ipc.h>
286+#include <sys/shm.h>
287+#include <X11/extensions/XShm.h>
288+#endif
289+#ifdef cimg_use_xrandr
290+#include <X11/extensions/Xrandr.h>
291+#endif
292+#ifndef cimg_display_classname
293+#define cimg_display_classname "CImg"
294+#endif
295+#endif
296+
297+// OpenMP configuration.
298+// (http://www.openmp.org)
299+//
300+// Define 'cimg_use_openmp' to enable OpenMP support.
301+//
302+// OpenMP directives can be used in few CImg functions to get
303+// advantages of multi-core CPUs. Using OpenMP is not mandatory.
304+#ifdef cimg_use_openmp
305+#include "omp.h"
306+#define _cimg_static
307+#else
308+#define _cimg_static static
309+#endif
310+
311+// OpenCV configuration
312+// (http://opencv.willowgarage.com/wiki/)
313+//
314+// Define 'cimg_use_opencv' to enable OpenCV support.
315+//
316+// OpenCV can be used to retrieve images from cameras
317+// (with function 'CImg<T>::load_camera()'.
318+// Using OpenCV is not mandatory.
319+#ifdef cimg_use_opencv
320+#include "cv.h"
321+#include "highgui.h"
322+#endif
323+
324+// LibPNG configuration.
325+// (http://www.libpng.org)
326+//
327+// Define 'cimg_use_png' to enable LibPNG support.
328+//
329+// LibPNG can be used in functions 'CImg<T>::{load,save}_png()'
330+// to get a builtin support of PNG files. Using LibPNG is not mandatory.
331+#ifdef cimg_use_png
332+extern "C" {
333+#include "png.h"
334+}
335+#endif
336+
337+// LibJPEG configuration.
338+// (http://en.wikipedia.org/wiki/Libjpeg)
339+//
340+// Define 'cimg_use_jpeg' to enable LibJPEG support.
341+//
342+// LibJPEG can be used in functions 'CImg<T>::{load,save}_jpeg()'
343+// to get a builtin support of JPEG files. Using LibJPEG is not mandatory.
344+#ifdef cimg_use_jpeg
345+extern "C" {
346+#include "myrojpeg/myrojpeglib.h"
347+#include "setjmp.h"
348+}
349+#endif
350+
351+// LibTIFF configuration.
352+// (http://www.libtiff.org)
353+//
354+// Define 'cimg_use_tiff' to enable LibTIFF support.
355+//
356+// LibTIFF can be used in functions 'CImg[List]<T>::{load,save}_tiff()'
357+// to get a builtin support of TIFF files. Using LibTIFF is not mandatory.
358+#ifdef cimg_use_tiff
359+extern "C" {
360+#include "tiffio.h"
361+}
362+#endif
363+
364+// LibMINC2 configuration.
365+// (http://en.wikibooks.org/wiki/MINC/Reference/MINC2.0_File_Format_Reference)
366+//
367+// Define 'cimg_use_minc2' to enable LibMINC2 support.
368+//
369+// LibMINC2 can be used in functions 'CImg<T>::{load,save}_minc2()'
370+// to get a builtin support of MINC2 files. Using LibMINC2 is not mandatory.
371+#ifdef cimg_use_minc2
372+extern "C" {
373+#include "minc2.h"
374+}
375+#endif
376+
377+// FFMPEG Avcodec and Avformat libraries configuration.
378+// (http://www.ffmpeg.org)
379+//
380+// Define 'cimg_use_ffmpeg' to enable FFMPEG lib support.
381+//
382+// Avcodec and Avformat libraries can be used in functions
383+// 'CImg[List]<T>::load_ffmpeg()' to get a builtin
384+// support of various image sequences files.
385+// Using FFMPEG libraries is not mandatory.
386+#ifdef cimg_use_ffmpeg
387+#if (defined(_STDINT_H) || defined(_STDINT_H_)) && !defined(UINT64_C)
388+#warning "__STDC_CONSTANT_MACROS has to be defined before including <stdint.h>, this file will probably not compile."
389+#endif
390+#ifndef __STDC_CONSTANT_MACROS
391+#define __STDC_CONSTANT_MACROS // ...or stdint.h doesn't define UINT64_C, needed for libavutil
392+#endif
393+extern "C" {
394+#include "avformat.h"
395+#include "avcodec.h"
396+#include "swscale.h"
397+}
398+#endif
399+
400+// Zlib configuration
401+// (http://www.zlib.net)
402+//
403+// Define 'cimg_use_zlib' to enable Zlib support.
404+//
405+// Zlib can be used in functions 'CImg[List]<T>::{load,save}_cimg()'
406+// to allow compressed data in '.cimg' files. Using Zlib is not mandatory.
407+#ifdef cimg_use_zlib
408+extern "C" {
409+#include "zlib.h"
410+}
411+#endif
412+
413+// Magick++ configuration.
414+// (http://www.imagemagick.org/Magick++)
415+//
416+// Define 'cimg_use_magick' to enable Magick++ support.
417+//
418+// Magick++ library can be used in functions 'CImg<T>::{load,save}()'
419+// to get a builtin support of various image formats (PNG,JPEG,TIFF,...).
420+// Using Magick++ is not mandatory.
421+#ifdef cimg_use_magick
422+#include "Magick++.h"
423+#endif
424+
425+// FFTW3 configuration.
426+// (http://www.fftw.org)
427+//
428+// Define 'cimg_use_fftw3' to enable libFFTW3 support.
429+//
430+// FFTW3 library can be used in functions 'CImg[List]<T>::FFT()' to
431+// efficiently compute the Fast Fourier Transform of image data.
432+#ifdef cimg_use_fftw3
433+extern "C" {
434+#include "fftw3.h"
435+}
436+#endif
437+
438+// Board configuration
439+// (http://libboard.sourceforge.net/)
440+//
441+// Define 'cimg_use_board' to enable Board support.
442+//
443+// Board library can be used in functions 'CImg<T>::draw_object3d()'
444+// to draw objects 3d in vector-graphics canvas that can be saved
445+// as .PS or .SVG files afterwards.
446+#ifdef cimg_use_board
447+#ifdef None
448+#undef None
449+#define _cimg_redefine_None
450+#endif
451+#include "Board.h"
452+#endif
453+
454+// OpenEXR configuration
455+// (http://www.openexr.com/)
456+//
457+// Define 'cimg_use_openexr' to enable OpenEXR support.
458+//
459+// OpenEXR can be used to read/write .exr file formats.
460+#ifdef cimg_use_openexr
461+#include "ImfRgbaFile.h"
462+#include "ImfInputFile.h"
463+#include "ImfChannelList.h"
464+#include "ImfMatrixAttribute.h"
465+#include "ImfArray.h"
466+#endif
467+
468+// Lapack configuration.
469+// (http://www.netlib.org/lapack)
470+//
471+// Define 'cimg_use_lapack' to enable LAPACK support.
472+//
473+// Lapack can be used in various CImg functions dealing with
474+// matrix computation and algorithms (eigenvalues, inverse, ...).
475+// Using Lapack is not mandatory.
476+#ifdef cimg_use_lapack
477+extern "C" {
478+ extern void sgetrf_(int*, int*, float*, int*, int*, int*);
479+ extern void sgetri_(int*, float*, int*, int*, float*, int*, int*);
480+ extern void sgetrs_(char*, int*, int*, float*, int*, int*, float*, int*, int*);
481+ extern void sgesvd_(char*, char*, int*, int*, float*, int*, float*, float*, int*, float*, int*, float*, int*, int*);
482+ extern void ssyev_(char*, char*, int*, float*, int*, float*, float*, int*, int*);
483+ extern void dgetrf_(int*, int*, double*, int*, int*, int*);
484+ extern void dgetri_(int*, double*, int*, int*, double*, int*, int*);
485+ extern void dgetrs_(char*, int*, int*, double*, int*, int*, double*, int*, int*);
486+ extern void dgesvd_(char*, char*, int*, int*, double*, int*, double*, double*, int*, double*, int*, double*, int*, int*);
487+ extern void dsyev_(char*, char*, int*, double*, int*, double*, double*, int*, int*);
488+}
489+#endif
490+
491+// Check if min/max/PI macros are defined.
492+//
493+// CImg does not compile if macros 'min', 'max' or 'PI' are defined,
494+// because min(), max() and PI labels are defined and used in the cimg:: namespace.
495+// so it '#undef' these macros if necessary, and restore them to reasonable
496+// values at the end of the file.
497+#ifdef min
498+#undef min
499+#define _cimg_redefine_min
500+#endif
501+#ifdef max
502+#undef max
503+#define _cimg_redefine_max
504+#endif
505+#ifdef PI
506+#undef PI
507+#define _cimg_redefine_PI
508+#endif
509+
510+/*------------------------------------------------------------------------------
511+ #
512+ # Define user-friendly macros.
513+ #
514+ # User macros are prefixed by 'cimg_' and can be used in your own code.
515+ # They are particularly useful for option parsing, and image loops creation.
516+ #
517+ ------------------------------------------------------------------------------*/
518+
519+// Define the program usage, and retrieve command line arguments.
520+#define cimg_usage(usage) cimg_library::cimg::option((char*)0,argc,argv,(char*)0,usage,false)
521+#define cimg_help(str) cimg_library::cimg::option((char*)0,argc,argv,str,(char*)0)
522+#define cimg_option(name,defaut,usage) cimg_library::cimg::option(name,argc,argv,defaut,usage)
523+#define cimg_argument(pos) cimg_library::cimg::argument(pos,argc,argv)
524+#define cimg_argument1(pos,s0) cimg_library::cimg::argument(pos,argc,argv,1,s0)
525+#define cimg_argument2(pos,s0,s1) cimg_library::cimg::argument(pos,argc,argv,2,s0,s1)
526+#define cimg_argument3(pos,s0,s1,s2) cimg_library::cimg::argument(pos,argc,argv,3,s0,s1,s2)
527+#define cimg_argument4(pos,s0,s1,s2,s3) cimg_library::cimg::argument(pos,argc,argv,4,s0,s1,s2,s3)
528+#define cimg_argument5(pos,s0,s1,s2,s3,s4) cimg_library::cimg::argument(pos,argc,argv,5,s0,s1,s2,s3,s4)
529+#define cimg_argument6(pos,s0,s1,s2,s3,s4,s5) cimg_library::cimg::argument(pos,argc,argv,6,s0,s1,s2,s3,s4,s5)
530+#define cimg_argument7(pos,s0,s1,s2,s3,s4,s5,s6) cimg_library::cimg::argument(pos,argc,argv,7,s0,s1,s2,s3,s4,s5,s6)
531+#define cimg_argument8(pos,s0,s1,s2,s3,s4,s5,s6,s7) cimg_library::cimg::argument(pos,argc,argv,8,s0,s1,s2,s3,s4,s5,s6,s7)
532+#define cimg_argument9(pos,s0,s1,s2,s3,s4,s5,s6,s7,s8) cimg_library::cimg::argument(pos,argc,argv,9,s0,s1,s2,s3,s4,s5,s6,s7,s8)
533+
534+// Define and manipulate local neighborhoods.
535+#define CImg_2x2(I,T) T I[4]; \
536+ T& I##cc = I[0]; T& I##nc = I[1]; \
537+ T& I##cn = I[2]; T& I##nn = I[3]; \
538+ I##cc = I##nc = \
539+ I##cn = I##nn = 0
540+
541+#define CImg_3x3(I,T) T I[9]; \
542+ T& I##pp = I[0]; T& I##cp = I[1]; T& I##np = I[2]; \
543+ T& I##pc = I[3]; T& I##cc = I[4]; T& I##nc = I[5]; \
544+ T& I##pn = I[6]; T& I##cn = I[7]; T& I##nn = I[8]; \
545+ I##pp = I##cp = I##np = \
546+ I##pc = I##cc = I##nc = \
547+ I##pn = I##cn = I##nn = 0
548+
549+#define CImg_4x4(I,T) T I[16]; \
550+ T& I##pp = I[0]; T& I##cp = I[1]; T& I##np = I[2]; T& I##ap = I[3]; \
551+ T& I##pc = I[4]; T& I##cc = I[5]; T& I##nc = I[6]; T& I##ac = I[7]; \
552+ T& I##pn = I[8]; T& I##cn = I[9]; T& I##nn = I[10]; T& I##an = I[11]; \
553+ T& I##pa = I[12]; T& I##ca = I[13]; T& I##na = I[14]; T& I##aa = I[15]; \
554+ I##pp = I##cp = I##np = I##ap = \
555+ I##pc = I##cc = I##nc = I##ac = \
556+ I##pn = I##cn = I##nn = I##an = \
557+ I##pa = I##ca = I##na = I##aa = 0
558+
559+#define CImg_5x5(I,T) T I[25]; \
560+ T& I##bb = I[0]; T& I##pb = I[1]; T& I##cb = I[2]; T& I##nb = I[3]; T& I##ab = I[4]; \
561+ T& I##bp = I[5]; T& I##pp = I[6]; T& I##cp = I[7]; T& I##np = I[8]; T& I##ap = I[9]; \
562+ T& I##bc = I[10]; T& I##pc = I[11]; T& I##cc = I[12]; T& I##nc = I[13]; T& I##ac = I[14]; \
563+ T& I##bn = I[15]; T& I##pn = I[16]; T& I##cn = I[17]; T& I##nn = I[18]; T& I##an = I[19]; \
564+ T& I##ba = I[20]; T& I##pa = I[21]; T& I##ca = I[22]; T& I##na = I[23]; T& I##aa = I[24]; \
565+ I##bb = I##pb = I##cb = I##nb = I##ab = \
566+ I##bp = I##pp = I##cp = I##np = I##ap = \
567+ I##bc = I##pc = I##cc = I##nc = I##ac = \
568+ I##bn = I##pn = I##cn = I##nn = I##an = \
569+ I##ba = I##pa = I##ca = I##na = I##aa = 0
570+
571+#define CImg_2x2x2(I,T) T I[8]; \
572+ T& I##ccc = I[0]; T& I##ncc = I[1]; \
573+ T& I##cnc = I[2]; T& I##nnc = I[3]; \
574+ T& I##ccn = I[4]; T& I##ncn = I[5]; \
575+ T& I##cnn = I[6]; T& I##nnn = I[7]; \
576+ I##ccc = I##ncc = \
577+ I##cnc = I##nnc = \
578+ I##ccn = I##ncn = \
579+ I##cnn = I##nnn = 0
580+
581+#define CImg_3x3x3(I,T) T I[27]; \
582+ T& I##ppp = I[0]; T& I##cpp = I[1]; T& I##npp = I[2]; \
583+ T& I##pcp = I[3]; T& I##ccp = I[4]; T& I##ncp = I[5]; \
584+ T& I##pnp = I[6]; T& I##cnp = I[7]; T& I##nnp = I[8]; \
585+ T& I##ppc = I[9]; T& I##cpc = I[10]; T& I##npc = I[11]; \
586+ T& I##pcc = I[12]; T& I##ccc = I[13]; T& I##ncc = I[14]; \
587+ T& I##pnc = I[15]; T& I##cnc = I[16]; T& I##nnc = I[17]; \
588+ T& I##ppn = I[18]; T& I##cpn = I[19]; T& I##npn = I[20]; \
589+ T& I##pcn = I[21]; T& I##ccn = I[22]; T& I##ncn = I[23]; \
590+ T& I##pnn = I[24]; T& I##cnn = I[25]; T& I##nnn = I[26]; \
591+ I##ppp = I##cpp = I##npp = \
592+ I##pcp = I##ccp = I##ncp = \
593+ I##pnp = I##cnp = I##nnp = \
594+ I##ppc = I##cpc = I##npc = \
595+ I##pcc = I##ccc = I##ncc = \
596+ I##pnc = I##cnc = I##nnc = \
597+ I##ppn = I##cpn = I##npn = \
598+ I##pcn = I##ccn = I##ncn = \
599+ I##pnn = I##cnn = I##nnn = 0
600+
601+#define cimg_get2x2(img,x,y,z,c,I,T) \
602+ I[0] = (T)(img)(x,y,z,c), I[1] = (T)(img)(_n1##x,y,z,c), I[2] = (T)(img)(x,_n1##y,z,c), I[3] = (T)(img)(_n1##x,_n1##y,z,c)
603+
604+#define cimg_get3x3(img,x,y,z,c,I,T) \
605+ I[0] = (T)(img)(_p1##x,_p1##y,z,c), I[1] = (T)(img)(x,_p1##y,z,c), I[2] = (T)(img)(_n1##x,_p1##y,z,c), I[3] = (T)(img)(_p1##x,y,z,c), \
606+ I[4] = (T)(img)(x,y,z,c), I[5] = (T)(img)(_n1##x,y,z,c), I[6] = (T)(img)(_p1##x,_n1##y,z,c), I[7] = (T)(img)(x,_n1##y,z,c), \
607+ I[8] = (T)(img)(_n1##x,_n1##y,z,c)
608+
609+#define cimg_get4x4(img,x,y,z,c,I,T) \
610+ I[0] = (T)(img)(_p1##x,_p1##y,z,c), I[1] = (T)(img)(x,_p1##y,z,c), I[2] = (T)(img)(_n1##x,_p1##y,z,c), I[3] = (T)(img)(_n2##x,_p1##y,z,c), \
611+ I[4] = (T)(img)(_p1##x,y,z,c), I[5] = (T)(img)(x,y,z,c), I[6] = (T)(img)(_n1##x,y,z,c), I[7] = (T)(img)(_n2##x,y,z,c), \
612+ I[8] = (T)(img)(_p1##x,_n1##y,z,c), I[9] = (T)(img)(x,_n1##y,z,c), I[10] = (T)(img)(_n1##x,_n1##y,z,c), I[11] = (T)(img)(_n2##x,_n1##y,z,c), \
613+ I[12] = (T)(img)(_p1##x,_n2##y,z,c), I[13] = (T)(img)(x,_n2##y,z,c), I[14] = (T)(img)(_n1##x,_n2##y,z,c), I[15] = (T)(img)(_n2##x,_n2##y,z,c)
614+
615+#define cimg_get5x5(img,x,y,z,c,I,T) \
616+ I[0] = (T)(img)(_p2##x,_p2##y,z,c), I[1] = (T)(img)(_p1##x,_p2##y,z,c), I[2] = (T)(img)(x,_p2##y,z,c), I[3] = (T)(img)(_n1##x,_p2##y,z,c), \
617+ I[4] = (T)(img)(_n2##x,_p2##y,z,c), I[5] = (T)(img)(_p2##x,_p1##y,z,c), I[6] = (T)(img)(_p1##x,_p1##y,z,c), I[7] = (T)(img)(x,_p1##y,z,c), \
618+ I[8] = (T)(img)(_n1##x,_p1##y,z,c), I[9] = (T)(img)(_n2##x,_p1##y,z,c), I[10] = (T)(img)(_p2##x,y,z,c), I[11] = (T)(img)(_p1##x,y,z,c), \
619+ I[12] = (T)(img)(x,y,z,c), I[13] = (T)(img)(_n1##x,y,z,c), I[14] = (T)(img)(_n2##x,y,z,c), I[15] = (T)(img)(_p2##x,_n1##y,z,c), \
620+ I[16] = (T)(img)(_p1##x,_n1##y,z,c), I[17] = (T)(img)(x,_n1##y,z,c), I[18] = (T)(img)(_n1##x,_n1##y,z,c), I[19] = (T)(img)(_n2##x,_n1##y,z,c), \
621+ I[20] = (T)(img)(_p2##x,_n2##y,z,c), I[21] = (T)(img)(_p1##x,_n2##y,z,c), I[22] = (T)(img)(x,_n2##y,z,c), I[23] = (T)(img)(_n1##x,_n2##y,z,c), \
622+ I[24] = (T)(img)(_n2##x,_n2##y,z,c)
623+
624+#define cimg_get6x6(img,x,y,z,c,I,T) \
625+ I[0] = (T)(img)(_p2##x,_p2##y,z,c), I[1] = (T)(img)(_p1##x,_p2##y,z,c), I[2] = (T)(img)(x,_p2##y,z,c), I[3] = (T)(img)(_n1##x,_p2##y,z,c), \
626+ I[4] = (T)(img)(_n2##x,_p2##y,z,c), I[5] = (T)(img)(_n3##x,_p2##y,z,c), I[6] = (T)(img)(_p2##x,_p1##y,z,c), I[7] = (T)(img)(_p1##x,_p1##y,z,c), \
627+ I[8] = (T)(img)(x,_p1##y,z,c), I[9] = (T)(img)(_n1##x,_p1##y,z,c), I[10] = (T)(img)(_n2##x,_p1##y,z,c), I[11] = (T)(img)(_n3##x,_p1##y,z,c), \
628+ I[12] = (T)(img)(_p2##x,y,z,c), I[13] = (T)(img)(_p1##x,y,z,c), I[14] = (T)(img)(x,y,z,c), I[15] = (T)(img)(_n1##x,y,z,c), \
629+ I[16] = (T)(img)(_n2##x,y,z,c), I[17] = (T)(img)(_n3##x,y,z,c), I[18] = (T)(img)(_p2##x,_n1##y,z,c), I[19] = (T)(img)(_p1##x,_n1##y,z,c), \
630+ I[20] = (T)(img)(x,_n1##y,z,c), I[21] = (T)(img)(_n1##x,_n1##y,z,c), I[22] = (T)(img)(_n2##x,_n1##y,z,c), I[23] = (T)(img)(_n3##x,_n1##y,z,c), \
631+ I[24] = (T)(img)(_p2##x,_n2##y,z,c), I[25] = (T)(img)(_p1##x,_n2##y,z,c), I[26] = (T)(img)(x,_n2##y,z,c), I[27] = (T)(img)(_n1##x,_n2##y,z,c), \
632+ I[28] = (T)(img)(_n2##x,_n2##y,z,c), I[29] = (T)(img)(_n3##x,_n2##y,z,c), I[30] = (T)(img)(_p2##x,_n3##y,z,c), I[31] = (T)(img)(_p1##x,_n3##y,z,c), \
633+ I[32] = (T)(img)(x,_n3##y,z,c), I[33] = (T)(img)(_n1##x,_n3##y,z,c), I[34] = (T)(img)(_n2##x,_n3##y,z,c), I[35] = (T)(img)(_n3##x,_n3##y,z,c)
634+
635+#define cimg_get7x7(img,x,y,z,c,I,T) \
636+ I[0] = (T)(img)(_p3##x,_p3##y,z,c), I[1] = (T)(img)(_p2##x,_p3##y,z,c), I[2] = (T)(img)(_p1##x,_p3##y,z,c), I[3] = (T)(img)(x,_p3##y,z,c), \
637+ I[4] = (T)(img)(_n1##x,_p3##y,z,c), I[5] = (T)(img)(_n2##x,_p3##y,z,c), I[6] = (T)(img)(_n3##x,_p3##y,z,c), I[7] = (T)(img)(_p3##x,_p2##y,z,c), \
638+ I[8] = (T)(img)(_p2##x,_p2##y,z,c), I[9] = (T)(img)(_p1##x,_p2##y,z,c), I[10] = (T)(img)(x,_p2##y,z,c), I[11] = (T)(img)(_n1##x,_p2##y,z,c), \
639+ I[12] = (T)(img)(_n2##x,_p2##y,z,c), I[13] = (T)(img)(_n3##x,_p2##y,z,c), I[14] = (T)(img)(_p3##x,_p1##y,z,c), I[15] = (T)(img)(_p2##x,_p1##y,z,c), \
640+ I[16] = (T)(img)(_p1##x,_p1##y,z,c), I[17] = (T)(img)(x,_p1##y,z,c), I[18] = (T)(img)(_n1##x,_p1##y,z,c), I[19] = (T)(img)(_n2##x,_p1##y,z,c), \
641+ I[20] = (T)(img)(_n3##x,_p1##y,z,c), I[21] = (T)(img)(_p3##x,y,z,c), I[22] = (T)(img)(_p2##x,y,z,c), I[23] = (T)(img)(_p1##x,y,z,c), \
642+ I[24] = (T)(img)(x,y,z,c), I[25] = (T)(img)(_n1##x,y,z,c), I[26] = (T)(img)(_n2##x,y,z,c), I[27] = (T)(img)(_n3##x,y,z,c), \
643+ I[28] = (T)(img)(_p3##x,_n1##y,z,c), I[29] = (T)(img)(_p2##x,_n1##y,z,c), I[30] = (T)(img)(_p1##x,_n1##y,z,c), I[31] = (T)(img)(x,_n1##y,z,c), \
644+ I[32] = (T)(img)(_n1##x,_n1##y,z,c), I[33] = (T)(img)(_n2##x,_n1##y,z,c), I[34] = (T)(img)(_n3##x,_n1##y,z,c), I[35] = (T)(img)(_p3##x,_n2##y,z,c), \
645+ I[36] = (T)(img)(_p2##x,_n2##y,z,c), I[37] = (T)(img)(_p1##x,_n2##y,z,c), I[38] = (T)(img)(x,_n2##y,z,c), I[39] = (T)(img)(_n1##x,_n2##y,z,c), \
646+ I[40] = (T)(img)(_n2##x,_n2##y,z,c), I[41] = (T)(img)(_n3##x,_n2##y,z,c), I[42] = (T)(img)(_p3##x,_n3##y,z,c), I[43] = (T)(img)(_p2##x,_n3##y,z,c), \
647+ I[44] = (T)(img)(_p1##x,_n3##y,z,c), I[45] = (T)(img)(x,_n3##y,z,c), I[46] = (T)(img)(_n1##x,_n3##y,z,c), I[47] = (T)(img)(_n2##x,_n3##y,z,c), \
648+ I[48] = (T)(img)(_n3##x,_n3##y,z,c)
649+
650+#define cimg_get8x8(img,x,y,z,c,I,T) \
651+ I[0] = (T)(img)(_p3##x,_p3##y,z,c), I[1] = (T)(img)(_p2##x,_p3##y,z,c), I[2] = (T)(img)(_p1##x,_p3##y,z,c), I[3] = (T)(img)(x,_p3##y,z,c), \
652+ I[4] = (T)(img)(_n1##x,_p3##y,z,c), I[5] = (T)(img)(_n2##x,_p3##y,z,c), I[6] = (T)(img)(_n3##x,_p3##y,z,c), I[7] = (T)(img)(_n4##x,_p3##y,z,c), \
653+ I[8] = (T)(img)(_p3##x,_p2##y,z,c), I[9] = (T)(img)(_p2##x,_p2##y,z,c), I[10] = (T)(img)(_p1##x,_p2##y,z,c), I[11] = (T)(img)(x,_p2##y,z,c), \
654+ I[12] = (T)(img)(_n1##x,_p2##y,z,c), I[13] = (T)(img)(_n2##x,_p2##y,z,c), I[14] = (T)(img)(_n3##x,_p2##y,z,c), I[15] = (T)(img)(_n4##x,_p2##y,z,c), \
655+ I[16] = (T)(img)(_p3##x,_p1##y,z,c), I[17] = (T)(img)(_p2##x,_p1##y,z,c), I[18] = (T)(img)(_p1##x,_p1##y,z,c), I[19] = (T)(img)(x,_p1##y,z,c), \
656+ I[20] = (T)(img)(_n1##x,_p1##y,z,c), I[21] = (T)(img)(_n2##x,_p1##y,z,c), I[22] = (T)(img)(_n3##x,_p1##y,z,c), I[23] = (T)(img)(_n4##x,_p1##y,z,c), \
657+ I[24] = (T)(img)(_p3##x,y,z,c), I[25] = (T)(img)(_p2##x,y,z,c), I[26] = (T)(img)(_p1##x,y,z,c), I[27] = (T)(img)(x,y,z,c), \
658+ I[28] = (T)(img)(_n1##x,y,z,c), I[29] = (T)(img)(_n2##x,y,z,c), I[30] = (T)(img)(_n3##x,y,z,c), I[31] = (T)(img)(_n4##x,y,z,c), \
659+ I[32] = (T)(img)(_p3##x,_n1##y,z,c), I[33] = (T)(img)(_p2##x,_n1##y,z,c), I[34] = (T)(img)(_p1##x,_n1##y,z,c), I[35] = (T)(img)(x,_n1##y,z,c), \
660+ I[36] = (T)(img)(_n1##x,_n1##y,z,c), I[37] = (T)(img)(_n2##x,_n1##y,z,c), I[38] = (T)(img)(_n3##x,_n1##y,z,c), I[39] = (T)(img)(_n4##x,_n1##y,z,c), \
661+ I[40] = (T)(img)(_p3##x,_n2##y,z,c), I[41] = (T)(img)(_p2##x,_n2##y,z,c), I[42] = (T)(img)(_p1##x,_n2##y,z,c), I[43] = (T)(img)(x,_n2##y,z,c), \
662+ I[44] = (T)(img)(_n1##x,_n2##y,z,c), I[45] = (T)(img)(_n2##x,_n2##y,z,c), I[46] = (T)(img)(_n3##x,_n2##y,z,c), I[47] = (T)(img)(_n4##x,_n2##y,z,c), \
663+ I[48] = (T)(img)(_p3##x,_n3##y,z,c), I[49] = (T)(img)(_p2##x,_n3##y,z,c), I[50] = (T)(img)(_p1##x,_n3##y,z,c), I[51] = (T)(img)(x,_n3##y,z,c), \
664+ I[52] = (T)(img)(_n1##x,_n3##y,z,c), I[53] = (T)(img)(_n2##x,_n3##y,z,c), I[54] = (T)(img)(_n3##x,_n3##y,z,c), I[55] = (T)(img)(_n4##x,_n3##y,z,c), \
665+ I[56] = (T)(img)(_p3##x,_n4##y,z,c), I[57] = (T)(img)(_p2##x,_n4##y,z,c), I[58] = (T)(img)(_p1##x,_n4##y,z,c), I[59] = (T)(img)(x,_n4##y,z,c), \
666+ I[60] = (T)(img)(_n1##x,_n4##y,z,c), I[61] = (T)(img)(_n2##x,_n4##y,z,c), I[62] = (T)(img)(_n3##x,_n4##y,z,c), I[63] = (T)(img)(_n4##x,_n4##y,z,c);
667+
668+#define cimg_get9x9(img,x,y,z,c,I,T) \
669+ I[0] = (T)(img)(_p4##x,_p4##y,z,c), I[1] = (T)(img)(_p3##x,_p4##y,z,c), I[2] = (T)(img)(_p2##x,_p4##y,z,c), I[3] = (T)(img)(_p1##x,_p4##y,z,c), \
670+ I[4] = (T)(img)(x,_p4##y,z,c), I[5] = (T)(img)(_n1##x,_p4##y,z,c), I[6] = (T)(img)(_n2##x,_p4##y,z,c), I[7] = (T)(img)(_n3##x,_p4##y,z,c), \
671+ I[8] = (T)(img)(_n4##x,_p4##y,z,c), I[9] = (T)(img)(_p4##x,_p3##y,z,c), I[10] = (T)(img)(_p3##x,_p3##y,z,c), I[11] = (T)(img)(_p2##x,_p3##y,z,c), \
672+ I[12] = (T)(img)(_p1##x,_p3##y,z,c), I[13] = (T)(img)(x,_p3##y,z,c), I[14] = (T)(img)(_n1##x,_p3##y,z,c), I[15] = (T)(img)(_n2##x,_p3##y,z,c), \
673+ I[16] = (T)(img)(_n3##x,_p3##y,z,c), I[17] = (T)(img)(_n4##x,_p3##y,z,c), I[18] = (T)(img)(_p4##x,_p2##y,z,c), I[19] = (T)(img)(_p3##x,_p2##y,z,c), \
674+ I[20] = (T)(img)(_p2##x,_p2##y,z,c), I[21] = (T)(img)(_p1##x,_p2##y,z,c), I[22] = (T)(img)(x,_p2##y,z,c), I[23] = (T)(img)(_n1##x,_p2##y,z,c), \
675+ I[24] = (T)(img)(_n2##x,_p2##y,z,c), I[25] = (T)(img)(_n3##x,_p2##y,z,c), I[26] = (T)(img)(_n4##x,_p2##y,z,c), I[27] = (T)(img)(_p4##x,_p1##y,z,c), \
676+ I[28] = (T)(img)(_p3##x,_p1##y,z,c), I[29] = (T)(img)(_p2##x,_p1##y,z,c), I[30] = (T)(img)(_p1##x,_p1##y,z,c), I[31] = (T)(img)(x,_p1##y,z,c), \
677+ I[32] = (T)(img)(_n1##x,_p1##y,z,c), I[33] = (T)(img)(_n2##x,_p1##y,z,c), I[34] = (T)(img)(_n3##x,_p1##y,z,c), I[35] = (T)(img)(_n4##x,_p1##y,z,c), \
678+ I[36] = (T)(img)(_p4##x,y,z,c), I[37] = (T)(img)(_p3##x,y,z,c), I[38] = (T)(img)(_p2##x,y,z,c), I[39] = (T)(img)(_p1##x,y,z,c), \
679+ I[40] = (T)(img)(x,y,z,c), I[41] = (T)(img)(_n1##x,y,z,c), I[42] = (T)(img)(_n2##x,y,z,c), I[43] = (T)(img)(_n3##x,y,z,c), \
680+ I[44] = (T)(img)(_n4##x,y,z,c), I[45] = (T)(img)(_p4##x,_n1##y,z,c), I[46] = (T)(img)(_p3##x,_n1##y,z,c), I[47] = (T)(img)(_p2##x,_n1##y,z,c), \
681+ I[48] = (T)(img)(_p1##x,_n1##y,z,c), I[49] = (T)(img)(x,_n1##y,z,c), I[50] = (T)(img)(_n1##x,_n1##y,z,c), I[51] = (T)(img)(_n2##x,_n1##y,z,c), \
682+ I[52] = (T)(img)(_n3##x,_n1##y,z,c), I[53] = (T)(img)(_n4##x,_n1##y,z,c), I[54] = (T)(img)(_p4##x,_n2##y,z,c), I[55] = (T)(img)(_p3##x,_n2##y,z,c), \
683+ I[56] = (T)(img)(_p2##x,_n2##y,z,c), I[57] = (T)(img)(_p1##x,_n2##y,z,c), I[58] = (T)(img)(x,_n2##y,z,c), I[59] = (T)(img)(_n1##x,_n2##y,z,c), \
684+ I[60] = (T)(img)(_n2##x,_n2##y,z,c), I[61] = (T)(img)(_n3##x,_n2##y,z,c), I[62] = (T)(img)(_n4##x,_n2##y,z,c), I[63] = (T)(img)(_p4##x,_n3##y,z,c), \
685+ I[64] = (T)(img)(_p3##x,_n3##y,z,c), I[65] = (T)(img)(_p2##x,_n3##y,z,c), I[66] = (T)(img)(_p1##x,_n3##y,z,c), I[67] = (T)(img)(x,_n3##y,z,c), \
686+ I[68] = (T)(img)(_n1##x,_n3##y,z,c), I[69] = (T)(img)(_n2##x,_n3##y,z,c), I[70] = (T)(img)(_n3##x,_n3##y,z,c), I[71] = (T)(img)(_n4##x,_n3##y,z,c), \
687+ I[72] = (T)(img)(_p4##x,_n4##y,z,c), I[73] = (T)(img)(_p3##x,_n4##y,z,c), I[74] = (T)(img)(_p2##x,_n4##y,z,c), I[75] = (T)(img)(_p1##x,_n4##y,z,c), \
688+ I[76] = (T)(img)(x,_n4##y,z,c), I[77] = (T)(img)(_n1##x,_n4##y,z,c), I[78] = (T)(img)(_n2##x,_n4##y,z,c), I[79] = (T)(img)(_n3##x,_n4##y,z,c), \
689+ I[80] = (T)(img)(_n4##x,_n4##y,z,c)
690+
691+#define cimg_get2x2x2(img,x,y,z,c,I,T) \
692+ I[0] = (T)(img)(x,y,z,c), I[1] = (T)(img)(_n1##x,y,z,c), I[2] = (T)(img)(x,_n1##y,z,c), I[3] = (T)(img)(_n1##x,_n1##y,z,c), \
693+ I[4] = (T)(img)(x,y,_n1##z,c), I[5] = (T)(img)(_n1##x,y,_n1##z,c), I[6] = (T)(img)(x,_n1##y,_n1##z,c), I[7] = (T)(img)(_n1##x,_n1##y,_n1##z,c)
694+
695+#define cimg_get3x3x3(img,x,y,z,c,I,T) \
696+ I[0] = (T)(img)(_p1##x,_p1##y,_p1##z,c), I[1] = (T)(img)(x,_p1##y,_p1##z,c), I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c), \
697+ I[3] = (T)(img)(_p1##x,y,_p1##z,c), I[4] = (T)(img)(x,y,_p1##z,c), I[5] = (T)(img)(_n1##x,y,_p1##z,c), \
698+ I[6] = (T)(img)(_p1##x,_n1##y,_p1##z,c), I[7] = (T)(img)(x,_n1##y,_p1##z,c), I[8] = (T)(img)(_n1##x,_n1##y,_p1##z,c), \
699+ I[9] = (T)(img)(_p1##x,_p1##y,z,c), I[10] = (T)(img)(x,_p1##y,z,c), I[11] = (T)(img)(_n1##x,_p1##y,z,c), \
700+ I[12] = (T)(img)(_p1##x,y,z,c), I[13] = (T)(img)(x,y,z,c), I[14] = (T)(img)(_n1##x,y,z,c), \
701+ I[15] = (T)(img)(_p1##x,_n1##y,z,c), I[16] = (T)(img)(x,_n1##y,z,c), I[17] = (T)(img)(_n1##x,_n1##y,z,c), \
702+ I[18] = (T)(img)(_p1##x,_p1##y,_n1##z,c), I[19] = (T)(img)(x,_p1##y,_n1##z,c), I[20] = (T)(img)(_n1##x,_p1##y,_n1##z,c), \
703+ I[21] = (T)(img)(_p1##x,y,_n1##z,c), I[22] = (T)(img)(x,y,_n1##z,c), I[23] = (T)(img)(_n1##x,y,_n1##z,c), \
704+ I[24] = (T)(img)(_p1##x,_n1##y,_n1##z,c), I[25] = (T)(img)(x,_n1##y,_n1##z,c), I[26] = (T)(img)(_n1##x,_n1##y,_n1##z,c)
705+
706+// Define various image loops.
707+//
708+// These macros generally avoid the use of iterators, but you are not forced to used them !
709+#define cimg_for(img,ptrs,T_ptrs) for (T_ptrs *ptrs = (img)._data + (img).size(); (ptrs--)>(img)._data; )
710+#define cimg_foroff(img,off) for (unsigned int off = 0, _max##off = (unsigned int)(img).size(); off<_max##off; ++off)
711+
712+#define cimg_for1(bound,i) for (int i = 0; i<(int)(bound); ++i)
713+#define cimg_forX(img,x) cimg_for1((img)._width,x)
714+#define cimg_forY(img,y) cimg_for1((img)._height,y)
715+#define cimg_forZ(img,z) cimg_for1((img)._depth,z)
716+#define cimg_forC(img,c) cimg_for1((img)._spectrum,c)
717+#define cimg_forXY(img,x,y) cimg_forY(img,y) cimg_forX(img,x)
718+#define cimg_forXZ(img,x,z) cimg_forZ(img,z) cimg_forX(img,x)
719+#define cimg_forYZ(img,y,z) cimg_forZ(img,z) cimg_forY(img,y)
720+#define cimg_forXC(img,x,c) cimg_forC(img,c) cimg_forX(img,x)
721+#define cimg_forYC(img,y,c) cimg_forC(img,c) cimg_forY(img,y)
722+#define cimg_forZC(img,z,c) cimg_forC(img,c) cimg_forZ(img,z)
723+#define cimg_forXYZ(img,x,y,z) cimg_forZ(img,z) cimg_forXY(img,x,y)
724+#define cimg_forXYC(img,x,y,c) cimg_forC(img,c) cimg_forXY(img,x,y)
725+#define cimg_forXZC(img,x,z,c) cimg_forC(img,c) cimg_forXZ(img,x,z)
726+#define cimg_forYZC(img,y,z,c) cimg_forC(img,c) cimg_forYZ(img,y,z)
727+#define cimg_forXYZC(img,x,y,z,c) cimg_forC(img,c) cimg_forXYZ(img,x,y,z)
728+
729+#define cimg_for_in1(bound,i0,i1,i) \
730+ for (int i = (int)(i0)<0?0:(int)(i0), _max##i = (int)(i1)<(int)(bound)?(int)(i1):(int)(bound)-1; i<=_max##i; ++i)
731+#define cimg_for_inX(img,x0,x1,x) cimg_for_in1((img)._width,x0,x1,x)
732+#define cimg_for_inY(img,y0,y1,y) cimg_for_in1((img)._height,y0,y1,y)
733+#define cimg_for_inZ(img,z0,z1,z) cimg_for_in1((img)._depth,z0,z1,z)
734+#define cimg_for_inC(img,c0,c1,c) cimg_for_in1((img)._spectrum,c0,c1,c)
735+#define cimg_for_inXY(img,x0,y0,x1,y1,x,y) cimg_for_inY(img,y0,y1,y) cimg_for_inX(img,x0,x1,x)
736+#define cimg_for_inXZ(img,x0,z0,x1,z1,x,z) cimg_for_inZ(img,z0,z1,z) cimg_for_inX(img,x0,x1,x)
737+#define cimg_for_inXC(img,x0,c0,x1,c1,x,c) cimg_for_inC(img,c0,c1,c) cimg_for_inX(img,x0,x1,x)
738+#define cimg_for_inYZ(img,y0,z0,y1,z1,y,z) cimg_for_inZ(img,x0,z1,z) cimg_for_inY(img,y0,y1,y)
739+#define cimg_for_inYC(img,y0,c0,y1,c1,y,c) cimg_for_inC(img,c0,c1,c) cimg_for_inY(img,y0,y1,y)
740+#define cimg_for_inZC(img,z0,c0,z1,c1,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inZ(img,z0,z1,z)
741+#define cimg_for_inXYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_inZ(img,z0,z1,z) cimg_for_inXY(img,x0,y0,x1,y1,x,y)
742+#define cimg_for_inXYC(img,x0,y0,c0,x1,y1,c1,x,y,c) cimg_for_inC(img,c0,c1,c) cimg_for_inXY(img,x0,y0,x1,y1,x,y)
743+#define cimg_for_inXZC(img,x0,z0,c0,x1,z1,c1,x,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inXZ(img,x0,z0,x1,z1,x,z)
744+#define cimg_for_inYZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inYZ(img,y0,z0,y1,z1,y,z)
745+#define cimg_for_inXYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_inC(img,c0,c1,c) cimg_for_inXYZ(img,x0,y0,z0,x1,y1,z1,x,y,z)
746+#define cimg_for_insideX(img,x,n) cimg_for_inX(img,n,(img)._width-1-(n),x)
747+#define cimg_for_insideY(img,y,n) cimg_for_inY(img,n,(img)._height-1-(n),y)
748+#define cimg_for_insideZ(img,z,n) cimg_for_inZ(img,n,(img)._depth-1-(n),z)
749+#define cimg_for_insideC(img,c,n) cimg_for_inC(img,n,(img)._spectrum-1-(n),c)
750+#define cimg_for_insideXY(img,x,y,n) cimg_for_inXY(img,n,n,(img)._width-1-(n),(img)._height-1-(n),x,y)
751+#define cimg_for_insideXYZ(img,x,y,z,n) cimg_for_inXYZ(img,n,n,n,(img)._width-1-(n),(img)._height-1-(n),(img)._depth-1-(n),x,y,z)
752+#define cimg_for_insideXYZC(img,x,y,z,c,n) cimg_for_inXYZ(img,n,n,n,(img)._width-1-(n),(img)._height-1-(n),(img)._depth-1-(n),x,y,z)
753+
754+#define cimg_for_out1(boundi,i0,i1,i) \
755+ for (int i = (int)(i0)>0?0:(int)(i1)+1; i<(int)(boundi); ++i, i = i==(int)(i0)?(int)(i1)+1:i)
756+#define cimg_for_out2(boundi,boundj,i0,j0,i1,j1,i,j) \
757+ for (int j = 0; j<(int)(boundj); ++j) \
758+ for (int _n1j = (int)(j<(int)(j0) || j>(int)(j1)), i = _n1j?0:(int)(i0)>0?0:(int)(i1)+1; i<(int)(boundi); \
759+ ++i, i = _n1j?i:(i==(int)(i0)?(int)(i1)+1:i))
760+#define cimg_for_out3(boundi,boundj,boundk,i0,j0,k0,i1,j1,k1,i,j,k) \
761+ for (int k = 0; k<(int)(boundk); ++k) \
762+ for (int _n1k = (int)(k<(int)(k0) || k>(int)(k1)), j = 0; j<(int)(boundj); ++j) \
763+ for (int _n1j = (int)(j<(int)(j0) || j>(int)(j1)), i = _n1j || _n1k?0:(int)(i0)>0?0:(int)(i1)+1; i<(int)(boundi); \
764+ ++i, i = _n1j || _n1k?i:(i==(int)(i0)?(int)(i1)+1:i))
765+#define cimg_for_out4(boundi,boundj,boundk,boundl,i0,j0,k0,l0,i1,j1,k1,l1,i,j,k,l) \
766+ for (int l = 0; l<(int)(boundl); ++l) \
767+ for (int _n1l = (int)(l<(int)(l0) || l>(int)(l1)), k = 0; k<(int)(boundk); ++k) \
768+ for (int _n1k = (int)(k<(int)(k0) || k>(int)(k1)), j = 0; j<(int)(boundj); ++j) \
769+ for (int _n1j = (int)(j<(int)(j0) || j>(int)(j1)), i = _n1j || _n1k || _n1l?0:(int)(i0)>0?0:(int)(i1)+1; i<(int)(boundi); \
770+ ++i, i = _n1j || _n1k || _n1l?i:(i==(int)(i0)?(int)(i1)+1:i))
771+#define cimg_for_outX(img,x0,x1,x) cimg_for_out1((img)._width,x0,x1,x)
772+#define cimg_for_outY(img,y0,y1,y) cimg_for_out1((img)._height,y0,y1,y)
773+#define cimg_for_outZ(img,z0,z1,z) cimg_for_out1((img)._depth,z0,z1,z)
774+#define cimg_for_outC(img,c0,c1,c) cimg_for_out1((img)._spectrum,c0,c1,c)
775+#define cimg_for_outXY(img,x0,y0,x1,y1,x,y) cimg_for_out2((img)._width,(img)._height,x0,y0,x1,y1,x,y)
776+#define cimg_for_outXZ(img,x0,z0,x1,z1,x,z) cimg_for_out2((img)._width,(img)._depth,x0,z0,x1,z1,x,z)
777+#define cimg_for_outXC(img,x0,c0,x1,c1,x,c) cimg_for_out2((img)._width,(img)._spectrum,x0,c0,x1,c1,x,c)
778+#define cimg_for_outYZ(img,y0,z0,y1,z1,y,z) cimg_for_out2((img)._height,(img)._depth,y0,z0,y1,z1,y,z)
779+#define cimg_for_outYC(img,y0,c0,y1,c1,y,c) cimg_for_out2((img)._height,(img)._spectrum,y0,c0,y1,c1,y,c)
780+#define cimg_for_outZC(img,z0,c0,z1,c1,z,c) cimg_for_out2((img)._depth,(img)._spectrum,z0,c0,z1,c1,z,c)
781+#define cimg_for_outXYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_out3((img)._width,(img)._height,(img)._depth,x0,y0,z0,x1,y1,z1,x,y,z)
782+#define cimg_for_outXYC(img,x0,y0,c0,x1,y1,c1,x,y,c) cimg_for_out3((img)._width,(img)._height,(img)._spectrum,x0,y0,c0,x1,y1,c1,x,y,c)
783+#define cimg_for_outXZC(img,x0,z0,c0,x1,z1,c1,x,z,c) cimg_for_out3((img)._width,(img)._depth,(img)._spectrum,x0,z0,c0,x1,z1,c1,x,z,c)
784+#define cimg_for_outYZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_out3((img)._height,(img)._depth,(img)._spectrum,y0,z0,c0,y1,z1,c1,y,z,c)
785+#define cimg_for_outXYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) \
786+ cimg_for_out4((img)._width,(img)._height,(img)._depth,(img)._spectrum,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c)
787+#define cimg_for_borderX(img,x,n) cimg_for_outX(img,n,(img)._width-1-(n),x)
788+#define cimg_for_borderY(img,y,n) cimg_for_outY(img,n,(img)._height-1-(n),y)
789+#define cimg_for_borderZ(img,z,n) cimg_for_outZ(img,n,(img)._depth-1-(n),z)
790+#define cimg_for_borderC(img,c,n) cimg_for_outC(img,n,(img)._spectrum-1-(n),c)
791+#define cimg_for_borderXY(img,x,y,n) cimg_for_outXY(img,n,n,(img)._width-1-(n),(img)._height-1-(n),x,y)
792+#define cimg_for_borderXYZ(img,x,y,z,n) cimg_for_outXYZ(img,n,n,n,(img)._width-1-(n),(img)._height-1-(n),(img)._depth-1-(n),x,y,z)
793+#define cimg_for_borderXYZC(img,x,y,z,c,n) \
794+ cimg_for_outXYZC(img,n,n,n,n,(img)._width-1-(n),(img)._height-1-(n),(img)._depth-1-(n),(img)._spectrum-1-(n),x,y,z,c)
795+
796+#define cimg_for_spiralXY(img,x,y) \
797+ for (int x = 0, y = 0, _n1##x = 1, _n1##y = (img).width()*(img).height(); _n1##y; \
798+ --_n1##y, _n1##x+=(_n1##x>>2)-((!(_n1##x&3)?--y:((_n1##x&3)==1?(img)._width-1-++x:((_n1##x&3)==2?(img)._height-1-++y:--x))))?0:1)
799+
800+#define cimg_for_lineXY(x,y,x0,y0,x1,y1) \
801+ for (int x = (int)(x0), y = (int)(y0), _sx = 1, _sy = 1, _steep = 0, \
802+ _dx=(x1)>(x0)?(int)(x1)-(int)(x0):(_sx=-1,(int)(x0)-(int)(x1)), \
803+ _dy=(y1)>(y0)?(int)(y1)-(int)(y0):(_sy=-1,(int)(y0)-(int)(y1)), \
804+ _counter = _dx, \
805+ _err = _dx>_dy?(_dy>>1):((_steep=1),(_counter=_dy),(_dx>>1)); \
806+ _counter>=0; \
807+ --_counter, x+=_steep? \
808+ (y+=_sy,(_err-=_dx)<0?_err+=_dy,_sx:0): \
809+ (y+=(_err-=_dy)<0?_err+=_dx,_sy:0,_sx))
810+
811+#define cimg_for2(bound,i) \
812+ for (int i = 0, _n1##i = 1>=(bound)?(int)(bound)-1:1; \
813+ _n1##i<(int)(bound) || i==--_n1##i; \
814+ ++i, ++_n1##i)
815+#define cimg_for2X(img,x) cimg_for2((img)._width,x)
816+#define cimg_for2Y(img,y) cimg_for2((img)._height,y)
817+#define cimg_for2Z(img,z) cimg_for2((img)._depth,z)
818+#define cimg_for2C(img,c) cimg_for2((img)._spectrum,c)
819+#define cimg_for2XY(img,x,y) cimg_for2Y(img,y) cimg_for2X(img,x)
820+#define cimg_for2XZ(img,x,z) cimg_for2Z(img,z) cimg_for2X(img,x)
821+#define cimg_for2XC(img,x,c) cimg_for2C(img,c) cimg_for2X(img,x)
822+#define cimg_for2YZ(img,y,z) cimg_for2Z(img,z) cimg_for2Y(img,y)
823+#define cimg_for2YC(img,y,c) cimg_for2C(img,c) cimg_for2Y(img,y)
824+#define cimg_for2ZC(img,z,c) cimg_for2C(img,c) cimg_for2Z(img,z)
825+#define cimg_for2XYZ(img,x,y,z) cimg_for2Z(img,z) cimg_for2XY(img,x,y)
826+#define cimg_for2XZC(img,x,z,c) cimg_for2C(img,c) cimg_for2XZ(img,x,z)
827+#define cimg_for2YZC(img,y,z,c) cimg_for2C(img,c) cimg_for2YZ(img,y,z)
828+#define cimg_for2XYZC(img,x,y,z,c) cimg_for2C(img,c) cimg_for2XYZ(img,x,y,z)
829+
830+#define cimg_for_in2(bound,i0,i1,i) \
831+ for (int i = (int)(i0)<0?0:(int)(i0), \
832+ _n1##i = i+1>=(int)(bound)?(int)(bound)-1:i+1; \
833+ i<=(int)(i1) && (_n1##i<(int)(bound) || i==--_n1##i); \
834+ ++i, ++_n1##i)
835+#define cimg_for_in2X(img,x0,x1,x) cimg_for_in2((img)._width,x0,x1,x)
836+#define cimg_for_in2Y(img,y0,y1,y) cimg_for_in2((img)._height,y0,y1,y)
837+#define cimg_for_in2Z(img,z0,z1,z) cimg_for_in2((img)._depth,z0,z1,z)
838+#define cimg_for_in2C(img,c0,c1,c) cimg_for_in2((img)._spectrum,c0,c1,c)
839+#define cimg_for_in2XY(img,x0,y0,x1,y1,x,y) cimg_for_in2Y(img,y0,y1,y) cimg_for_in2X(img,x0,x1,x)
840+#define cimg_for_in2XZ(img,x0,z0,x1,z1,x,z) cimg_for_in2Z(img,z0,z1,z) cimg_for_in2X(img,x0,x1,x)
841+#define cimg_for_in2XC(img,x0,c0,x1,c1,x,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2X(img,x0,x1,x)
842+#define cimg_for_in2YZ(img,y0,z0,y1,z1,y,z) cimg_for_in2Z(img,z0,z1,z) cimg_for_in2Y(img,y0,y1,y)
843+#define cimg_for_in2YC(img,y0,c0,y1,c1,y,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2Y(img,y0,y1,y)
844+#define cimg_for_in2ZC(img,z0,c0,z1,c1,z,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2Z(img,z0,z1,z)
845+#define cimg_for_in2XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in2Z(img,z0,z1,z) cimg_for_in2XY(img,x0,y0,x1,y1,x,y)
846+#define cimg_for_in2XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2XZ(img,x0,y0,x1,y1,x,z)
847+#define cimg_for_in2YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2YZ(img,y0,z0,y1,z1,y,z)
848+#define cimg_for_in2XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in2C(img,c0,c1,c) cimg_for_in2XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z)
849+
850+#define cimg_for3(bound,i) \
851+ for (int i = 0, _p1##i = 0, \
852+ _n1##i = 1>=(bound)?(int)(bound)-1:1; \
853+ _n1##i<(int)(bound) || i==--_n1##i; \
854+ _p1##i = i++, ++_n1##i)
855+#define cimg_for3X(img,x) cimg_for3((img)._width,x)
856+#define cimg_for3Y(img,y) cimg_for3((img)._height,y)
857+#define cimg_for3Z(img,z) cimg_for3((img)._depth,z)
858+#define cimg_for3C(img,c) cimg_for3((img)._spectrum,c)
859+#define cimg_for3XY(img,x,y) cimg_for3Y(img,y) cimg_for3X(img,x)
860+#define cimg_for3XZ(img,x,z) cimg_for3Z(img,z) cimg_for3X(img,x)
861+#define cimg_for3XC(img,x,c) cimg_for3C(img,c) cimg_for3X(img,x)
862+#define cimg_for3YZ(img,y,z) cimg_for3Z(img,z) cimg_for3Y(img,y)
863+#define cimg_for3YC(img,y,c) cimg_for3C(img,c) cimg_for3Y(img,y)
864+#define cimg_for3ZC(img,z,c) cimg_for3C(img,c) cimg_for3Z(img,z)
865+#define cimg_for3XYZ(img,x,y,z) cimg_for3Z(img,z) cimg_for3XY(img,x,y)
866+#define cimg_for3XZC(img,x,z,c) cimg_for3C(img,c) cimg_for3XZ(img,x,z)
867+#define cimg_for3YZC(img,y,z,c) cimg_for3C(img,c) cimg_for3YZ(img,y,z)
868+#define cimg_for3XYZC(img,x,y,z,c) cimg_for3C(img,c) cimg_for3XYZ(img,x,y,z)
869+
870+#define cimg_for_in3(bound,i0,i1,i) \
871+ for (int i = (int)(i0)<0?0:(int)(i0), \
872+ _p1##i = i-1<0?0:i-1, \
873+ _n1##i = i+1>=(int)(bound)?(int)(bound)-1:i+1; \
874+ i<=(int)(i1) && (_n1##i<(int)(bound) || i==--_n1##i); \
875+ _p1##i = i++, ++_n1##i)
876+#define cimg_for_in3X(img,x0,x1,x) cimg_for_in3((img)._width,x0,x1,x)
877+#define cimg_for_in3Y(img,y0,y1,y) cimg_for_in3((img)._height,y0,y1,y)
878+#define cimg_for_in3Z(img,z0,z1,z) cimg_for_in3((img)._depth,z0,z1,z)
879+#define cimg_for_in3C(img,c0,c1,c) cimg_for_in3((img)._spectrum,c0,c1,c)
880+#define cimg_for_in3XY(img,x0,y0,x1,y1,x,y) cimg_for_in3Y(img,y0,y1,y) cimg_for_in3X(img,x0,x1,x)
881+#define cimg_for_in3XZ(img,x0,z0,x1,z1,x,z) cimg_for_in3Z(img,z0,z1,z) cimg_for_in3X(img,x0,x1,x)
882+#define cimg_for_in3XC(img,x0,c0,x1,c1,x,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3X(img,x0,x1,x)
883+#define cimg_for_in3YZ(img,y0,z0,y1,z1,y,z) cimg_for_in3Z(img,z0,z1,z) cimg_for_in3Y(img,y0,y1,y)
884+#define cimg_for_in3YC(img,y0,c0,y1,c1,y,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3Y(img,y0,y1,y)
885+#define cimg_for_in3ZC(img,z0,c0,z1,c1,z,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3Z(img,z0,z1,z)
886+#define cimg_for_in3XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in3Z(img,z0,z1,z) cimg_for_in3XY(img,x0,y0,x1,y1,x,y)
887+#define cimg_for_in3XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3XZ(img,x0,y0,x1,y1,x,z)
888+#define cimg_for_in3YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3YZ(img,y0,z0,y1,z1,y,z)
889+#define cimg_for_in3XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in3C(img,c0,c1,c) cimg_for_in3XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z)
890+
891+#define cimg_for4(bound,i) \
892+ for (int i = 0, _p1##i = 0, _n1##i = 1>=(bound)?(int)(bound)-1:1, \
893+ _n2##i = 2>=(bound)?(int)(bound)-1:2; \
894+ _n2##i<(int)(bound) || _n1##i==--_n2##i || i==(_n2##i = --_n1##i); \
895+ _p1##i = i++, ++_n1##i, ++_n2##i)
896+#define cimg_for4X(img,x) cimg_for4((img)._width,x)
897+#define cimg_for4Y(img,y) cimg_for4((img)._height,y)
898+#define cimg_for4Z(img,z) cimg_for4((img)._depth,z)
899+#define cimg_for4C(img,c) cimg_for4((img)._spectrum,c)
900+#define cimg_for4XY(img,x,y) cimg_for4Y(img,y) cimg_for4X(img,x)
901+#define cimg_for4XZ(img,x,z) cimg_for4Z(img,z) cimg_for4X(img,x)
902+#define cimg_for4XC(img,x,c) cimg_for4C(img,c) cimg_for4X(img,x)
903+#define cimg_for4YZ(img,y,z) cimg_for4Z(img,z) cimg_for4Y(img,y)
904+#define cimg_for4YC(img,y,c) cimg_for4C(img,c) cimg_for4Y(img,y)
905+#define cimg_for4ZC(img,z,c) cimg_for4C(img,c) cimg_for4Z(img,z)
906+#define cimg_for4XYZ(img,x,y,z) cimg_for4Z(img,z) cimg_for4XY(img,x,y)
907+#define cimg_for4XZC(img,x,z,c) cimg_for4C(img,c) cimg_for4XZ(img,x,z)
908+#define cimg_for4YZC(img,y,z,c) cimg_for4C(img,c) cimg_for4YZ(img,y,z)
909+#define cimg_for4XYZC(img,x,y,z,c) cimg_for4C(img,c) cimg_for4XYZ(img,x,y,z)
910+
911+#define cimg_for_in4(bound,i0,i1,i) \
912+ for (int i = (int)(i0)<0?0:(int)(i0), \
913+ _p1##i = i-1<0?0:i-1, \
914+ _n1##i = i+1>=(int)(bound)?(int)(bound)-1:i+1, \
915+ _n2##i = i+2>=(int)(bound)?(int)(bound)-1:i+2; \
916+ i<=(int)(i1) && (_n2##i<(int)(bound) || _n1##i==--_n2##i || i==(_n2##i = --_n1##i)); \
917+ _p1##i = i++, ++_n1##i, ++_n2##i)
918+#define cimg_for_in4X(img,x0,x1,x) cimg_for_in4((img)._width,x0,x1,x)
919+#define cimg_for_in4Y(img,y0,y1,y) cimg_for_in4((img)._height,y0,y1,y)
920+#define cimg_for_in4Z(img,z0,z1,z) cimg_for_in4((img)._depth,z0,z1,z)
921+#define cimg_for_in4C(img,c0,c1,c) cimg_for_in4((img)._spectrum,c0,c1,c)
922+#define cimg_for_in4XY(img,x0,y0,x1,y1,x,y) cimg_for_in4Y(img,y0,y1,y) cimg_for_in4X(img,x0,x1,x)
923+#define cimg_for_in4XZ(img,x0,z0,x1,z1,x,z) cimg_for_in4Z(img,z0,z1,z) cimg_for_in4X(img,x0,x1,x)
924+#define cimg_for_in4XC(img,x0,c0,x1,c1,x,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4X(img,x0,x1,x)
925+#define cimg_for_in4YZ(img,y0,z0,y1,z1,y,z) cimg_for_in4Z(img,z0,z1,z) cimg_for_in4Y(img,y0,y1,y)
926+#define cimg_for_in4YC(img,y0,c0,y1,c1,y,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4Y(img,y0,y1,y)
927+#define cimg_for_in4ZC(img,z0,c0,z1,c1,z,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4Z(img,z0,z1,z)
928+#define cimg_for_in4XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in4Z(img,z0,z1,z) cimg_for_in4XY(img,x0,y0,x1,y1,x,y)
929+#define cimg_for_in4XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4XZ(img,x0,y0,x1,y1,x,z)
930+#define cimg_for_in4YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4YZ(img,y0,z0,y1,z1,y,z)
931+#define cimg_for_in4XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in4C(img,c0,c1,c) cimg_for_in4XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z)
932+
933+#define cimg_for5(bound,i) \
934+ for (int i = 0, _p2##i = 0, _p1##i = 0, \
935+ _n1##i = 1>=(bound)?(int)(bound)-1:1, \
936+ _n2##i = 2>=(bound)?(int)(bound)-1:2; \
937+ _n2##i<(int)(bound) || _n1##i==--_n2##i || i==(_n2##i = --_n1##i); \
938+ _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i)
939+#define cimg_for5X(img,x) cimg_for5((img)._width,x)
940+#define cimg_for5Y(img,y) cimg_for5((img)._height,y)
941+#define cimg_for5Z(img,z) cimg_for5((img)._depth,z)
942+#define cimg_for5C(img,c) cimg_for5((img)._spectrum,c)
943+#define cimg_for5XY(img,x,y) cimg_for5Y(img,y) cimg_for5X(img,x)
944+#define cimg_for5XZ(img,x,z) cimg_for5Z(img,z) cimg_for5X(img,x)
945+#define cimg_for5XC(img,x,c) cimg_for5C(img,c) cimg_for5X(img,x)
946+#define cimg_for5YZ(img,y,z) cimg_for5Z(img,z) cimg_for5Y(img,y)
947+#define cimg_for5YC(img,y,c) cimg_for5C(img,c) cimg_for5Y(img,y)
948+#define cimg_for5ZC(img,z,c) cimg_for5C(img,c) cimg_for5Z(img,z)
949+#define cimg_for5XYZ(img,x,y,z) cimg_for5Z(img,z) cimg_for5XY(img,x,y)
950+#define cimg_for5XZC(img,x,z,c) cimg_for5C(img,c) cimg_for5XZ(img,x,z)
951+#define cimg_for5YZC(img,y,z,c) cimg_for5C(img,c) cimg_for5YZ(img,y,z)
952+#define cimg_for5XYZC(img,x,y,z,c) cimg_for5C(img,c) cimg_for5XYZ(img,x,y,z)
953+
954+#define cimg_for_in5(bound,i0,i1,i) \
955+ for (int i = (int)(i0)<0?0:(int)(i0), \
956+ _p2##i = i-2<0?0:i-2, \
957+ _p1##i = i-1<0?0:i-1, \
958+ _n1##i = i+1>=(int)(bound)?(int)(bound)-1:i+1, \
959+ _n2##i = i+2>=(int)(bound)?(int)(bound)-1:i+2; \
960+ i<=(int)(i1) && (_n2##i<(int)(bound) || _n1##i==--_n2##i || i==(_n2##i = --_n1##i)); \
961+ _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i)
962+#define cimg_for_in5X(img,x0,x1,x) cimg_for_in5((img)._width,x0,x1,x)
963+#define cimg_for_in5Y(img,y0,y1,y) cimg_for_in5((img)._height,y0,y1,y)
964+#define cimg_for_in5Z(img,z0,z1,z) cimg_for_in5((img)._depth,z0,z1,z)
965+#define cimg_for_in5C(img,c0,c1,c) cimg_for_in5((img)._spectrum,c0,c1,c)
966+#define cimg_for_in5XY(img,x0,y0,x1,y1,x,y) cimg_for_in5Y(img,y0,y1,y) cimg_for_in5X(img,x0,x1,x)
967+#define cimg_for_in5XZ(img,x0,z0,x1,z1,x,z) cimg_for_in5Z(img,z0,z1,z) cimg_for_in5X(img,x0,x1,x)
968+#define cimg_for_in5XC(img,x0,c0,x1,c1,x,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5X(img,x0,x1,x)
969+#define cimg_for_in5YZ(img,y0,z0,y1,z1,y,z) cimg_for_in5Z(img,z0,z1,z) cimg_for_in5Y(img,y0,y1,y)
970+#define cimg_for_in5YC(img,y0,c0,y1,c1,y,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5Y(img,y0,y1,y)
971+#define cimg_for_in5ZC(img,z0,c0,z1,c1,z,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5Z(img,z0,z1,z)
972+#define cimg_for_in5XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in5Z(img,z0,z1,z) cimg_for_in5XY(img,x0,y0,x1,y1,x,y)
973+#define cimg_for_in5XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5XZ(img,x0,y0,x1,y1,x,z)
974+#define cimg_for_in5YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5YZ(img,y0,z0,y1,z1,y,z)
975+#define cimg_for_in5XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in5C(img,c0,c1,c) cimg_for_in5XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z)
976+
977+#define cimg_for6(bound,i) \
978+ for (int i = 0, _p2##i = 0, _p1##i = 0, \
979+ _n1##i = 1>=(bound)?(int)(bound)-1:1, \
980+ _n2##i = 2>=(bound)?(int)(bound)-1:2, \
981+ _n3##i = 3>=(bound)?(int)(bound)-1:3; \
982+ _n3##i<(int)(bound) || _n2##i==--_n3##i || _n1##i==--_n2##i || i==(_n3##i = _n2##i = --_n1##i); \
983+ _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i)
984+#define cimg_for6X(img,x) cimg_for6((img)._width,x)
985+#define cimg_for6Y(img,y) cimg_for6((img)._height,y)
986+#define cimg_for6Z(img,z) cimg_for6((img)._depth,z)
987+#define cimg_for6C(img,c) cimg_for6((img)._spectrum,c)
988+#define cimg_for6XY(img,x,y) cimg_for6Y(img,y) cimg_for6X(img,x)
989+#define cimg_for6XZ(img,x,z) cimg_for6Z(img,z) cimg_for6X(img,x)
990+#define cimg_for6XC(img,x,c) cimg_for6C(img,c) cimg_for6X(img,x)
991+#define cimg_for6YZ(img,y,z) cimg_for6Z(img,z) cimg_for6Y(img,y)
992+#define cimg_for6YC(img,y,c) cimg_for6C(img,c) cimg_for6Y(img,y)
993+#define cimg_for6ZC(img,z,c) cimg_for6C(img,c) cimg_for6Z(img,z)
994+#define cimg_for6XYZ(img,x,y,z) cimg_for6Z(img,z) cimg_for6XY(img,x,y)
995+#define cimg_for6XZC(img,x,z,c) cimg_for6C(img,c) cimg_for6XZ(img,x,z)
996+#define cimg_for6YZC(img,y,z,c) cimg_for6C(img,c) cimg_for6YZ(img,y,z)
997+#define cimg_for6XYZC(img,x,y,z,c) cimg_for6C(img,c) cimg_for6XYZ(img,x,y,z)
998+
999+#define cimg_for_in6(bound,i0,i1,i) \
1000+ for (int i = (int)(i0)<0?0:(int)(i0), \
1001+ _p2##i = i-2<0?0:i-2, \
1002+ _p1##i = i-1<0?0:i-1, \
1003+ _n1##i = i+1>=(int)(bound)?(int)(bound)-1:i+1, \
1004+ _n2##i = i+2>=(int)(bound)?(int)(bound)-1:i+2, \
1005+ _n3##i = i+3>=(int)(bound)?(int)(bound)-1:i+3; \
1006+ i<=(int)(i1) && (_n3##i<(int)(bound) || _n2##i==--_n3##i || _n1##i==--_n2##i || i==(_n3##i = _n2##i = --_n1##i)); \
1007+ _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i)
1008+#define cimg_for_in6X(img,x0,x1,x) cimg_for_in6((img)._width,x0,x1,x)
1009+#define cimg_for_in6Y(img,y0,y1,y) cimg_for_in6((img)._height,y0,y1,y)
1010+#define cimg_for_in6Z(img,z0,z1,z) cimg_for_in6((img)._depth,z0,z1,z)
1011+#define cimg_for_in6C(img,c0,c1,c) cimg_for_in6((img)._spectrum,c0,c1,c)
1012+#define cimg_for_in6XY(img,x0,y0,x1,y1,x,y) cimg_for_in6Y(img,y0,y1,y) cimg_for_in6X(img,x0,x1,x)
1013+#define cimg_for_in6XZ(img,x0,z0,x1,z1,x,z) cimg_for_in6Z(img,z0,z1,z) cimg_for_in6X(img,x0,x1,x)
1014+#define cimg_for_in6XC(img,x0,c0,x1,c1,x,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6X(img,x0,x1,x)
1015+#define cimg_for_in6YZ(img,y0,z0,y1,z1,y,z) cimg_for_in6Z(img,z0,z1,z) cimg_for_in6Y(img,y0,y1,y)
1016+#define cimg_for_in6YC(img,y0,c0,y1,c1,y,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6Y(img,y0,y1,y)
1017+#define cimg_for_in6ZC(img,z0,c0,z1,c1,z,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6Z(img,z0,z1,z)
1018+#define cimg_for_in6XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in6Z(img,z0,z1,z) cimg_for_in6XY(img,x0,y0,x1,y1,x,y)
1019+#define cimg_for_in6XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6XZ(img,x0,y0,x1,y1,x,z)
1020+#define cimg_for_in6YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6YZ(img,y0,z0,y1,z1,y,z)
1021+#define cimg_for_in6XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in6C(img,c0,c1,c) cimg_for_in6XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z)
1022+
1023+#define cimg_for7(bound,i) \
1024+ for (int i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \
1025+ _n1##i = 1>=(bound)?(int)(bound)-1:1, \
1026+ _n2##i = 2>=(bound)?(int)(bound)-1:2, \
1027+ _n3##i = 3>=(bound)?(int)(bound)-1:3; \
1028+ _n3##i<(int)(bound) || _n2##i==--_n3##i || _n1##i==--_n2##i || i==(_n3##i = _n2##i = --_n1##i); \
1029+ _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i)
1030+#define cimg_for7X(img,x) cimg_for7((img)._width,x)
1031+#define cimg_for7Y(img,y) cimg_for7((img)._height,y)
1032+#define cimg_for7Z(img,z) cimg_for7((img)._depth,z)
1033+#define cimg_for7C(img,c) cimg_for7((img)._spectrum,c)
1034+#define cimg_for7XY(img,x,y) cimg_for7Y(img,y) cimg_for7X(img,x)
1035+#define cimg_for7XZ(img,x,z) cimg_for7Z(img,z) cimg_for7X(img,x)
1036+#define cimg_for7XC(img,x,c) cimg_for7C(img,c) cimg_for7X(img,x)
1037+#define cimg_for7YZ(img,y,z) cimg_for7Z(img,z) cimg_for7Y(img,y)
1038+#define cimg_for7YC(img,y,c) cimg_for7C(img,c) cimg_for7Y(img,y)
1039+#define cimg_for7ZC(img,z,c) cimg_for7C(img,c) cimg_for7Z(img,z)
1040+#define cimg_for7XYZ(img,x,y,z) cimg_for7Z(img,z) cimg_for7XY(img,x,y)
1041+#define cimg_for7XZC(img,x,z,c) cimg_for7C(img,c) cimg_for7XZ(img,x,z)
1042+#define cimg_for7YZC(img,y,z,c) cimg_for7C(img,c) cimg_for7YZ(img,y,z)
1043+#define cimg_for7XYZC(img,x,y,z,c) cimg_for7C(img,c) cimg_for7XYZ(img,x,y,z)
1044+
1045+#define cimg_for_in7(bound,i0,i1,i) \
1046+ for (int i = (int)(i0)<0?0:(int)(i0), \
1047+ _p3##i = i-3<0?0:i-3, \
1048+ _p2##i = i-2<0?0:i-2, \
1049+ _p1##i = i-1<0?0:i-1, \
1050+ _n1##i = i+1>=(int)(bound)?(int)(bound)-1:i+1, \
1051+ _n2##i = i+2>=(int)(bound)?(int)(bound)-1:i+2, \
1052+ _n3##i = i+3>=(int)(bound)?(int)(bound)-1:i+3; \
1053+ i<=(int)(i1) && (_n3##i<(int)(bound) || _n2##i==--_n3##i || _n1##i==--_n2##i || i==(_n3##i = _n2##i = --_n1##i)); \
1054+ _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i)
1055+#define cimg_for_in7X(img,x0,x1,x) cimg_for_in7((img)._width,x0,x1,x)
1056+#define cimg_for_in7Y(img,y0,y1,y) cimg_for_in7((img)._height,y0,y1,y)
1057+#define cimg_for_in7Z(img,z0,z1,z) cimg_for_in7((img)._depth,z0,z1,z)
1058+#define cimg_for_in7C(img,c0,c1,c) cimg_for_in7((img)._spectrum,c0,c1,c)
1059+#define cimg_for_in7XY(img,x0,y0,x1,y1,x,y) cimg_for_in7Y(img,y0,y1,y) cimg_for_in7X(img,x0,x1,x)
1060+#define cimg_for_in7XZ(img,x0,z0,x1,z1,x,z) cimg_for_in7Z(img,z0,z1,z) cimg_for_in7X(img,x0,x1,x)
1061+#define cimg_for_in7XC(img,x0,c0,x1,c1,x,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7X(img,x0,x1,x)
1062+#define cimg_for_in7YZ(img,y0,z0,y1,z1,y,z) cimg_for_in7Z(img,z0,z1,z) cimg_for_in7Y(img,y0,y1,y)
1063+#define cimg_for_in7YC(img,y0,c0,y1,c1,y,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7Y(img,y0,y1,y)
1064+#define cimg_for_in7ZC(img,z0,c0,z1,c1,z,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7Z(img,z0,z1,z)
1065+#define cimg_for_in7XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in7Z(img,z0,z1,z) cimg_for_in7XY(img,x0,y0,x1,y1,x,y)
1066+#define cimg_for_in7XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7XZ(img,x0,y0,x1,y1,x,z)
1067+#define cimg_for_in7YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7YZ(img,y0,z0,y1,z1,y,z)
1068+#define cimg_for_in7XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in7C(img,c0,c1,c) cimg_for_in7XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z)
1069+
1070+#define cimg_for8(bound,i) \
1071+ for (int i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \
1072+ _n1##i = 1>=(bound)?(int)(bound)-1:1, \
1073+ _n2##i = 2>=(bound)?(int)(bound)-1:2, \
1074+ _n3##i = 3>=(bound)?(int)(bound)-1:3, \
1075+ _n4##i = 4>=(bound)?(int)(bound)-1:4; \
1076+ _n4##i<(int)(bound) || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \
1077+ i==(_n4##i = _n3##i = _n2##i = --_n1##i); \
1078+ _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i)
1079+#define cimg_for8X(img,x) cimg_for8((img)._width,x)
1080+#define cimg_for8Y(img,y) cimg_for8((img)._height,y)
1081+#define cimg_for8Z(img,z) cimg_for8((img)._depth,z)
1082+#define cimg_for8C(img,c) cimg_for8((img)._spectrum,c)
1083+#define cimg_for8XY(img,x,y) cimg_for8Y(img,y) cimg_for8X(img,x)
1084+#define cimg_for8XZ(img,x,z) cimg_for8Z(img,z) cimg_for8X(img,x)
1085+#define cimg_for8XC(img,x,c) cimg_for8C(img,c) cimg_for8X(img,x)
1086+#define cimg_for8YZ(img,y,z) cimg_for8Z(img,z) cimg_for8Y(img,y)
1087+#define cimg_for8YC(img,y,c) cimg_for8C(img,c) cimg_for8Y(img,y)
1088+#define cimg_for8ZC(img,z,c) cimg_for8C(img,c) cimg_for8Z(img,z)
1089+#define cimg_for8XYZ(img,x,y,z) cimg_for8Z(img,z) cimg_for8XY(img,x,y)
1090+#define cimg_for8XZC(img,x,z,c) cimg_for8C(img,c) cimg_for8XZ(img,x,z)
1091+#define cimg_for8YZC(img,y,z,c) cimg_for8C(img,c) cimg_for8YZ(img,y,z)
1092+#define cimg_for8XYZC(img,x,y,z,c) cimg_for8C(img,c) cimg_for8XYZ(img,x,y,z)
1093+
1094+#define cimg_for_in8(bound,i0,i1,i) \
1095+ for (int i = (int)(i0)<0?0:(int)(i0), \
1096+ _p3##i = i-3<0?0:i-3, \
1097+ _p2##i = i-2<0?0:i-2, \
1098+ _p1##i = i-1<0?0:i-1, \
1099+ _n1##i = i+1>=(int)(bound)?(int)(bound)-1:i+1, \
1100+ _n2##i = i+2>=(int)(bound)?(int)(bound)-1:i+2, \
1101+ _n3##i = i+3>=(int)(bound)?(int)(bound)-1:i+3, \
1102+ _n4##i = i+4>=(int)(bound)?(int)(bound)-1:i+4; \
1103+ i<=(int)(i1) && (_n4##i<(int)(bound) || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \
1104+ i==(_n4##i = _n3##i = _n2##i = --_n1##i)); \
1105+ _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i)
1106+#define cimg_for_in8X(img,x0,x1,x) cimg_for_in8((img)._width,x0,x1,x)
1107+#define cimg_for_in8Y(img,y0,y1,y) cimg_for_in8((img)._height,y0,y1,y)
1108+#define cimg_for_in8Z(img,z0,z1,z) cimg_for_in8((img)._depth,z0,z1,z)
1109+#define cimg_for_in8C(img,c0,c1,c) cimg_for_in8((img)._spectrum,c0,c1,c)
1110+#define cimg_for_in8XY(img,x0,y0,x1,y1,x,y) cimg_for_in8Y(img,y0,y1,y) cimg_for_in8X(img,x0,x1,x)
1111+#define cimg_for_in8XZ(img,x0,z0,x1,z1,x,z) cimg_for_in8Z(img,z0,z1,z) cimg_for_in8X(img,x0,x1,x)
1112+#define cimg_for_in8XC(img,x0,c0,x1,c1,x,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8X(img,x0,x1,x)
1113+#define cimg_for_in8YZ(img,y0,z0,y1,z1,y,z) cimg_for_in8Z(img,z0,z1,z) cimg_for_in8Y(img,y0,y1,y)
1114+#define cimg_for_in8YC(img,y0,c0,y1,c1,y,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8Y(img,y0,y1,y)
1115+#define cimg_for_in8ZC(img,z0,c0,z1,c1,z,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8Z(img,z0,z1,z)
1116+#define cimg_for_in8XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in8Z(img,z0,z1,z) cimg_for_in8XY(img,x0,y0,x1,y1,x,y)
1117+#define cimg_for_in8XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8XZ(img,x0,y0,x1,y1,x,z)
1118+#define cimg_for_in8YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8YZ(img,y0,z0,y1,z1,y,z)
1119+#define cimg_for_in8XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in8C(img,c0,c1,c) cimg_for_in8XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z)
1120+
1121+#define cimg_for9(bound,i) \
1122+ for (int i = 0, _p4##i = 0, _p3##i = 0, _p2##i = 0, _p1##i = 0, \
1123+ _n1##i = 1>=(int)(bound)?(int)(bound)-1:1, \
1124+ _n2##i = 2>=(int)(bound)?(int)(bound)-1:2, \
1125+ _n3##i = 3>=(int)(bound)?(int)(bound)-1:3, \
1126+ _n4##i = 4>=(int)(bound)?(int)(bound)-1:4; \
1127+ _n4##i<(int)(bound) || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \
1128+ i==(_n4##i = _n3##i = _n2##i = --_n1##i); \
1129+ _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i)
1130+#define cimg_for9X(img,x) cimg_for9((img)._width,x)
1131+#define cimg_for9Y(img,y) cimg_for9((img)._height,y)
1132+#define cimg_for9Z(img,z) cimg_for9((img)._depth,z)
1133+#define cimg_for9C(img,c) cimg_for9((img)._spectrum,c)
1134+#define cimg_for9XY(img,x,y) cimg_for9Y(img,y) cimg_for9X(img,x)
1135+#define cimg_for9XZ(img,x,z) cimg_for9Z(img,z) cimg_for9X(img,x)
1136+#define cimg_for9XC(img,x,c) cimg_for9C(img,c) cimg_for9X(img,x)
1137+#define cimg_for9YZ(img,y,z) cimg_for9Z(img,z) cimg_for9Y(img,y)
1138+#define cimg_for9YC(img,y,c) cimg_for9C(img,c) cimg_for9Y(img,y)
1139+#define cimg_for9ZC(img,z,c) cimg_for9C(img,c) cimg_for9Z(img,z)
1140+#define cimg_for9XYZ(img,x,y,z) cimg_for9Z(img,z) cimg_for9XY(img,x,y)
1141+#define cimg_for9XZC(img,x,z,c) cimg_for9C(img,c) cimg_for9XZ(img,x,z)
1142+#define cimg_for9YZC(img,y,z,c) cimg_for9C(img,c) cimg_for9YZ(img,y,z)
1143+#define cimg_for9XYZC(img,x,y,z,c) cimg_for9C(img,c) cimg_for9XYZ(img,x,y,z)
1144+
1145+#define cimg_for_in9(bound,i0,i1,i) \
1146+ for (int i = (int)(i0)<0?0:(int)(i0), \
1147+ _p4##i = i-4<0?0:i-4, \
1148+ _p3##i = i-3<0?0:i-3, \
1149+ _p2##i = i-2<0?0:i-2, \
1150+ _p1##i = i-1<0?0:i-1, \
1151+ _n1##i = i+1>=(int)(bound)?(int)(bound)-1:i+1, \
1152+ _n2##i = i+2>=(int)(bound)?(int)(bound)-1:i+2, \
1153+ _n3##i = i+3>=(int)(bound)?(int)(bound)-1:i+3, \
1154+ _n4##i = i+4>=(int)(bound)?(int)(bound)-1:i+4; \
1155+ i<=(int)(i1) && (_n4##i<(int)(bound) || _n3##i==--_n4##i || _n2##i==--_n3##i || _n1##i==--_n2##i || \
1156+ i==(_n4##i = _n3##i = _n2##i = --_n1##i)); \
1157+ _p4##i = _p3##i, _p3##i = _p2##i, _p2##i = _p1##i, _p1##i = i++, ++_n1##i, ++_n2##i, ++_n3##i, ++_n4##i)
1158+#define cimg_for_in9X(img,x0,x1,x) cimg_for_in9((img)._width,x0,x1,x)
1159+#define cimg_for_in9Y(img,y0,y1,y) cimg_for_in9((img)._height,y0,y1,y)
1160+#define cimg_for_in9Z(img,z0,z1,z) cimg_for_in9((img)._depth,z0,z1,z)
1161+#define cimg_for_in9C(img,c0,c1,c) cimg_for_in9((img)._spectrum,c0,c1,c)
1162+#define cimg_for_in9XY(img,x0,y0,x1,y1,x,y) cimg_for_in9Y(img,y0,y1,y) cimg_for_in9X(img,x0,x1,x)
1163+#define cimg_for_in9XZ(img,x0,z0,x1,z1,x,z) cimg_for_in9Z(img,z0,z1,z) cimg_for_in9X(img,x0,x1,x)
1164+#define cimg_for_in9XC(img,x0,c0,x1,c1,x,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9X(img,x0,x1,x)
1165+#define cimg_for_in9YZ(img,y0,z0,y1,z1,y,z) cimg_for_in9Z(img,z0,z1,z) cimg_for_in9Y(img,y0,y1,y)
1166+#define cimg_for_in9YC(img,y0,c0,y1,c1,y,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9Y(img,y0,y1,y)
1167+#define cimg_for_in9ZC(img,z0,c0,z1,c1,z,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9Z(img,z0,z1,z)
1168+#define cimg_for_in9XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z) cimg_for_in9Z(img,z0,z1,z) cimg_for_in9XY(img,x0,y0,x1,y1,x,y)
1169+#define cimg_for_in9XZC(img,x0,z0,c0,x1,y1,c1,x,z,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9XZ(img,x0,y0,x1,y1,x,z)
1170+#define cimg_for_in9YZC(img,y0,z0,c0,y1,z1,c1,y,z,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9YZ(img,y0,z0,y1,z1,y,z)
1171+#define cimg_for_in9XYZC(img,x0,y0,z0,c0,x1,y1,z1,c1,x,y,z,c) cimg_for_in9C(img,c0,c1,c) cimg_for_in9XYZ(img,x0,y0,z0,x1,y1,z1,x,y,z)
1172+
1173+#define cimg_for2x2(img,x,y,z,c,I,T) \
1174+ cimg_for2((img)._height,y) for (int x = 0, \
1175+ _n1##x = (int)( \
1176+ (I[0] = (T)(img)(0,y,z,c)), \
1177+ (I[2] = (T)(img)(0,_n1##y,z,c)), \
1178+ 1>=(img)._width?(img).width()-1:1); \
1179+ (_n1##x<(img).width() && ( \
1180+ (I[1] = (T)(img)(_n1##x,y,z,c)), \
1181+ (I[3] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \
1182+ x==--_n1##x; \
1183+ I[0] = I[1], \
1184+ I[2] = I[3], \
1185+ ++x, ++_n1##x)
1186+
1187+#define cimg_for_in2x2(img,x0,y0,x1,y1,x,y,z,c,I,T) \
1188+ cimg_for_in2((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \
1189+ _n1##x = (int)( \
1190+ (I[0] = (T)(img)(x,y,z,c)), \
1191+ (I[2] = (T)(img)(x,_n1##y,z,c)), \
1192+ x+1>=(int)(img)._width?(img).width()-1:x+1); \
1193+ x<=(int)(x1) && ((_n1##x<(img).width() && ( \
1194+ (I[1] = (T)(img)(_n1##x,y,z,c)), \
1195+ (I[3] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \
1196+ x==--_n1##x); \
1197+ I[0] = I[1], \
1198+ I[2] = I[3], \
1199+ ++x, ++_n1##x)
1200+
1201+#define cimg_for3x3(img,x,y,z,c,I,T) \
1202+ cimg_for3((img)._height,y) for (int x = 0, \
1203+ _p1##x = 0, \
1204+ _n1##x = (int)( \
1205+ (I[0] = I[1] = (T)(img)(0,_p1##y,z,c)), \
1206+ (I[3] = I[4] = (T)(img)(0,y,z,c)), \
1207+ (I[6] = I[7] = (T)(img)(0,_n1##y,z,c)), \
1208+ 1>=(img)._width?(img).width()-1:1); \
1209+ (_n1##x<(img).width() && ( \
1210+ (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \
1211+ (I[5] = (T)(img)(_n1##x,y,z,c)), \
1212+ (I[8] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \
1213+ x==--_n1##x; \
1214+ I[0] = I[1], I[1] = I[2], \
1215+ I[3] = I[4], I[4] = I[5], \
1216+ I[6] = I[7], I[7] = I[8], \
1217+ _p1##x = x++, ++_n1##x)
1218+
1219+#define cimg_for_in3x3(img,x0,y0,x1,y1,x,y,z,c,I,T) \
1220+ cimg_for_in3((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \
1221+ _p1##x = x-1<0?0:x-1, \
1222+ _n1##x = (int)( \
1223+ (I[0] = (T)(img)(_p1##x,_p1##y,z,c)), \
1224+ (I[3] = (T)(img)(_p1##x,y,z,c)), \
1225+ (I[6] = (T)(img)(_p1##x,_n1##y,z,c)), \
1226+ (I[1] = (T)(img)(x,_p1##y,z,c)), \
1227+ (I[4] = (T)(img)(x,y,z,c)), \
1228+ (I[7] = (T)(img)(x,_n1##y,z,c)), \
1229+ x+1>=(int)(img)._width?(img).width()-1:x+1); \
1230+ x<=(int)(x1) && ((_n1##x<(img).width() && ( \
1231+ (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \
1232+ (I[5] = (T)(img)(_n1##x,y,z,c)), \
1233+ (I[8] = (T)(img)(_n1##x,_n1##y,z,c)),1)) || \
1234+ x==--_n1##x); \
1235+ I[0] = I[1], I[1] = I[2], \
1236+ I[3] = I[4], I[4] = I[5], \
1237+ I[6] = I[7], I[7] = I[8], \
1238+ _p1##x = x++, ++_n1##x)
1239+
1240+#define cimg_for4x4(img,x,y,z,c,I,T) \
1241+ cimg_for4((img)._height,y) for (int x = 0, \
1242+ _p1##x = 0, \
1243+ _n1##x = 1>=(img)._width?(img).width()-1:1, \
1244+ _n2##x = (int)( \
1245+ (I[0] = I[1] = (T)(img)(0,_p1##y,z,c)), \
1246+ (I[4] = I[5] = (T)(img)(0,y,z,c)), \
1247+ (I[8] = I[9] = (T)(img)(0,_n1##y,z,c)), \
1248+ (I[12] = I[13] = (T)(img)(0,_n2##y,z,c)), \
1249+ (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \
1250+ (I[6] = (T)(img)(_n1##x,y,z,c)), \
1251+ (I[10] = (T)(img)(_n1##x,_n1##y,z,c)), \
1252+ (I[14] = (T)(img)(_n1##x,_n2##y,z,c)), \
1253+ 2>=(img)._width?(img).width()-1:2); \
1254+ (_n2##x<(img).width() && ( \
1255+ (I[3] = (T)(img)(_n2##x,_p1##y,z,c)), \
1256+ (I[7] = (T)(img)(_n2##x,y,z,c)), \
1257+ (I[11] = (T)(img)(_n2##x,_n1##y,z,c)), \
1258+ (I[15] = (T)(img)(_n2##x,_n2##y,z,c)),1)) || \
1259+ _n1##x==--_n2##x || x==(_n2##x = --_n1##x); \
1260+ I[0] = I[1], I[1] = I[2], I[2] = I[3], \
1261+ I[4] = I[5], I[5] = I[6], I[6] = I[7], \
1262+ I[8] = I[9], I[9] = I[10], I[10] = I[11], \
1263+ I[12] = I[13], I[13] = I[14], I[14] = I[15], \
1264+ _p1##x = x++, ++_n1##x, ++_n2##x)
1265+
1266+#define cimg_for_in4x4(img,x0,y0,x1,y1,x,y,z,c,I,T) \
1267+ cimg_for_in4((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \
1268+ _p1##x = x-1<0?0:x-1, \
1269+ _n1##x = x+1>=(int)(img)._width?(img).width()-1:x+1, \
1270+ _n2##x = (int)( \
1271+ (I[0] = (T)(img)(_p1##x,_p1##y,z,c)), \
1272+ (I[4] = (T)(img)(_p1##x,y,z,c)), \
1273+ (I[8] = (T)(img)(_p1##x,_n1##y,z,c)), \
1274+ (I[12] = (T)(img)(_p1##x,_n2##y,z,c)), \
1275+ (I[1] = (T)(img)(x,_p1##y,z,c)), \
1276+ (I[5] = (T)(img)(x,y,z,c)), \
1277+ (I[9] = (T)(img)(x,_n1##y,z,c)), \
1278+ (I[13] = (T)(img)(x,_n2##y,z,c)), \
1279+ (I[2] = (T)(img)(_n1##x,_p1##y,z,c)), \
1280+ (I[6] = (T)(img)(_n1##x,y,z,c)), \
1281+ (I[10] = (T)(img)(_n1##x,_n1##y,z,c)), \
1282+ (I[14] = (T)(img)(_n1##x,_n2##y,z,c)), \
1283+ x+2>=(int)(img)._width?(img).width()-1:x+2); \
1284+ x<=(int)(x1) && ((_n2##x<(img).width() && ( \
1285+ (I[3] = (T)(img)(_n2##x,_p1##y,z,c)), \
1286+ (I[7] = (T)(img)(_n2##x,y,z,c)), \
1287+ (I[11] = (T)(img)(_n2##x,_n1##y,z,c)), \
1288+ (I[15] = (T)(img)(_n2##x,_n2##y,z,c)),1)) || \
1289+ _n1##x==--_n2##x || x==(_n2##x = --_n1##x)); \
1290+ I[0] = I[1], I[1] = I[2], I[2] = I[3], \
1291+ I[4] = I[5], I[5] = I[6], I[6] = I[7], \
1292+ I[8] = I[9], I[9] = I[10], I[10] = I[11], \
1293+ I[12] = I[13], I[13] = I[14], I[14] = I[15], \
1294+ _p1##x = x++, ++_n1##x, ++_n2##x)
1295+
1296+#define cimg_for5x5(img,x,y,z,c,I,T) \
1297+ cimg_for5((img)._height,y) for (int x = 0, \
1298+ _p2##x = 0, _p1##x = 0, \
1299+ _n1##x = 1>=(img)._width?(img).width()-1:1, \
1300+ _n2##x = (int)( \
1301+ (I[0] = I[1] = I[2] = (T)(img)(0,_p2##y,z,c)), \
1302+ (I[5] = I[6] = I[7] = (T)(img)(0,_p1##y,z,c)), \
1303+ (I[10] = I[11] = I[12] = (T)(img)(0,y,z,c)), \
1304+ (I[15] = I[16] = I[17] = (T)(img)(0,_n1##y,z,c)), \
1305+ (I[20] = I[21] = I[22] = (T)(img)(0,_n2##y,z,c)), \
1306+ (I[3] = (T)(img)(_n1##x,_p2##y,z,c)), \
1307+ (I[8] = (T)(img)(_n1##x,_p1##y,z,c)), \
1308+ (I[13] = (T)(img)(_n1##x,y,z,c)), \
1309+ (I[18] = (T)(img)(_n1##x,_n1##y,z,c)), \
1310+ (I[23] = (T)(img)(_n1##x,_n2##y,z,c)), \
1311+ 2>=(img)._width?(img).width()-1:2); \
1312+ (_n2##x<(img).width() && ( \
1313+ (I[4] = (T)(img)(_n2##x,_p2##y,z,c)), \
1314+ (I[9] = (T)(img)(_n2##x,_p1##y,z,c)), \
1315+ (I[14] = (T)(img)(_n2##x,y,z,c)), \
1316+ (I[19] = (T)(img)(_n2##x,_n1##y,z,c)), \
1317+ (I[24] = (T)(img)(_n2##x,_n2##y,z,c)),1)) || \
1318+ _n1##x==--_n2##x || x==(_n2##x = --_n1##x); \
1319+ I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], \
1320+ I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], \
1321+ I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], \
1322+ I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], \
1323+ I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \
1324+ _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x)
1325+
1326+#define cimg_for_in5x5(img,x0,y0,x1,y1,x,y,z,c,I,T) \
1327+ cimg_for_in5((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \
1328+ _p2##x = x-2<0?0:x-2, \
1329+ _p1##x = x-1<0?0:x-1, \
1330+ _n1##x = x+1>=(int)(img)._width?(img).width()-1:x+1, \
1331+ _n2##x = (int)( \
1332+ (I[0] = (T)(img)(_p2##x,_p2##y,z,c)), \
1333+ (I[5] = (T)(img)(_p2##x,_p1##y,z,c)), \
1334+ (I[10] = (T)(img)(_p2##x,y,z,c)), \
1335+ (I[15] = (T)(img)(_p2##x,_n1##y,z,c)), \
1336+ (I[20] = (T)(img)(_p2##x,_n2##y,z,c)), \
1337+ (I[1] = (T)(img)(_p1##x,_p2##y,z,c)), \
1338+ (I[6] = (T)(img)(_p1##x,_p1##y,z,c)), \
1339+ (I[11] = (T)(img)(_p1##x,y,z,c)), \
1340+ (I[16] = (T)(img)(_p1##x,_n1##y,z,c)), \
1341+ (I[21] = (T)(img)(_p1##x,_n2##y,z,c)), \
1342+ (I[2] = (T)(img)(x,_p2##y,z,c)), \
1343+ (I[7] = (T)(img)(x,_p1##y,z,c)), \
1344+ (I[12] = (T)(img)(x,y,z,c)), \
1345+ (I[17] = (T)(img)(x,_n1##y,z,c)), \
1346+ (I[22] = (T)(img)(x,_n2##y,z,c)), \
1347+ (I[3] = (T)(img)(_n1##x,_p2##y,z,c)), \
1348+ (I[8] = (T)(img)(_n1##x,_p1##y,z,c)), \
1349+ (I[13] = (T)(img)(_n1##x,y,z,c)), \
1350+ (I[18] = (T)(img)(_n1##x,_n1##y,z,c)), \
1351+ (I[23] = (T)(img)(_n1##x,_n2##y,z,c)), \
1352+ x+2>=(int)(img)._width?(img).width()-1:x+2); \
1353+ x<=(int)(x1) && ((_n2##x<(img).width() && ( \
1354+ (I[4] = (T)(img)(_n2##x,_p2##y,z,c)), \
1355+ (I[9] = (T)(img)(_n2##x,_p1##y,z,c)), \
1356+ (I[14] = (T)(img)(_n2##x,y,z,c)), \
1357+ (I[19] = (T)(img)(_n2##x,_n1##y,z,c)), \
1358+ (I[24] = (T)(img)(_n2##x,_n2##y,z,c)),1)) || \
1359+ _n1##x==--_n2##x || x==(_n2##x = --_n1##x)); \
1360+ I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], \
1361+ I[5] = I[6], I[6] = I[7], I[7] = I[8], I[8] = I[9], \
1362+ I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], \
1363+ I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], \
1364+ I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], \
1365+ _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x)
1366+
1367+#define cimg_for6x6(img,x,y,z,c,I,T) \
1368+ cimg_for6((img)._height,y) for (int x = 0, \
1369+ _p2##x = 0, _p1##x = 0, \
1370+ _n1##x = 1>=(img)._width?(img).width()-1:1, \
1371+ _n2##x = 2>=(img)._width?(img).width()-1:2, \
1372+ _n3##x = (int)( \
1373+ (I[0] = I[1] = I[2] = (T)(img)(0,_p2##y,z,c)), \
1374+ (I[6] = I[7] = I[8] = (T)(img)(0,_p1##y,z,c)), \
1375+ (I[12] = I[13] = I[14] = (T)(img)(0,y,z,c)), \
1376+ (I[18] = I[19] = I[20] = (T)(img)(0,_n1##y,z,c)), \
1377+ (I[24] = I[25] = I[26] = (T)(img)(0,_n2##y,z,c)), \
1378+ (I[30] = I[31] = I[32] = (T)(img)(0,_n3##y,z,c)), \
1379+ (I[3] = (T)(img)(_n1##x,_p2##y,z,c)), \
1380+ (I[9] = (T)(img)(_n1##x,_p1##y,z,c)), \
1381+ (I[15] = (T)(img)(_n1##x,y,z,c)), \
1382+ (I[21] = (T)(img)(_n1##x,_n1##y,z,c)), \
1383+ (I[27] = (T)(img)(_n1##x,_n2##y,z,c)), \
1384+ (I[33] = (T)(img)(_n1##x,_n3##y,z,c)), \
1385+ (I[4] = (T)(img)(_n2##x,_p2##y,z,c)), \
1386+ (I[10] = (T)(img)(_n2##x,_p1##y,z,c)), \
1387+ (I[16] = (T)(img)(_n2##x,y,z,c)), \
1388+ (I[22] = (T)(img)(_n2##x,_n1##y,z,c)), \
1389+ (I[28] = (T)(img)(_n2##x,_n2##y,z,c)), \
1390+ (I[34] = (T)(img)(_n2##x,_n3##y,z,c)), \
1391+ 3>=(img)._width?(img).width()-1:3); \
1392+ (_n3##x<(img).width() && ( \
1393+ (I[5] = (T)(img)(_n3##x,_p2##y,z,c)), \
1394+ (I[11] = (T)(img)(_n3##x,_p1##y,z,c)), \
1395+ (I[17] = (T)(img)(_n3##x,y,z,c)), \
1396+ (I[23] = (T)(img)(_n3##x,_n1##y,z,c)), \
1397+ (I[29] = (T)(img)(_n3##x,_n2##y,z,c)), \
1398+ (I[35] = (T)(img)(_n3##x,_n3##y,z,c)),1)) || \
1399+ _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3## x = _n2##x = --_n1##x); \
1400+ I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], \
1401+ I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], \
1402+ I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], \
1403+ I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \
1404+ I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \
1405+ I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \
1406+ _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x)
1407+
1408+#define cimg_for_in6x6(img,x0,y0,x1,y1,x,y,z,c,I,T) \
1409+ cimg_for_in6((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)x0, \
1410+ _p2##x = x-2<0?0:x-2, \
1411+ _p1##x = x-1<0?0:x-1, \
1412+ _n1##x = x+1>=(int)(img)._width?(img).width()-1:x+1, \
1413+ _n2##x = x+2>=(int)(img)._width?(img).width()-1:x+2, \
1414+ _n3##x = (int)( \
1415+ (I[0] = (T)(img)(_p2##x,_p2##y,z,c)), \
1416+ (I[6] = (T)(img)(_p2##x,_p1##y,z,c)), \
1417+ (I[12] = (T)(img)(_p2##x,y,z,c)), \
1418+ (I[18] = (T)(img)(_p2##x,_n1##y,z,c)), \
1419+ (I[24] = (T)(img)(_p2##x,_n2##y,z,c)), \
1420+ (I[30] = (T)(img)(_p2##x,_n3##y,z,c)), \
1421+ (I[1] = (T)(img)(_p1##x,_p2##y,z,c)), \
1422+ (I[7] = (T)(img)(_p1##x,_p1##y,z,c)), \
1423+ (I[13] = (T)(img)(_p1##x,y,z,c)), \
1424+ (I[19] = (T)(img)(_p1##x,_n1##y,z,c)), \
1425+ (I[25] = (T)(img)(_p1##x,_n2##y,z,c)), \
1426+ (I[31] = (T)(img)(_p1##x,_n3##y,z,c)), \
1427+ (I[2] = (T)(img)(x,_p2##y,z,c)), \
1428+ (I[8] = (T)(img)(x,_p1##y,z,c)), \
1429+ (I[14] = (T)(img)(x,y,z,c)), \
1430+ (I[20] = (T)(img)(x,_n1##y,z,c)), \
1431+ (I[26] = (T)(img)(x,_n2##y,z,c)), \
1432+ (I[32] = (T)(img)(x,_n3##y,z,c)), \
1433+ (I[3] = (T)(img)(_n1##x,_p2##y,z,c)), \
1434+ (I[9] = (T)(img)(_n1##x,_p1##y,z,c)), \
1435+ (I[15] = (T)(img)(_n1##x,y,z,c)), \
1436+ (I[21] = (T)(img)(_n1##x,_n1##y,z,c)), \
1437+ (I[27] = (T)(img)(_n1##x,_n2##y,z,c)), \
1438+ (I[33] = (T)(img)(_n1##x,_n3##y,z,c)), \
1439+ (I[4] = (T)(img)(_n2##x,_p2##y,z,c)), \
1440+ (I[10] = (T)(img)(_n2##x,_p1##y,z,c)), \
1441+ (I[16] = (T)(img)(_n2##x,y,z,c)), \
1442+ (I[22] = (T)(img)(_n2##x,_n1##y,z,c)), \
1443+ (I[28] = (T)(img)(_n2##x,_n2##y,z,c)), \
1444+ (I[34] = (T)(img)(_n2##x,_n3##y,z,c)), \
1445+ x+3>=(int)(img)._width?(img).width()-1:x+3); \
1446+ x<=(int)(x1) && ((_n3##x<(img).width() && ( \
1447+ (I[5] = (T)(img)(_n3##x,_p2##y,z,c)), \
1448+ (I[11] = (T)(img)(_n3##x,_p1##y,z,c)), \
1449+ (I[17] = (T)(img)(_n3##x,y,z,c)), \
1450+ (I[23] = (T)(img)(_n3##x,_n1##y,z,c)), \
1451+ (I[29] = (T)(img)(_n3##x,_n2##y,z,c)), \
1452+ (I[35] = (T)(img)(_n3##x,_n3##y,z,c)),1)) || \
1453+ _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3## x = _n2##x = --_n1##x)); \
1454+ I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], \
1455+ I[6] = I[7], I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], \
1456+ I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], \
1457+ I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \
1458+ I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], \
1459+ I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \
1460+ _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x)
1461+
1462+#define cimg_for7x7(img,x,y,z,c,I,T) \
1463+ cimg_for7((img)._height,y) for (int x = 0, \
1464+ _p3##x = 0, _p2##x = 0, _p1##x = 0, \
1465+ _n1##x = 1>=(img)._width?(img).width()-1:1, \
1466+ _n2##x = 2>=(img)._width?(img).width()-1:2, \
1467+ _n3##x = (int)( \
1468+ (I[0] = I[1] = I[2] = I[3] = (T)(img)(0,_p3##y,z,c)), \
1469+ (I[7] = I[8] = I[9] = I[10] = (T)(img)(0,_p2##y,z,c)), \
1470+ (I[14] = I[15] = I[16] = I[17] = (T)(img)(0,_p1##y,z,c)), \
1471+ (I[21] = I[22] = I[23] = I[24] = (T)(img)(0,y,z,c)), \
1472+ (I[28] = I[29] = I[30] = I[31] = (T)(img)(0,_n1##y,z,c)), \
1473+ (I[35] = I[36] = I[37] = I[38] = (T)(img)(0,_n2##y,z,c)), \
1474+ (I[42] = I[43] = I[44] = I[45] = (T)(img)(0,_n3##y,z,c)), \
1475+ (I[4] = (T)(img)(_n1##x,_p3##y,z,c)), \
1476+ (I[11] = (T)(img)(_n1##x,_p2##y,z,c)), \
1477+ (I[18] = (T)(img)(_n1##x,_p1##y,z,c)), \
1478+ (I[25] = (T)(img)(_n1##x,y,z,c)), \
1479+ (I[32] = (T)(img)(_n1##x,_n1##y,z,c)), \
1480+ (I[39] = (T)(img)(_n1##x,_n2##y,z,c)), \
1481+ (I[46] = (T)(img)(_n1##x,_n3##y,z,c)), \
1482+ (I[5] = (T)(img)(_n2##x,_p3##y,z,c)), \
1483+ (I[12] = (T)(img)(_n2##x,_p2##y,z,c)), \
1484+ (I[19] = (T)(img)(_n2##x,_p1##y,z,c)), \
1485+ (I[26] = (T)(img)(_n2##x,y,z,c)), \
1486+ (I[33] = (T)(img)(_n2##x,_n1##y,z,c)), \
1487+ (I[40] = (T)(img)(_n2##x,_n2##y,z,c)), \
1488+ (I[47] = (T)(img)(_n2##x,_n3##y,z,c)), \
1489+ 3>=(img)._width?(img).width()-1:3); \
1490+ (_n3##x<(img).width() && ( \
1491+ (I[6] = (T)(img)(_n3##x,_p3##y,z,c)), \
1492+ (I[13] = (T)(img)(_n3##x,_p2##y,z,c)), \
1493+ (I[20] = (T)(img)(_n3##x,_p1##y,z,c)), \
1494+ (I[27] = (T)(img)(_n3##x,y,z,c)), \
1495+ (I[34] = (T)(img)(_n3##x,_n1##y,z,c)), \
1496+ (I[41] = (T)(img)(_n3##x,_n2##y,z,c)), \
1497+ (I[48] = (T)(img)(_n3##x,_n3##y,z,c)),1)) || \
1498+ _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3##x = _n2##x = --_n1##x); \
1499+ I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], \
1500+ I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], \
1501+ I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], \
1502+ I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], \
1503+ I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], \
1504+ I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \
1505+ I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], \
1506+ _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x)
1507+
1508+#define cimg_for_in7x7(img,x0,y0,x1,y1,x,y,z,c,I,T) \
1509+ cimg_for_in7((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \
1510+ _p3##x = x-3<0?0:x-3, \
1511+ _p2##x = x-2<0?0:x-2, \
1512+ _p1##x = x-1<0?0:x-1, \
1513+ _n1##x = x+1>=(int)(img)._width?(img).width()-1:x+1, \
1514+ _n2##x = x+2>=(int)(img)._width?(img).width()-1:x+2, \
1515+ _n3##x = (int)( \
1516+ (I[0] = (T)(img)(_p3##x,_p3##y,z,c)), \
1517+ (I[7] = (T)(img)(_p3##x,_p2##y,z,c)), \
1518+ (I[14] = (T)(img)(_p3##x,_p1##y,z,c)), \
1519+ (I[21] = (T)(img)(_p3##x,y,z,c)), \
1520+ (I[28] = (T)(img)(_p3##x,_n1##y,z,c)), \
1521+ (I[35] = (T)(img)(_p3##x,_n2##y,z,c)), \
1522+ (I[42] = (T)(img)(_p3##x,_n3##y,z,c)), \
1523+ (I[1] = (T)(img)(_p2##x,_p3##y,z,c)), \
1524+ (I[8] = (T)(img)(_p2##x,_p2##y,z,c)), \
1525+ (I[15] = (T)(img)(_p2##x,_p1##y,z,c)), \
1526+ (I[22] = (T)(img)(_p2##x,y,z,c)), \
1527+ (I[29] = (T)(img)(_p2##x,_n1##y,z,c)), \
1528+ (I[36] = (T)(img)(_p2##x,_n2##y,z,c)), \
1529+ (I[43] = (T)(img)(_p2##x,_n3##y,z,c)), \
1530+ (I[2] = (T)(img)(_p1##x,_p3##y,z,c)), \
1531+ (I[9] = (T)(img)(_p1##x,_p2##y,z,c)), \
1532+ (I[16] = (T)(img)(_p1##x,_p1##y,z,c)), \
1533+ (I[23] = (T)(img)(_p1##x,y,z,c)), \
1534+ (I[30] = (T)(img)(_p1##x,_n1##y,z,c)), \
1535+ (I[37] = (T)(img)(_p1##x,_n2##y,z,c)), \
1536+ (I[44] = (T)(img)(_p1##x,_n3##y,z,c)), \
1537+ (I[3] = (T)(img)(x,_p3##y,z,c)), \
1538+ (I[10] = (T)(img)(x,_p2##y,z,c)), \
1539+ (I[17] = (T)(img)(x,_p1##y,z,c)), \
1540+ (I[24] = (T)(img)(x,y,z,c)), \
1541+ (I[31] = (T)(img)(x,_n1##y,z,c)), \
1542+ (I[38] = (T)(img)(x,_n2##y,z,c)), \
1543+ (I[45] = (T)(img)(x,_n3##y,z,c)), \
1544+ (I[4] = (T)(img)(_n1##x,_p3##y,z,c)), \
1545+ (I[11] = (T)(img)(_n1##x,_p2##y,z,c)), \
1546+ (I[18] = (T)(img)(_n1##x,_p1##y,z,c)), \
1547+ (I[25] = (T)(img)(_n1##x,y,z,c)), \
1548+ (I[32] = (T)(img)(_n1##x,_n1##y,z,c)), \
1549+ (I[39] = (T)(img)(_n1##x,_n2##y,z,c)), \
1550+ (I[46] = (T)(img)(_n1##x,_n3##y,z,c)), \
1551+ (I[5] = (T)(img)(_n2##x,_p3##y,z,c)), \
1552+ (I[12] = (T)(img)(_n2##x,_p2##y,z,c)), \
1553+ (I[19] = (T)(img)(_n2##x,_p1##y,z,c)), \
1554+ (I[26] = (T)(img)(_n2##x,y,z,c)), \
1555+ (I[33] = (T)(img)(_n2##x,_n1##y,z,c)), \
1556+ (I[40] = (T)(img)(_n2##x,_n2##y,z,c)), \
1557+ (I[47] = (T)(img)(_n2##x,_n3##y,z,c)), \
1558+ x+3>=(int)(img)._width?(img).width()-1:x+3); \
1559+ x<=(int)(x1) && ((_n3##x<(img).width() && ( \
1560+ (I[6] = (T)(img)(_n3##x,_p3##y,z,c)), \
1561+ (I[13] = (T)(img)(_n3##x,_p2##y,z,c)), \
1562+ (I[20] = (T)(img)(_n3##x,_p1##y,z,c)), \
1563+ (I[27] = (T)(img)(_n3##x,y,z,c)), \
1564+ (I[34] = (T)(img)(_n3##x,_n1##y,z,c)), \
1565+ (I[41] = (T)(img)(_n3##x,_n2##y,z,c)), \
1566+ (I[48] = (T)(img)(_n3##x,_n3##y,z,c)),1)) || \
1567+ _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n3##x = _n2##x = --_n1##x)); \
1568+ I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], \
1569+ I[7] = I[8], I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], \
1570+ I[14] = I[15], I[15] = I[16], I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], \
1571+ I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], I[26] = I[27], \
1572+ I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], \
1573+ I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], \
1574+ I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], I[47] = I[48], \
1575+ _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x)
1576+
1577+#define cimg_for8x8(img,x,y,z,c,I,T) \
1578+ cimg_for8((img)._height,y) for (int x = 0, \
1579+ _p3##x = 0, _p2##x = 0, _p1##x = 0, \
1580+ _n1##x = 1>=((img)._width)?(img).width()-1:1, \
1581+ _n2##x = 2>=((img)._width)?(img).width()-1:2, \
1582+ _n3##x = 3>=((img)._width)?(img).width()-1:3, \
1583+ _n4##x = (int)( \
1584+ (I[0] = I[1] = I[2] = I[3] = (T)(img)(0,_p3##y,z,c)), \
1585+ (I[8] = I[9] = I[10] = I[11] = (T)(img)(0,_p2##y,z,c)), \
1586+ (I[16] = I[17] = I[18] = I[19] = (T)(img)(0,_p1##y,z,c)), \
1587+ (I[24] = I[25] = I[26] = I[27] = (T)(img)(0,y,z,c)), \
1588+ (I[32] = I[33] = I[34] = I[35] = (T)(img)(0,_n1##y,z,c)), \
1589+ (I[40] = I[41] = I[42] = I[43] = (T)(img)(0,_n2##y,z,c)), \
1590+ (I[48] = I[49] = I[50] = I[51] = (T)(img)(0,_n3##y,z,c)), \
1591+ (I[56] = I[57] = I[58] = I[59] = (T)(img)(0,_n4##y,z,c)), \
1592+ (I[4] = (T)(img)(_n1##x,_p3##y,z,c)), \
1593+ (I[12] = (T)(img)(_n1##x,_p2##y,z,c)), \
1594+ (I[20] = (T)(img)(_n1##x,_p1##y,z,c)), \
1595+ (I[28] = (T)(img)(_n1##x,y,z,c)), \
1596+ (I[36] = (T)(img)(_n1##x,_n1##y,z,c)), \
1597+ (I[44] = (T)(img)(_n1##x,_n2##y,z,c)), \
1598+ (I[52] = (T)(img)(_n1##x,_n3##y,z,c)), \
1599+ (I[60] = (T)(img)(_n1##x,_n4##y,z,c)), \
1600+ (I[5] = (T)(img)(_n2##x,_p3##y,z,c)), \
1601+ (I[13] = (T)(img)(_n2##x,_p2##y,z,c)), \
1602+ (I[21] = (T)(img)(_n2##x,_p1##y,z,c)), \
1603+ (I[29] = (T)(img)(_n2##x,y,z,c)), \
1604+ (I[37] = (T)(img)(_n2##x,_n1##y,z,c)), \
1605+ (I[45] = (T)(img)(_n2##x,_n2##y,z,c)), \
1606+ (I[53] = (T)(img)(_n2##x,_n3##y,z,c)), \
1607+ (I[61] = (T)(img)(_n2##x,_n4##y,z,c)), \
1608+ (I[6] = (T)(img)(_n3##x,_p3##y,z,c)), \
1609+ (I[14] = (T)(img)(_n3##x,_p2##y,z,c)), \
1610+ (I[22] = (T)(img)(_n3##x,_p1##y,z,c)), \
1611+ (I[30] = (T)(img)(_n3##x,y,z,c)), \
1612+ (I[38] = (T)(img)(_n3##x,_n1##y,z,c)), \
1613+ (I[46] = (T)(img)(_n3##x,_n2##y,z,c)), \
1614+ (I[54] = (T)(img)(_n3##x,_n3##y,z,c)), \
1615+ (I[62] = (T)(img)(_n3##x,_n4##y,z,c)), \
1616+ 4>=((img)._width)?(img).width()-1:4); \
1617+ (_n4##x<(img).width() && ( \
1618+ (I[7] = (T)(img)(_n4##x,_p3##y,z,c)), \
1619+ (I[15] = (T)(img)(_n4##x,_p2##y,z,c)), \
1620+ (I[23] = (T)(img)(_n4##x,_p1##y,z,c)), \
1621+ (I[31] = (T)(img)(_n4##x,y,z,c)), \
1622+ (I[39] = (T)(img)(_n4##x,_n1##y,z,c)), \
1623+ (I[47] = (T)(img)(_n4##x,_n2##y,z,c)), \
1624+ (I[55] = (T)(img)(_n4##x,_n3##y,z,c)), \
1625+ (I[63] = (T)(img)(_n4##x,_n4##y,z,c)),1)) || \
1626+ _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x); \
1627+ I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], \
1628+ I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], \
1629+ I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \
1630+ I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], \
1631+ I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \
1632+ I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \
1633+ I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \
1634+ I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], \
1635+ _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x)
1636+
1637+#define cimg_for_in8x8(img,x0,y0,x1,y1,x,y,z,c,I,T) \
1638+ cimg_for_in8((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \
1639+ _p3##x = x-3<0?0:x-3, \
1640+ _p2##x = x-2<0?0:x-2, \
1641+ _p1##x = x-1<0?0:x-1, \
1642+ _n1##x = x+1>=(img).width()?(img).width()-1:x+1, \
1643+ _n2##x = x+2>=(img).width()?(img).width()-1:x+2, \
1644+ _n3##x = x+3>=(img).width()?(img).width()-1:x+3, \
1645+ _n4##x = (int)( \
1646+ (I[0] = (T)(img)(_p3##x,_p3##y,z,c)), \
1647+ (I[8] = (T)(img)(_p3##x,_p2##y,z,c)), \
1648+ (I[16] = (T)(img)(_p3##x,_p1##y,z,c)), \
1649+ (I[24] = (T)(img)(_p3##x,y,z,c)), \
1650+ (I[32] = (T)(img)(_p3##x,_n1##y,z,c)), \
1651+ (I[40] = (T)(img)(_p3##x,_n2##y,z,c)), \
1652+ (I[48] = (T)(img)(_p3##x,_n3##y,z,c)), \
1653+ (I[56] = (T)(img)(_p3##x,_n4##y,z,c)), \
1654+ (I[1] = (T)(img)(_p2##x,_p3##y,z,c)), \
1655+ (I[9] = (T)(img)(_p2##x,_p2##y,z,c)), \
1656+ (I[17] = (T)(img)(_p2##x,_p1##y,z,c)), \
1657+ (I[25] = (T)(img)(_p2##x,y,z,c)), \
1658+ (I[33] = (T)(img)(_p2##x,_n1##y,z,c)), \
1659+ (I[41] = (T)(img)(_p2##x,_n2##y,z,c)), \
1660+ (I[49] = (T)(img)(_p2##x,_n3##y,z,c)), \
1661+ (I[57] = (T)(img)(_p2##x,_n4##y,z,c)), \
1662+ (I[2] = (T)(img)(_p1##x,_p3##y,z,c)), \
1663+ (I[10] = (T)(img)(_p1##x,_p2##y,z,c)), \
1664+ (I[18] = (T)(img)(_p1##x,_p1##y,z,c)), \
1665+ (I[26] = (T)(img)(_p1##x,y,z,c)), \
1666+ (I[34] = (T)(img)(_p1##x,_n1##y,z,c)), \
1667+ (I[42] = (T)(img)(_p1##x,_n2##y,z,c)), \
1668+ (I[50] = (T)(img)(_p1##x,_n3##y,z,c)), \
1669+ (I[58] = (T)(img)(_p1##x,_n4##y,z,c)), \
1670+ (I[3] = (T)(img)(x,_p3##y,z,c)), \
1671+ (I[11] = (T)(img)(x,_p2##y,z,c)), \
1672+ (I[19] = (T)(img)(x,_p1##y,z,c)), \
1673+ (I[27] = (T)(img)(x,y,z,c)), \
1674+ (I[35] = (T)(img)(x,_n1##y,z,c)), \
1675+ (I[43] = (T)(img)(x,_n2##y,z,c)), \
1676+ (I[51] = (T)(img)(x,_n3##y,z,c)), \
1677+ (I[59] = (T)(img)(x,_n4##y,z,c)), \
1678+ (I[4] = (T)(img)(_n1##x,_p3##y,z,c)), \
1679+ (I[12] = (T)(img)(_n1##x,_p2##y,z,c)), \
1680+ (I[20] = (T)(img)(_n1##x,_p1##y,z,c)), \
1681+ (I[28] = (T)(img)(_n1##x,y,z,c)), \
1682+ (I[36] = (T)(img)(_n1##x,_n1##y,z,c)), \
1683+ (I[44] = (T)(img)(_n1##x,_n2##y,z,c)), \
1684+ (I[52] = (T)(img)(_n1##x,_n3##y,z,c)), \
1685+ (I[60] = (T)(img)(_n1##x,_n4##y,z,c)), \
1686+ (I[5] = (T)(img)(_n2##x,_p3##y,z,c)), \
1687+ (I[13] = (T)(img)(_n2##x,_p2##y,z,c)), \
1688+ (I[21] = (T)(img)(_n2##x,_p1##y,z,c)), \
1689+ (I[29] = (T)(img)(_n2##x,y,z,c)), \
1690+ (I[37] = (T)(img)(_n2##x,_n1##y,z,c)), \
1691+ (I[45] = (T)(img)(_n2##x,_n2##y,z,c)), \
1692+ (I[53] = (T)(img)(_n2##x,_n3##y,z,c)), \
1693+ (I[61] = (T)(img)(_n2##x,_n4##y,z,c)), \
1694+ (I[6] = (T)(img)(_n3##x,_p3##y,z,c)), \
1695+ (I[14] = (T)(img)(_n3##x,_p2##y,z,c)), \
1696+ (I[22] = (T)(img)(_n3##x,_p1##y,z,c)), \
1697+ (I[30] = (T)(img)(_n3##x,y,z,c)), \
1698+ (I[38] = (T)(img)(_n3##x,_n1##y,z,c)), \
1699+ (I[46] = (T)(img)(_n3##x,_n2##y,z,c)), \
1700+ (I[54] = (T)(img)(_n3##x,_n3##y,z,c)), \
1701+ (I[62] = (T)(img)(_n3##x,_n4##y,z,c)), \
1702+ x+4>=(img).width()?(img).width()-1:x+4); \
1703+ x<=(int)(x1) && ((_n4##x<(img).width() && ( \
1704+ (I[7] = (T)(img)(_n4##x,_p3##y,z,c)), \
1705+ (I[15] = (T)(img)(_n4##x,_p2##y,z,c)), \
1706+ (I[23] = (T)(img)(_n4##x,_p1##y,z,c)), \
1707+ (I[31] = (T)(img)(_n4##x,y,z,c)), \
1708+ (I[39] = (T)(img)(_n4##x,_n1##y,z,c)), \
1709+ (I[47] = (T)(img)(_n4##x,_n2##y,z,c)), \
1710+ (I[55] = (T)(img)(_n4##x,_n3##y,z,c)), \
1711+ (I[63] = (T)(img)(_n4##x,_n4##y,z,c)),1)) || \
1712+ _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x)); \
1713+ I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], \
1714+ I[8] = I[9], I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], \
1715+ I[16] = I[17], I[17] = I[18], I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], \
1716+ I[24] = I[25], I[25] = I[26], I[26] = I[27], I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], \
1717+ I[32] = I[33], I[33] = I[34], I[34] = I[35], I[35] = I[36], I[36] = I[37], I[37] = I[38], I[38] = I[39], \
1718+ I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], I[44] = I[45], I[45] = I[46], I[46] = I[47], \
1719+ I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], I[53] = I[54], I[54] = I[55], \
1720+ I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], I[62] = I[63], \
1721+ _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x)
1722+
1723+#define cimg_for9x9(img,x,y,z,c,I,T) \
1724+ cimg_for9((img)._height,y) for (int x = 0, \
1725+ _p4##x = 0, _p3##x = 0, _p2##x = 0, _p1##x = 0, \
1726+ _n1##x = 1>=((img)._width)?(img).width()-1:1, \
1727+ _n2##x = 2>=((img)._width)?(img).width()-1:2, \
1728+ _n3##x = 3>=((img)._width)?(img).width()-1:3, \
1729+ _n4##x = (int)( \
1730+ (I[0] = I[1] = I[2] = I[3] = I[4] = (T)(img)(0,_p4##y,z,c)), \
1731+ (I[9] = I[10] = I[11] = I[12] = I[13] = (T)(img)(0,_p3##y,z,c)), \
1732+ (I[18] = I[19] = I[20] = I[21] = I[22] = (T)(img)(0,_p2##y,z,c)), \
1733+ (I[27] = I[28] = I[29] = I[30] = I[31] = (T)(img)(0,_p1##y,z,c)), \
1734+ (I[36] = I[37] = I[38] = I[39] = I[40] = (T)(img)(0,y,z,c)), \
1735+ (I[45] = I[46] = I[47] = I[48] = I[49] = (T)(img)(0,_n1##y,z,c)), \
1736+ (I[54] = I[55] = I[56] = I[57] = I[58] = (T)(img)(0,_n2##y,z,c)), \
1737+ (I[63] = I[64] = I[65] = I[66] = I[67] = (T)(img)(0,_n3##y,z,c)), \
1738+ (I[72] = I[73] = I[74] = I[75] = I[76] = (T)(img)(0,_n4##y,z,c)), \
1739+ (I[5] = (T)(img)(_n1##x,_p4##y,z,c)), \
1740+ (I[14] = (T)(img)(_n1##x,_p3##y,z,c)), \
1741+ (I[23] = (T)(img)(_n1##x,_p2##y,z,c)), \
1742+ (I[32] = (T)(img)(_n1##x,_p1##y,z,c)), \
1743+ (I[41] = (T)(img)(_n1##x,y,z,c)), \
1744+ (I[50] = (T)(img)(_n1##x,_n1##y,z,c)), \
1745+ (I[59] = (T)(img)(_n1##x,_n2##y,z,c)), \
1746+ (I[68] = (T)(img)(_n1##x,_n3##y,z,c)), \
1747+ (I[77] = (T)(img)(_n1##x,_n4##y,z,c)), \
1748+ (I[6] = (T)(img)(_n2##x,_p4##y,z,c)), \
1749+ (I[15] = (T)(img)(_n2##x,_p3##y,z,c)), \
1750+ (I[24] = (T)(img)(_n2##x,_p2##y,z,c)), \
1751+ (I[33] = (T)(img)(_n2##x,_p1##y,z,c)), \
1752+ (I[42] = (T)(img)(_n2##x,y,z,c)), \
1753+ (I[51] = (T)(img)(_n2##x,_n1##y,z,c)), \
1754+ (I[60] = (T)(img)(_n2##x,_n2##y,z,c)), \
1755+ (I[69] = (T)(img)(_n2##x,_n3##y,z,c)), \
1756+ (I[78] = (T)(img)(_n2##x,_n4##y,z,c)), \
1757+ (I[7] = (T)(img)(_n3##x,_p4##y,z,c)), \
1758+ (I[16] = (T)(img)(_n3##x,_p3##y,z,c)), \
1759+ (I[25] = (T)(img)(_n3##x,_p2##y,z,c)), \
1760+ (I[34] = (T)(img)(_n3##x,_p1##y,z,c)), \
1761+ (I[43] = (T)(img)(_n3##x,y,z,c)), \
1762+ (I[52] = (T)(img)(_n3##x,_n1##y,z,c)), \
1763+ (I[61] = (T)(img)(_n3##x,_n2##y,z,c)), \
1764+ (I[70] = (T)(img)(_n3##x,_n3##y,z,c)), \
1765+ (I[79] = (T)(img)(_n3##x,_n4##y,z,c)), \
1766+ 4>=((img)._width)?(img).width()-1:4); \
1767+ (_n4##x<(img).width() && ( \
1768+ (I[8] = (T)(img)(_n4##x,_p4##y,z,c)), \
1769+ (I[17] = (T)(img)(_n4##x,_p3##y,z,c)), \
1770+ (I[26] = (T)(img)(_n4##x,_p2##y,z,c)), \
1771+ (I[35] = (T)(img)(_n4##x,_p1##y,z,c)), \
1772+ (I[44] = (T)(img)(_n4##x,y,z,c)), \
1773+ (I[53] = (T)(img)(_n4##x,_n1##y,z,c)), \
1774+ (I[62] = (T)(img)(_n4##x,_n2##y,z,c)), \
1775+ (I[71] = (T)(img)(_n4##x,_n3##y,z,c)), \
1776+ (I[80] = (T)(img)(_n4##x,_n4##y,z,c)),1)) || \
1777+ _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x); \
1778+ I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], \
1779+ I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], \
1780+ I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], \
1781+ I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \
1782+ I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], \
1783+ I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], \
1784+ I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], \
1785+ I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \
1786+ I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], \
1787+ _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x)
1788+
1789+#define cimg_for_in9x9(img,x0,y0,x1,y1,x,y,z,c,I,T) \
1790+ cimg_for_in9((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \
1791+ _p4##x = x-4<0?0:x-4, \
1792+ _p3##x = x-3<0?0:x-3, \
1793+ _p2##x = x-2<0?0:x-2, \
1794+ _p1##x = x-1<0?0:x-1, \
1795+ _n1##x = x+1>=(img).width()?(img).width()-1:x+1, \
1796+ _n2##x = x+2>=(img).width()?(img).width()-1:x+2, \
1797+ _n3##x = x+3>=(img).width()?(img).width()-1:x+3, \
1798+ _n4##x = (int)( \
1799+ (I[0] = (T)(img)(_p4##x,_p4##y,z,c)), \
1800+ (I[9] = (T)(img)(_p4##x,_p3##y,z,c)), \
1801+ (I[18] = (T)(img)(_p4##x,_p2##y,z,c)), \
1802+ (I[27] = (T)(img)(_p4##x,_p1##y,z,c)), \
1803+ (I[36] = (T)(img)(_p4##x,y,z,c)), \
1804+ (I[45] = (T)(img)(_p4##x,_n1##y,z,c)), \
1805+ (I[54] = (T)(img)(_p4##x,_n2##y,z,c)), \
1806+ (I[63] = (T)(img)(_p4##x,_n3##y,z,c)), \
1807+ (I[72] = (T)(img)(_p4##x,_n4##y,z,c)), \
1808+ (I[1] = (T)(img)(_p3##x,_p4##y,z,c)), \
1809+ (I[10] = (T)(img)(_p3##x,_p3##y,z,c)), \
1810+ (I[19] = (T)(img)(_p3##x,_p2##y,z,c)), \
1811+ (I[28] = (T)(img)(_p3##x,_p1##y,z,c)), \
1812+ (I[37] = (T)(img)(_p3##x,y,z,c)), \
1813+ (I[46] = (T)(img)(_p3##x,_n1##y,z,c)), \
1814+ (I[55] = (T)(img)(_p3##x,_n2##y,z,c)), \
1815+ (I[64] = (T)(img)(_p3##x,_n3##y,z,c)), \
1816+ (I[73] = (T)(img)(_p3##x,_n4##y,z,c)), \
1817+ (I[2] = (T)(img)(_p2##x,_p4##y,z,c)), \
1818+ (I[11] = (T)(img)(_p2##x,_p3##y,z,c)), \
1819+ (I[20] = (T)(img)(_p2##x,_p2##y,z,c)), \
1820+ (I[29] = (T)(img)(_p2##x,_p1##y,z,c)), \
1821+ (I[38] = (T)(img)(_p2##x,y,z,c)), \
1822+ (I[47] = (T)(img)(_p2##x,_n1##y,z,c)), \
1823+ (I[56] = (T)(img)(_p2##x,_n2##y,z,c)), \
1824+ (I[65] = (T)(img)(_p2##x,_n3##y,z,c)), \
1825+ (I[74] = (T)(img)(_p2##x,_n4##y,z,c)), \
1826+ (I[3] = (T)(img)(_p1##x,_p4##y,z,c)), \
1827+ (I[12] = (T)(img)(_p1##x,_p3##y,z,c)), \
1828+ (I[21] = (T)(img)(_p1##x,_p2##y,z,c)), \
1829+ (I[30] = (T)(img)(_p1##x,_p1##y,z,c)), \
1830+ (I[39] = (T)(img)(_p1##x,y,z,c)), \
1831+ (I[48] = (T)(img)(_p1##x,_n1##y,z,c)), \
1832+ (I[57] = (T)(img)(_p1##x,_n2##y,z,c)), \
1833+ (I[66] = (T)(img)(_p1##x,_n3##y,z,c)), \
1834+ (I[75] = (T)(img)(_p1##x,_n4##y,z,c)), \
1835+ (I[4] = (T)(img)(x,_p4##y,z,c)), \
1836+ (I[13] = (T)(img)(x,_p3##y,z,c)), \
1837+ (I[22] = (T)(img)(x,_p2##y,z,c)), \
1838+ (I[31] = (T)(img)(x,_p1##y,z,c)), \
1839+ (I[40] = (T)(img)(x,y,z,c)), \
1840+ (I[49] = (T)(img)(x,_n1##y,z,c)), \
1841+ (I[58] = (T)(img)(x,_n2##y,z,c)), \
1842+ (I[67] = (T)(img)(x,_n3##y,z,c)), \
1843+ (I[76] = (T)(img)(x,_n4##y,z,c)), \
1844+ (I[5] = (T)(img)(_n1##x,_p4##y,z,c)), \
1845+ (I[14] = (T)(img)(_n1##x,_p3##y,z,c)), \
1846+ (I[23] = (T)(img)(_n1##x,_p2##y,z,c)), \
1847+ (I[32] = (T)(img)(_n1##x,_p1##y,z,c)), \
1848+ (I[41] = (T)(img)(_n1##x,y,z,c)), \
1849+ (I[50] = (T)(img)(_n1##x,_n1##y,z,c)), \
1850+ (I[59] = (T)(img)(_n1##x,_n2##y,z,c)), \
1851+ (I[68] = (T)(img)(_n1##x,_n3##y,z,c)), \
1852+ (I[77] = (T)(img)(_n1##x,_n4##y,z,c)), \
1853+ (I[6] = (T)(img)(_n2##x,_p4##y,z,c)), \
1854+ (I[15] = (T)(img)(_n2##x,_p3##y,z,c)), \
1855+ (I[24] = (T)(img)(_n2##x,_p2##y,z,c)), \
1856+ (I[33] = (T)(img)(_n2##x,_p1##y,z,c)), \
1857+ (I[42] = (T)(img)(_n2##x,y,z,c)), \
1858+ (I[51] = (T)(img)(_n2##x,_n1##y,z,c)), \
1859+ (I[60] = (T)(img)(_n2##x,_n2##y,z,c)), \
1860+ (I[69] = (T)(img)(_n2##x,_n3##y,z,c)), \
1861+ (I[78] = (T)(img)(_n2##x,_n4##y,z,c)), \
1862+ (I[7] = (T)(img)(_n3##x,_p4##y,z,c)), \
1863+ (I[16] = (T)(img)(_n3##x,_p3##y,z,c)), \
1864+ (I[25] = (T)(img)(_n3##x,_p2##y,z,c)), \
1865+ (I[34] = (T)(img)(_n3##x,_p1##y,z,c)), \
1866+ (I[43] = (T)(img)(_n3##x,y,z,c)), \
1867+ (I[52] = (T)(img)(_n3##x,_n1##y,z,c)), \
1868+ (I[61] = (T)(img)(_n3##x,_n2##y,z,c)), \
1869+ (I[70] = (T)(img)(_n3##x,_n3##y,z,c)), \
1870+ (I[79] = (T)(img)(_n3##x,_n4##y,z,c)), \
1871+ x+4>=(img).width()?(img).width()-1:x+4); \
1872+ x<=(int)(x1) && ((_n4##x<(img).width() && ( \
1873+ (I[8] = (T)(img)(_n4##x,_p4##y,z,c)), \
1874+ (I[17] = (T)(img)(_n4##x,_p3##y,z,c)), \
1875+ (I[26] = (T)(img)(_n4##x,_p2##y,z,c)), \
1876+ (I[35] = (T)(img)(_n4##x,_p1##y,z,c)), \
1877+ (I[44] = (T)(img)(_n4##x,y,z,c)), \
1878+ (I[53] = (T)(img)(_n4##x,_n1##y,z,c)), \
1879+ (I[62] = (T)(img)(_n4##x,_n2##y,z,c)), \
1880+ (I[71] = (T)(img)(_n4##x,_n3##y,z,c)), \
1881+ (I[80] = (T)(img)(_n4##x,_n4##y,z,c)),1)) || \
1882+ _n3##x==--_n4##x || _n2##x==--_n3##x || _n1##x==--_n2##x || x==(_n4##x = _n3##x = _n2##x = --_n1##x)); \
1883+ I[0] = I[1], I[1] = I[2], I[2] = I[3], I[3] = I[4], I[4] = I[5], I[5] = I[6], I[6] = I[7], I[7] = I[8], \
1884+ I[9] = I[10], I[10] = I[11], I[11] = I[12], I[12] = I[13], I[13] = I[14], I[14] = I[15], I[15] = I[16], I[16] = I[17], \
1885+ I[18] = I[19], I[19] = I[20], I[20] = I[21], I[21] = I[22], I[22] = I[23], I[23] = I[24], I[24] = I[25], I[25] = I[26], \
1886+ I[27] = I[28], I[28] = I[29], I[29] = I[30], I[30] = I[31], I[31] = I[32], I[32] = I[33], I[33] = I[34], I[34] = I[35], \
1887+ I[36] = I[37], I[37] = I[38], I[38] = I[39], I[39] = I[40], I[40] = I[41], I[41] = I[42], I[42] = I[43], I[43] = I[44], \
1888+ I[45] = I[46], I[46] = I[47], I[47] = I[48], I[48] = I[49], I[49] = I[50], I[50] = I[51], I[51] = I[52], I[52] = I[53], \
1889+ I[54] = I[55], I[55] = I[56], I[56] = I[57], I[57] = I[58], I[58] = I[59], I[59] = I[60], I[60] = I[61], I[61] = I[62], \
1890+ I[63] = I[64], I[64] = I[65], I[65] = I[66], I[66] = I[67], I[67] = I[68], I[68] = I[69], I[69] = I[70], I[70] = I[71], \
1891+ I[72] = I[73], I[73] = I[74], I[74] = I[75], I[75] = I[76], I[76] = I[77], I[77] = I[78], I[78] = I[79], I[79] = I[80], \
1892+ _p4##x = _p3##x, _p3##x = _p2##x, _p2##x = _p1##x, _p1##x = x++, ++_n1##x, ++_n2##x, ++_n3##x, ++_n4##x)
1893+
1894+#define cimg_for2x2x2(img,x,y,z,c,I,T) \
1895+ cimg_for2((img)._depth,z) cimg_for2((img)._height,y) for (int x = 0, \
1896+ _n1##x = (int)( \
1897+ (I[0] = (T)(img)(0,y,z,c)), \
1898+ (I[2] = (T)(img)(0,_n1##y,z,c)), \
1899+ (I[4] = (T)(img)(0,y,_n1##z,c)), \
1900+ (I[6] = (T)(img)(0,_n1##y,_n1##z,c)), \
1901+ 1>=(img)._width?(img).width()-1:1); \
1902+ (_n1##x<(img).width() && ( \
1903+ (I[1] = (T)(img)(_n1##x,y,z,c)), \
1904+ (I[3] = (T)(img)(_n1##x,_n1##y,z,c)), \
1905+ (I[5] = (T)(img)(_n1##x,y,_n1##z,c)), \
1906+ (I[7] = (T)(img)(_n1##x,_n1##y,_n1##z,c)),1)) || \
1907+ x==--_n1##x; \
1908+ I[0] = I[1], I[2] = I[3], I[4] = I[5], I[6] = I[7], \
1909+ ++x, ++_n1##x)
1910+
1911+#define cimg_for_in2x2x2(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \
1912+ cimg_for_in2((img)._depth,z0,z1,z) cimg_for_in2((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \
1913+ _n1##x = (int)( \
1914+ (I[0] = (T)(img)(x,y,z,c)), \
1915+ (I[2] = (T)(img)(x,_n1##y,z,c)), \
1916+ (I[4] = (T)(img)(x,y,_n1##z,c)), \
1917+ (I[6] = (T)(img)(x,_n1##y,_n1##z,c)), \
1918+ x+1>=(int)(img)._width?(img).width()-1:x+1); \
1919+ x<=(int)(x1) && ((_n1##x<(img).width() && ( \
1920+ (I[1] = (T)(img)(_n1##x,y,z,c)), \
1921+ (I[3] = (T)(img)(_n1##x,_n1##y,z,c)), \
1922+ (I[5] = (T)(img)(_n1##x,y,_n1##z,c)), \
1923+ (I[7] = (T)(img)(_n1##x,_n1##y,_n1##z,c)),1)) || \
1924+ x==--_n1##x); \
1925+ I[0] = I[1], I[2] = I[3], I[4] = I[5], I[6] = I[7], \
1926+ ++x, ++_n1##x)
1927+
1928+#define cimg_for3x3x3(img,x,y,z,c,I,T) \
1929+ cimg_for3((img)._depth,z) cimg_for3((img)._height,y) for (int x = 0, \
1930+ _p1##x = 0, \
1931+ _n1##x = (int)( \
1932+ (I[0] = I[1] = (T)(img)(0,_p1##y,_p1##z,c)), \
1933+ (I[3] = I[4] = (T)(img)(0,y,_p1##z,c)), \
1934+ (I[6] = I[7] = (T)(img)(0,_n1##y,_p1##z,c)), \
1935+ (I[9] = I[10] = (T)(img)(0,_p1##y,z,c)), \
1936+ (I[12] = I[13] = (T)(img)(0,y,z,c)), \
1937+ (I[15] = I[16] = (T)(img)(0,_n1##y,z,c)), \
1938+ (I[18] = I[19] = (T)(img)(0,_p1##y,_n1##z,c)), \
1939+ (I[21] = I[22] = (T)(img)(0,y,_n1##z,c)), \
1940+ (I[24] = I[25] = (T)(img)(0,_n1##y,_n1##z,c)), \
1941+ 1>=(img)._width?(img).width()-1:1); \
1942+ (_n1##x<(img).width() && ( \
1943+ (I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \
1944+ (I[5] = (T)(img)(_n1##x,y,_p1##z,c)), \
1945+ (I[8] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \
1946+ (I[11] = (T)(img)(_n1##x,_p1##y,z,c)), \
1947+ (I[14] = (T)(img)(_n1##x,y,z,c)), \
1948+ (I[17] = (T)(img)(_n1##x,_n1##y,z,c)), \
1949+ (I[20] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \
1950+ (I[23] = (T)(img)(_n1##x,y,_n1##z,c)), \
1951+ (I[26] = (T)(img)(_n1##x,_n1##y,_n1##z,c)),1)) || \
1952+ x==--_n1##x; \
1953+ I[0] = I[1], I[1] = I[2], I[3] = I[4], I[4] = I[5], I[6] = I[7], I[7] = I[8], \
1954+ I[9] = I[10], I[10] = I[11], I[12] = I[13], I[13] = I[14], I[15] = I[16], I[16] = I[17], \
1955+ I[18] = I[19], I[19] = I[20], I[21] = I[22], I[22] = I[23], I[24] = I[25], I[25] = I[26], \
1956+ _p1##x = x++, ++_n1##x)
1957+
1958+#define cimg_for_in3x3x3(img,x0,y0,z0,x1,y1,z1,x,y,z,c,I,T) \
1959+ cimg_for_in3((img)._depth,z0,z1,z) cimg_for_in3((img)._height,y0,y1,y) for (int x = (int)(x0)<0?0:(int)(x0), \
1960+ _p1##x = x-1<0?0:x-1, \
1961+ _n1##x = (int)( \
1962+ (I[0] = (T)(img)(_p1##x,_p1##y,_p1##z,c)), \
1963+ (I[3] = (T)(img)(_p1##x,y,_p1##z,c)), \
1964+ (I[6] = (T)(img)(_p1##x,_n1##y,_p1##z,c)), \
1965+ (I[9] = (T)(img)(_p1##x,_p1##y,z,c)), \
1966+ (I[12] = (T)(img)(_p1##x,y,z,c)), \
1967+ (I[15] = (T)(img)(_p1##x,_n1##y,z,c)), \
1968+ (I[18] = (T)(img)(_p1##x,_p1##y,_n1##z,c)), \
1969+ (I[21] = (T)(img)(_p1##x,y,_n1##z,c)), \
1970+ (I[24] = (T)(img)(_p1##x,_n1##y,_n1##z,c)), \
1971+ (I[1] = (T)(img)(x,_p1##y,_p1##z,c)), \
1972+ (I[4] = (T)(img)(x,y,_p1##z,c)), \
1973+ (I[7] = (T)(img)(x,_n1##y,_p1##z,c)), \
1974+ (I[10] = (T)(img)(x,_p1##y,z,c)), \
1975+ (I[13] = (T)(img)(x,y,z,c)), \
1976+ (I[16] = (T)(img)(x,_n1##y,z,c)), \
1977+ (I[19] = (T)(img)(x,_p1##y,_n1##z,c)), \
1978+ (I[22] = (T)(img)(x,y,_n1##z,c)), \
1979+ (I[25] = (T)(img)(x,_n1##y,_n1##z,c)), \
1980+ x+1>=(int)(img)._width?(img).width()-1:x+1); \
1981+ x<=(int)(x1) && ((_n1##x<(img).width() && ( \
1982+ (I[2] = (T)(img)(_n1##x,_p1##y,_p1##z,c)), \
1983+ (I[5] = (T)(img)(_n1##x,y,_p1##z,c)), \
1984+ (I[8] = (T)(img)(_n1##x,_n1##y,_p1##z,c)), \
1985+ (I[11] = (T)(img)(_n1##x,_p1##y,z,c)), \
1986+ (I[14] = (T)(img)(_n1##x,y,z,c)), \
1987+ (I[17] = (T)(img)(_n1##x,_n1##y,z,c)), \
1988+ (I[20] = (T)(img)(_n1##x,_p1##y,_n1##z,c)), \
1989+ (I[23] = (T)(img)(_n1##x,y,_n1##z,c)), \
1990+ (I[26] = (T)(img)(_n1##x,_n1##y,_n1##z,c)),1)) || \
1991+ x==--_n1##x); \
1992+ I[0] = I[1], I[1] = I[2], I[3] = I[4], I[4] = I[5], I[6] = I[7], I[7] = I[8], \
1993+ I[9] = I[10], I[10] = I[11], I[12] = I[13], I[13] = I[14], I[15] = I[16], I[16] = I[17], \
1994+ I[18] = I[19], I[19] = I[20], I[21] = I[22], I[22] = I[23], I[24] = I[25], I[25] = I[26], \
1995+ _p1##x = x++, ++_n1##x)
1996+
1997+#define cimglist_for(list,l) for (int l = 0; l<(int)(list)._width; ++l)
1998+#define cimglist_for_in(list,l0,l1,l) \
1999+ for (int l = (int)(l0)<0?0:(int)(l0), _max##l = (unsigned int)l1<(list)._width?(int)(l1):(int)(list)._width-1; l<=_max##l; ++l)
2000+
2001+#define cimglist_apply(list,fn) cimglist_for(list,__##fn) (list)[__##fn].fn
2002+
2003+// Define macros used when exceptions are thrown.
2004+#define _cimgdisplay_instance "[instance(%u,%u,%u,%c%s%c)] CImgDisplay::"
2005+#define cimgdisplay_instance _width,_height,_normalization,_title?'\"':'[',_title?_title:"untitled",_title?'\"':']'
2006+#define _cimg_instance "[instance(%u,%u,%u,%u,%p,%sshared)] CImg<%s>::"
2007+#define cimg_instance _width,_height,_depth,_spectrum,_data,_is_shared?"":"non-",pixel_type()
2008+#define _cimglist_instance "[instance(%u,%u,%p)] CImgList<%s>::"
2009+#define cimglist_instance _width,_allocated_width,_data,pixel_type()
2010+
2011+/*------------------------------------------------
2012+ #
2013+ #
2014+ # Definition of the cimg_library:: namespace
2015+ #
2016+ #
2017+ -------------------------------------------------*/
2018+//! This namespace encompasses all classes and functions of the %CImg library.
2019+/**
2020+ This namespace is defined to avoid functions and class names collisions
2021+ that could happen with the include of other C++ header files.
2022+ Anyway, it should not happen often and you should reasonnably start most of your
2023+ %CImg-based programs with
2024+ \code
2025+ #include "CImg.h"
2026+ using namespace cimg_library;
2027+ \endcode
2028+ to simplify the declaration of %CImg Library variables afterwards.
2029+**/
2030+namespace cimg_library {
2031+
2032+ // Declare the only four classes of the CImg Library.
2033+ template<typename T=float> struct CImg;
2034+ template<typename T=float> struct CImgList;
2035+ struct CImgDisplay;
2036+ struct CImgException;
2037+
2038+ // (Pre)declare the cimg namespace.
2039+ // This is not the complete namespace declaration. It only contains some
2040+ // necessary stuffs to ensure a correct declaration order of classes and functions
2041+ // defined afterwards.
2042+ namespace cimg {
2043+
2044+#ifdef cimg_use_vt100
2045+ const char t_normal[] = { 0x1b, '[', '0', ';', '0', ';', '0', 'm', 0 };
2046+ const char t_red[] = { 0x1b, '[', '4', ';', '3', '1', ';', '5', '9', 'm', 0 };
2047+ const char t_bold[] = { 0x1b, '[', '1', 'm', 0 };
2048+ const char t_purple[] = { 0x1b, '[', '0', ';', '3', '5', ';', '5', '9', 'm', 0 };
2049+ const char t_green[] = { 0x1b, '[', '0', ';', '3', '2', ';', '5', '9', 'm', 0 };
2050+#else
2051+ const char t_normal[] = { 0 };
2052+ const char *const t_red = cimg::t_normal, *const t_bold = cimg::t_normal,
2053+ *const t_purple = cimg::t_normal, *const t_green = cimg::t_normal;
2054+#endif
2055+
2056+ inline std::FILE* output(std::FILE *file=0);
2057+ inline void info();
2058+
2059+ // Function used to avoid warning messages due to unused parameters.
2060+ template<typename T>
2061+ inline void unused(const T&, ...) {}
2062+
2063+ //! Get/set the current CImg exception mode.
2064+ /**
2065+ The way error messages are handled by CImg can be changed dynamically, using this function.
2066+ Possible values are :
2067+ - '0' to hide library messages (quiet mode).
2068+ - '1' to print library messages on the console.
2069+ - '2' to display library messages on a dialog window (default behavior).
2070+ - '3' to do as '1' + add extra warnings (may slow down the code !).
2071+ - '4' to do as '2' + add extra warnings (may slow down the code !).
2072+ **/
2073+ inline unsigned int& _exception_mode(const unsigned int value, const bool is_set) {
2074+ static unsigned int mode = cimg_verbosity;
2075+ if (is_set) mode = value;
2076+ return mode;
2077+ }
2078+ inline unsigned int& exception_mode() {
2079+ return _exception_mode(0,false);
2080+ }
2081+ inline unsigned int& exception_mode(const unsigned int mode) {
2082+ return _exception_mode(mode,true);
2083+ }
2084+
2085+ inline int dialog(const char *const title, const char *const msg, const char *const button1_label="OK",
2086+ const char *const button2_label=0, const char *const button3_label=0,
2087+ const char *const button4_label=0, const char *const button5_label=0,
2088+ const char *const button6_label=0, const bool centering=false);
2089+
2090+ //! Evaluate math expression.
2091+ inline double eval(const char *const expression, const double x=0, const double y=0, const double z=0, const double v=0);
2092+ }
2093+
2094+ /*----------------------------------------------
2095+ #
2096+ # Definition of the CImgException structures
2097+ #
2098+ ----------------------------------------------*/
2099+ //! Instances of this class are thrown when errors occur during a %CImg library function call.
2100+ /**
2101+ \section ex1 Overview
2102+
2103+ CImgException is the base class of %CImg exceptions.
2104+ Exceptions are thrown by the %CImg Library when an error occured in a %CImg library function call.
2105+ CImgException is seldom thrown itself. Children classes that specify the kind of error encountered
2106+ are generally used instead. These sub-classes are :
2107+
2108+ - \b CImgInstanceException : Thrown when the instance associated to the called %CImg function is not
2109+ correctly defined. Generally, this exception is thrown when one tries to process \a empty images. The example
2110+ below will throw a \a CImgInstanceException.
2111+ \code
2112+ CImg<float> img; // Construct an empty image.
2113+ img.blur(10); // Try to blur the image.
2114+ \endcode
2115+
2116+ - \b CImgArgumentException : Thrown when one of the arguments given to the called %CImg function is not correct.
2117+ Generally, this exception is thrown when arguments passed to the function are outside an admissible range of values.
2118+ The example below will throw a \a CImgArgumentException.
2119+ \code
2120+ CImg<float> img(100,100,1,3); // Define a 100x100 color image with float pixels.
2121+ img = 0; // Try to fill pixels from the 0 pointer (invalid argument to operator=() ).
2122+ \endcode
2123+
2124+ - \b CImgIOException : Thrown when an error occured when trying to load or save image files.
2125+ The example below will throw a \a CImgIOException.
2126+ \code
2127+ CImg<float> img("file_doesnt_exist.jpg"); // Try to load a file that doesn't exist.
2128+ \endcode
2129+
2130+ The parent class CImgException may be thrown itself when errors that cannot be classified in one of
2131+ the above type occur. It is recommended not to throw CImgExceptions yourself, since there are normally
2132+ reserved to %CImg Library functions.
2133+ \b CImgInstanceException, \b CImgArgumentException and \b CImgIOException are simple
2134+ subclasses of CImgException and are thus not detailled more in this reference documentation.
2135+
2136+ \section ex2 Exception handling
2137+
2138+ When an error occurs, the %CImg Library first displays the error in a modal window.
2139+ Then, it throws an instance of the corresponding exception class, generally leading the program to stop
2140+ (this is the default behavior).
2141+ You can bypass this default behavior by handling the exceptions yourself,
2142+ using a code block <tt>try { ... } catch () { ... }</tt>.
2143+ In this case, you can avoid the apparition of the modal window, by
2144+ defining the environment variable <tt>cimg_verbosity</tt> to 0 before including the %CImg header file.
2145+ The example below shows how to cleanly handle %CImg Library exceptions :
2146+ \code
2147+ #define cimg_verbosity 0 // Disable modal window in CImg exceptions.
2148+ #define "CImg.h"
2149+ int main() {
2150+ try {
2151+ ...; // Here, do what you want.
2152+ }
2153+ catch (CImgInstanceException &e) {
2154+ std::fprintf(stderr,"CImg Library Error : %s",e.what()); // Display your own error message
2155+ ... // Do what you want now.
2156+ }
2157+ }
2158+ \endcode
2159+ **/
2160+ struct CImgException : public std::exception {
2161+#define _cimg_exception_err(etype,disp_flag) \
2162+ std::va_list ap; va_start(ap,format); cimg_vsnprintf(_message,sizeof(_message),format,ap); va_end(ap); \
2163+ if (cimg::exception_mode()) { \
2164+ std::fprintf(cimg::output(),"\n%s[CImg] *** %s ***%s %s\n",cimg::t_red,etype,cimg::t_normal,_message); \
2165+ if (cimg_display && disp_flag && !(cimg::exception_mode()%2)) try { cimg::dialog(etype,_message,"Abort"); } catch (CImgException&) {} \
2166+ if (cimg::exception_mode()>=3) cimg_library::cimg::info(); \
2167+ }
2168+
2169+ char _message[16384];
2170+ CImgException() { *_message = 0; }
2171+ CImgException(const char *const format, ...) { _cimg_exception_err("CImgException",true); }
2172+ const char *what() const throw() { return _message; }
2173+ };
2174+
2175+ // The \ref CImgInstanceException class is used to throw an exception related
2176+ // to a non suitable instance encountered in a library function call.
2177+ struct CImgInstanceException : public CImgException {
2178+ CImgInstanceException(const char *const format, ...) { _cimg_exception_err("CImgInstanceException",true); }
2179+ };
2180+
2181+ // The \ref CImgArgumentException class is used to throw an exception related
2182+ // to invalid arguments encountered in a library function call.
2183+ struct CImgArgumentException : public CImgException {
2184+ CImgArgumentException(const char *const format, ...) { _cimg_exception_err("CImgArgumentException",true); }
2185+ };
2186+
2187+ // The \ref CImgIOException class is used to throw an exception related
2188+ // to Input/Output file problems encountered in a library function call.
2189+ struct CImgIOException : public CImgException {
2190+ CImgIOException(const char *const format, ...) { _cimg_exception_err("CImgIOException",true); }
2191+ };
2192+
2193+ // The \ref CImgDisplayException class is used to throw an exception related
2194+ // to display problems encountered in a library function call.
2195+ struct CImgDisplayException : public CImgException {
2196+ CImgDisplayException(const char *const format, ...) { _cimg_exception_err("CImgDisplayException",false); }
2197+ };
2198+
2199+ // The CImgWarningException class is used to throw an exception for warnings
2200+ // encountered in a library function call.
2201+ struct CImgWarningException : public CImgException {
2202+ CImgWarningException(const char *const format, ...) { _cimg_exception_err("CImgWarningException",false); }
2203+ };
2204+
2205+ /*-------------------------------------
2206+ #
2207+ # Definition of the namespace 'cimg'
2208+ #
2209+ --------------------------------------*/
2210+ //! Namespace that encompasses \a low-level functions and variables of the %CImg Library.
2211+ /**
2212+ Most of the functions and variables within this namespace are used by the library for low-level processing.
2213+ Nevertheless, documented variables and functions of this namespace may be used safely in your own source code.
2214+
2215+ \warning Never write <tt>using namespace cimg_library::cimg;</tt> in your source code, since a lot of functions of the
2216+ <tt>cimg::</tt> namespace have prototypes similar to standard C functions that could defined in the global namespace <tt>::</tt>.
2217+ **/
2218+ namespace cimg {
2219+
2220+ // Define the traits that will be used to determine the best data type to work with.
2221+ //
2222+ template<typename T> struct type {
2223+ static const char* string() {
2224+ static const char* s[] = { "unknown", "unknown8", "unknown16", "unknown24",
2225+ "unknown32", "unknown40", "unknown48", "unknown56",
2226+ "unknown64", "unknown72", "unknown80", "unknown88",
2227+ "unknown96", "unknown104", "unknown112", "unknown120",
2228+ "unknown128" };
2229+ return s[(sizeof(T)<17)?sizeof(T):0];
2230+ }
2231+ static unsigned int id() { return 0U; }
2232+ static bool is_float() { return false; }
2233+ static T min() { return (T)-1>0?(T)0:(T)-1<<(8*sizeof(T)-1); }
2234+ static T max() { return (T)-1>0?(T)-1:~((T)-1<<(8*sizeof(T)-1)); }
2235+ static T cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(T)val; }
2236+ static const char* format() { return "%s"; }
2237+ static const char* format(const T val) { static const char *const s = "unknown"; return s; }
2238+ };
2239+
2240+ template<> struct type<bool> {
2241+ static const char* string() { static const char *const s = "bool"; return s; }
2242+ static unsigned int id() { return 1U; }
2243+ static bool is_float() { return false; }
2244+ static bool min() { return false; }
2245+ static bool max() { return true; }
2246+ static bool cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(bool)val; }
2247+ static const char* format() { return "%s"; }
2248+ static const char* format(const bool val) { static const char* s[] = { "false", "true" }; return s[val?1:0]; }
2249+ };
2250+
2251+ template<> struct type<unsigned char> {
2252+ static const char* string() { static const char *const s = "unsigned char"; return s; }
2253+ static unsigned int id() { return 2U; }
2254+ static bool is_float() { return false; }
2255+ static unsigned char min() { return 0; }
2256+ static unsigned char max() { return (unsigned char)~0U; }
2257+ static unsigned char cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(unsigned char)val; }
2258+ static const char* format() { return "%u"; }
2259+ static unsigned int format(const unsigned char val) { return (unsigned int)val; }
2260+ };
2261+
2262+ template<> struct type<char> {
2263+ static const char* string() { static const char *const s = "char"; return s; }
2264+ static unsigned int id() { return 3U; }
2265+ static bool is_float() { return false; }
2266+ static char min() { return (char)(-1L<<(8*sizeof(char)-1)); }
2267+ static char max() { return ~((char)(-1L<<(8*sizeof(char)-1))); }
2268+ static char cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(char)val; }
2269+ static const char* format() { return "%d"; }
2270+ static int format(const char val) { return (int)val; }
2271+ };
2272+
2273+ template<> struct type<signed char> {
2274+ static const char* string() { static const char *const s = "signed char"; return s; }
2275+ static unsigned int id() { return 4U; }
2276+ static bool is_float() { return false; }
2277+ static signed char min() { return (signed char)(-1L<<(8*sizeof(signed char)-1)); }
2278+ static signed char max() { return ~((signed char)(-1L<<(8*sizeof(signed char)-1))); }
2279+ static signed char cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(signed char)val; }
2280+ static const char* format() { return "%d"; }
2281+ static unsigned int format(const signed char val) { return (int)val; }
2282+ };
2283+
2284+ template<> struct type<unsigned short> {
2285+ static const char* string() { static const char *const s = "unsigned short"; return s; }
2286+ static unsigned int id() { return 5U; }
2287+ static bool is_float() { return false; }
2288+ static unsigned short min() { return 0; }
2289+ static unsigned short max() { return (unsigned short)~0U; }
2290+ static unsigned short cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(unsigned short)val; }
2291+ static const char* format() { return "%u"; }
2292+ static unsigned int format(const unsigned short val) { return (unsigned int)val; }
2293+ };
2294+
2295+ template<> struct type<short> {
2296+ static const char* string() { static const char *const s = "short"; return s; }
2297+ static unsigned int id() { return 6U; }
2298+ static bool is_float() { return false; }
2299+ static short min() { return (short)(-1L<<(8*sizeof(short)-1)); }
2300+ static short max() { return ~((short)(-1L<<(8*sizeof(short)-1))); }
2301+ static short cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(short)val; }
2302+ static const char* format() { return "%d"; }
2303+ static int format(const short val) { return (int)val; }
2304+ };
2305+
2306+ template<> struct type<unsigned int> {
2307+ static const char* string() { static const char *const s = "unsigned int"; return s; }
2308+ static unsigned int id() { return 7U; }
2309+ static bool is_float() { return false; }
2310+ static unsigned int min() { return 0; }
2311+ static unsigned int max() { return (unsigned int)~0U; }
2312+ static unsigned int cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(unsigned int)val; }
2313+ static const char* format() { return "%u"; }
2314+ static unsigned int format(const unsigned int val) { return val; }
2315+ };
2316+
2317+ template<> struct type<int> {
2318+ static const char* string() { static const char *const s = "int"; return s; }
2319+ static unsigned int id() { return 8U; }
2320+ static bool is_float() { return false; }
2321+ static int min() { return (int)(-1L<<(8*sizeof(int)-1)); }
2322+ static int max() { return ~((int)(-1L<<(8*sizeof(int)-1))); }
2323+ static int cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(int)val; }
2324+ static const char* format() { return "%d"; }
2325+ static int format(const int val) { return val; }
2326+ };
2327+
2328+ template<> struct type<unsigned long> {
2329+ static const char* string() { static const char *const s = "unsigned long"; return s; }
2330+ static unsigned int id() { return 9U; }
2331+ static bool is_float() { return false; }
2332+ static unsigned long min() { return 0; }
2333+ static unsigned long max() { return (unsigned long)~0UL; }
2334+ static unsigned long cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(unsigned long)val; }
2335+ static const char* format() { return "%lu"; }
2336+ static unsigned long format(const unsigned long val) { return val; }
2337+ };
2338+
2339+ template<> struct type<long> {
2340+ static const char* string() { static const char *const s = "long"; return s; }
2341+ static unsigned int id() { return 10U; }
2342+ static bool is_float() { return false; }
2343+ static long min() { return (long)(-1L<<(8*sizeof(long)-1)); }
2344+ static long max() { return ~((long)(-1L<<(8*sizeof(long)-1))); }
2345+ static long cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(long)val; }
2346+ static const char* format() { return "%ld"; }
2347+ static long format(const long val) { return val; }
2348+ };
2349+
2350+ template<> struct type<double> {
2351+ static const char* string() { static const char *const s = "double"; return s; }
2352+ static unsigned int id() { return 11U; }
2353+ static bool is_float() { return true; }
2354+ static double min() { return -1.7E308; }
2355+ static double max() { return 1.7E308; }
2356+ static double cut(const double val) { return val<min()?min():val>max()?max():val; }
2357+ static double inf() { return max()*max(); }
2358+ static double nan() { static const double v_nan = std::sqrt(-1.0); return v_nan; }
2359+ static const char* format() { return "%g"; }
2360+ static double format(const double val) { return val; }
2361+ };
2362+
2363+ template<> struct type<float> {
2364+ static const char* string() { static const char *const s = "float"; return s; }
2365+ static unsigned int id() { return 12U; }
2366+ static bool is_float() { return true; }
2367+ static float min() { return -3.4E38f; }
2368+ static float max() { return 3.4E38f; }
2369+ static float cut(const double val) { return val<(double)min()?min():val>(double)max()?max():(float)val; }
2370+ static float inf() { return (float)cimg::type<double>::inf(); }
2371+ static float nan() { return (float)cimg::type<double>::nan(); }
2372+ static const char* format() { return "%g"; }
2373+ static double format(const float val) { return (double)val; }
2374+ };
2375+
2376+ template<typename T, typename t> struct superset { typedef T type; };
2377+ template<> struct superset<bool,unsigned char> { typedef unsigned char type; };
2378+ template<> struct superset<bool,char> { typedef char type; };
2379+ template<> struct superset<bool,signed char> { typedef signed char type; };
2380+ template<> struct superset<bool,unsigned short> { typedef unsigned short type; };
2381+ template<> struct superset<bool,short> { typedef short type; };
2382+ template<> struct superset<bool,unsigned int> { typedef unsigned int type; };
2383+ template<> struct superset<bool,int> { typedef int type; };
2384+ template<> struct superset<bool,unsigned long> { typedef unsigned long type; };
2385+ template<> struct superset<bool,long> { typedef long type; };
2386+ template<> struct superset<bool,float> { typedef float type; };
2387+ template<> struct superset<bool,double> { typedef double type; };
2388+ template<> struct superset<unsigned char,char> { typedef short type; };
2389+ template<> struct superset<unsigned char,signed char> { typedef short type; };
2390+ template<> struct superset<unsigned char,unsigned short> { typedef unsigned short type; };
2391+ template<> struct superset<unsigned char,short> { typedef short type; };
2392+ template<> struct superset<unsigned char,unsigned int> { typedef unsigned int type; };
2393+ template<> struct superset<unsigned char,int> { typedef int type; };
2394+ template<> struct superset<unsigned char,unsigned long> { typedef unsigned long type; };
2395+ template<> struct superset<unsigned char,long> { typedef long type; };
2396+ template<> struct superset<unsigned char,float> { typedef float type; };
2397+ template<> struct superset<unsigned char,double> { typedef double type; };
2398+ template<> struct superset<signed char,unsigned char> { typedef short type; };
2399+ template<> struct superset<signed char,char> { typedef short type; };
2400+ template<> struct superset<signed char,unsigned short> { typedef int type; };
2401+ template<> struct superset<signed char,short> { typedef short type; };
2402+ template<> struct superset<signed char,unsigned int> { typedef long type; };
2403+ template<> struct superset<signed char,int> { typedef int type; };
2404+ template<> struct superset<signed char,unsigned long> { typedef long type; };
2405+ template<> struct superset<signed char,long> { typedef long type; };
2406+ template<> struct superset<signed char,float> { typedef float type; };
2407+ template<> struct superset<signed char,double> { typedef double type; };
2408+ template<> struct superset<char,unsigned char> { typedef short type; };
2409+ template<> struct superset<char,signed char> { typedef short type; };
2410+ template<> struct superset<char,unsigned short> { typedef int type; };
2411+ template<> struct superset<char,short> { typedef short type; };
2412+ template<> struct superset<char,unsigned int> { typedef long type; };
2413+ template<> struct superset<char,int> { typedef int type; };
2414+ template<> struct superset<char,unsigned long> { typedef long type; };
2415+ template<> struct superset<char,long> { typedef long type; };
2416+ template<> struct superset<char,float> { typedef float type; };
2417+ template<> struct superset<char,double> { typedef double type; };
2418+ template<> struct superset<unsigned short,char> { typedef int type; };
2419+ template<> struct superset<unsigned short,signed char> { typedef int type; };
2420+ template<> struct superset<unsigned short,short> { typedef int type; };
2421+ template<> struct superset<unsigned short,unsigned int> { typedef unsigned int type; };
2422+ template<> struct superset<unsigned short,int> { typedef int type; };
2423+ template<> struct superset<unsigned short,unsigned long> { typedef unsigned long type; };
2424+ template<> struct superset<unsigned short,long> { typedef long type; };
2425+ template<> struct superset<unsigned short,float> { typedef float type; };
2426+ template<> struct superset<unsigned short,double> { typedef double type; };
2427+ template<> struct superset<short,unsigned short> { typedef int type; };
2428+ template<> struct superset<short,unsigned int> { typedef long type; };
2429+ template<> struct superset<short,int> { typedef int type; };
2430+ template<> struct superset<short,unsigned long> { typedef long type; };
2431+ template<> struct superset<short,long> { typedef long type; };
2432+ template<> struct superset<short,float> { typedef float type; };
2433+ template<> struct superset<short,double> { typedef double type; };
2434+ template<> struct superset<unsigned int,char> { typedef long type; };
2435+ template<> struct superset<unsigned int,signed char> { typedef long type; };
2436+ template<> struct superset<unsigned int,short> { typedef long type; };
2437+ template<> struct superset<unsigned int,int> { typedef long type; };
2438+ template<> struct superset<unsigned int,unsigned long> { typedef unsigned long type; };
2439+ template<> struct superset<unsigned int,long> { typedef long type; };
2440+ template<> struct superset<unsigned int,float> { typedef float type; };
2441+ template<> struct superset<unsigned int,double> { typedef double type; };
2442+ template<> struct superset<int,unsigned int> { typedef long type; };
2443+ template<> struct superset<int,unsigned long> { typedef long type; };
2444+ template<> struct superset<int,long> { typedef long type; };
2445+ template<> struct superset<int,float> { typedef float type; };
2446+ template<> struct superset<int,double> { typedef double type; };
2447+ template<> struct superset<unsigned long,char> { typedef long type; };
2448+ template<> struct superset<unsigned long,signed char> { typedef long type; };
2449+ template<> struct superset<unsigned long,short> { typedef long type; };
2450+ template<> struct superset<unsigned long,int> { typedef long type; };
2451+ template<> struct superset<unsigned long,long> { typedef long type; };
2452+ template<> struct superset<unsigned long,float> { typedef float type; };
2453+ template<> struct superset<unsigned long,double> { typedef double type; };
2454+ template<> struct superset<long,float> { typedef float type; };
2455+ template<> struct superset<long,double> { typedef double type; };
2456+ template<> struct superset<float,double> { typedef double type; };
2457+
2458+ template<typename t1, typename t2, typename t3> struct superset2 {
2459+ typedef typename superset<t1, typename superset<t2,t3>::type>::type type;
2460+ };
2461+
2462+ template<typename t1, typename t2, typename t3, typename t4> struct superset3 {
2463+ typedef typename superset<t1, typename superset2<t2,t3,t4>::type>::type type;
2464+ };
2465+
2466+ template<typename t1, typename t2> struct last { typedef t2 type; };
2467+
2468+#define _cimg_Tt typename cimg::superset<T,t>::type
2469+#define _cimg_Tfloat typename cimg::superset<T,float>::type
2470+#define _cimg_Ttfloat typename cimg::superset2<T,t,float>::type
2471+
2472+ // Define internal library variables.
2473+#if cimg_display==1
2474+ struct X11_info {
2475+ volatile unsigned int nb_wins;
2476+ pthread_t* event_thread;
2477+ CImgDisplay* wins[1024];
2478+ Display* display;
2479+ unsigned int nb_bits;
2480+ bool is_blue_first;
2481+ bool is_shm_enabled;
2482+ bool byte_order;
2483+#ifdef cimg_use_xrandr
2484+ XRRScreenSize *resolutions;
2485+ Rotation curr_rotation;
2486+ unsigned int curr_resolution;
2487+ unsigned int nb_resolutions;
2488+#endif
2489+ X11_info():nb_wins(0),event_thread(0),display(0),
2490+ nb_bits(0),is_blue_first(false),is_shm_enabled(false),byte_order(false) {
2491+#ifdef cimg_use_xrandr
2492+ resolutions = 0;
2493+ curr_rotation = 0;
2494+ curr_resolution = nb_resolutions = 0;
2495+#endif
2496+ }
2497+ };
2498+#if defined(cimg_module)
2499+ X11_info& X11_attr();
2500+#elif defined(cimg_main)
2501+ X11_info& X11_attr() { static X11_info val; return val; }
2502+#else
2503+ inline X11_info& X11_attr() { static X11_info val; return val; }
2504+#endif
2505+
2506+#elif cimg_display==2
2507+ struct Win32_info {
2508+ HANDLE wait_event;
2509+ Win32_info() { wait_event = CreateEvent(0,FALSE,FALSE,0); }
2510+ };
2511+#if defined(cimg_module)
2512+ Win32_info& Win32_attr();
2513+#elif defined(cimg_main)
2514+ Win32_info& Win32_attr() { static Win32_info val; return val; }
2515+#else
2516+ inline Win32_info& Win32_attr() { static Win32_info val; return val; }
2517+#endif
2518+#endif
2519+
2520+#if defined(cimg_use_magick)
2521+ static struct Magick_info {
2522+ Magick_info() {
2523+ Magick::InitializeMagick("");
2524+ }
2525+ } _Magick_info;
2526+#endif
2527+
2528+#if cimg_display==1
2529+ // Keycodes for X11-based graphical systems.
2530+ const unsigned int keyESC = XK_Escape;
2531+ const unsigned int keyF1 = XK_F1;
2532+ const unsigned int keyF2 = XK_F2;
2533+ const unsigned int keyF3 = XK_F3;
2534+ const unsigned int keyF4 = XK_F4;
2535+ const unsigned int keyF5 = XK_F5;
2536+ const unsigned int keyF6 = XK_F6;
2537+ const unsigned int keyF7 = XK_F7;
2538+ const unsigned int keyF8 = XK_F8;
2539+ const unsigned int keyF9 = XK_F9;
2540+ const unsigned int keyF10 = XK_F10;
2541+ const unsigned int keyF11 = XK_F11;
2542+ const unsigned int keyF12 = XK_F12;
2543+ const unsigned int keyPAUSE = XK_Pause;
2544+ const unsigned int key1 = XK_1;
2545+ const unsigned int key2 = XK_2;
2546+ const unsigned int key3 = XK_3;
2547+ const unsigned int key4 = XK_4;
2548+ const unsigned int key5 = XK_5;
2549+ const unsigned int key6 = XK_6;
2550+ const unsigned int key7 = XK_7;
2551+ const unsigned int key8 = XK_8;
2552+ const unsigned int key9 = XK_9;
2553+ const unsigned int key0 = XK_0;
2554+ const unsigned int keyBACKSPACE = XK_BackSpace;
2555+ const unsigned int keyINSERT = XK_Insert;
2556+ const unsigned int keyHOME = XK_Home;
2557+ const unsigned int keyPAGEUP = XK_Page_Up;
2558+ const unsigned int keyTAB = XK_Tab;
2559+ const unsigned int keyQ = XK_q;
2560+ const unsigned int keyW = XK_w;
2561+ const unsigned int keyE = XK_e;
2562+ const unsigned int keyR = XK_r;
2563+ const unsigned int keyT = XK_t;
2564+ const unsigned int keyY = XK_y;
2565+ const unsigned int keyU = XK_u;
2566+ const unsigned int keyI = XK_i;
2567+ const unsigned int keyO = XK_o;
2568+ const unsigned int keyP = XK_p;
2569+ const unsigned int keyDELETE = XK_Delete;
2570+ const unsigned int keyEND = XK_End;
2571+ const unsigned int keyPAGEDOWN = XK_Page_Down;
2572+ const unsigned int keyCAPSLOCK = XK_Caps_Lock;
2573+ const unsigned int keyA = XK_a;
2574+ const unsigned int keyS = XK_s;
2575+ const unsigned int keyD = XK_d;
2576+ const unsigned int keyF = XK_f;
2577+ const unsigned int keyG = XK_g;
2578+ const unsigned int keyH = XK_h;
2579+ const unsigned int keyJ = XK_j;
2580+ const unsigned int keyK = XK_k;
2581+ const unsigned int keyL = XK_l;
2582+ const unsigned int keyENTER = XK_Return;
2583+ const unsigned int keySHIFTLEFT = XK_Shift_L;
2584+ const unsigned int keyZ = XK_z;
2585+ const unsigned int keyX = XK_x;
2586+ const unsigned int keyC = XK_c;
2587+ const unsigned int keyV = XK_v;
2588+ const unsigned int keyB = XK_b;
2589+ const unsigned int keyN = XK_n;
2590+ const unsigned int keyM = XK_m;
2591+ const unsigned int keySHIFTRIGHT = XK_Shift_R;
2592+ const unsigned int keyARROWUP = XK_Up;
2593+ const unsigned int keyCTRLLEFT = XK_Control_L;
2594+ const unsigned int keyAPPLEFT = XK_Super_L;
2595+ const unsigned int keyALT = XK_Alt_L;
2596+ const unsigned int keySPACE = XK_space;
2597+ const unsigned int keyALTGR = XK_Alt_R;
2598+ const unsigned int keyAPPRIGHT = XK_Super_R;
2599+ const unsigned int keyMENU = XK_Menu;
2600+ const unsigned int keyCTRLRIGHT = XK_Control_R;
2601+ const unsigned int keyARROWLEFT = XK_Left;
2602+ const unsigned int keyARROWDOWN = XK_Down;
2603+ const unsigned int keyARROWRIGHT = XK_Right;
2604+ const unsigned int keyPAD0 = XK_KP_0;
2605+ const unsigned int keyPAD1 = XK_KP_1;
2606+ const unsigned int keyPAD2 = XK_KP_2;
2607+ const unsigned int keyPAD3 = XK_KP_3;
2608+ const unsigned int keyPAD4 = XK_KP_4;
2609+ const unsigned int keyPAD5 = XK_KP_5;
2610+ const unsigned int keyPAD6 = XK_KP_6;
2611+ const unsigned int keyPAD7 = XK_KP_7;
2612+ const unsigned int keyPAD8 = XK_KP_8;
2613+ const unsigned int keyPAD9 = XK_KP_9;
2614+ const unsigned int keyPADADD = XK_KP_Add;
2615+ const unsigned int keyPADSUB = XK_KP_Subtract;
2616+ const unsigned int keyPADMUL = XK_KP_Multiply;
2617+ const unsigned int keyPADDIV = XK_KP_Divide;
2618+
2619+#elif cimg_display==2
2620+ // Keycodes for Windows.
2621+ const unsigned int keyESC = VK_ESCAPE;
2622+ const unsigned int keyF1 = VK_F1;
2623+ const unsigned int keyF2 = VK_F2;
2624+ const unsigned int keyF3 = VK_F3;
2625+ const unsigned int keyF4 = VK_F4;
2626+ const unsigned int keyF5 = VK_F5;
2627+ const unsigned int keyF6 = VK_F6;
2628+ const unsigned int keyF7 = VK_F7;
2629+ const unsigned int keyF8 = VK_F8;
2630+ const unsigned int keyF9 = VK_F9;
2631+ const unsigned int keyF10 = VK_F10;
2632+ const unsigned int keyF11 = VK_F11;
2633+ const unsigned int keyF12 = VK_F12;
2634+ const unsigned int keyPAUSE = VK_PAUSE;
2635+ const unsigned int key1 = '1';
2636+ const unsigned int key2 = '2';
2637+ const unsigned int key3 = '3';
2638+ const unsigned int key4 = '4';
2639+ const unsigned int key5 = '5';
2640+ const unsigned int key6 = '6';
2641+ const unsigned int key7 = '7';
2642+ const unsigned int key8 = '8';
2643+ const unsigned int key9 = '9';
2644+ const unsigned int key0 = '0';
2645+ const unsigned int keyBACKSPACE = VK_BACK;
2646+ const unsigned int keyINSERT = VK_INSERT;
2647+ const unsigned int keyHOME = VK_HOME;
2648+ const unsigned int keyPAGEUP = VK_PRIOR;
2649+ const unsigned int keyTAB = VK_TAB;
2650+ const unsigned int keyQ = 'Q';
2651+ const unsigned int keyW = 'W';
2652+ const unsigned int keyE = 'E';
2653+ const unsigned int keyR = 'R';
2654+ const unsigned int keyT = 'T';
2655+ const unsigned int keyY = 'Y';
2656+ const unsigned int keyU = 'U';
2657+ const unsigned int keyI = 'I';
2658+ const unsigned int keyO = 'O';
2659+ const unsigned int keyP = 'P';
2660+ const unsigned int keyDELETE = VK_DELETE;
2661+ const unsigned int keyEND = VK_END;
2662+ const unsigned int keyPAGEDOWN = VK_NEXT;
2663+ const unsigned int keyCAPSLOCK = VK_CAPITAL;
2664+ const unsigned int keyA = 'A';
2665+ const unsigned int keyS = 'S';
2666+ const unsigned int keyD = 'D';
2667+ const unsigned int keyF = 'F';
2668+ const unsigned int keyG = 'G';
2669+ const unsigned int keyH = 'H';
2670+ const unsigned int keyJ = 'J';
2671+ const unsigned int keyK = 'K';
2672+ const unsigned int keyL = 'L';
2673+ const unsigned int keyENTER = VK_RETURN;
2674+ const unsigned int keySHIFTLEFT = VK_SHIFT;
2675+ const unsigned int keyZ = 'Z';
2676+ const unsigned int keyX = 'X';
2677+ const unsigned int keyC = 'C';
2678+ const unsigned int keyV = 'V';
2679+ const unsigned int keyB = 'B';
2680+ const unsigned int keyN = 'N';
2681+ const unsigned int keyM = 'M';
2682+ const unsigned int keySHIFTRIGHT = VK_SHIFT;
2683+ const unsigned int keyARROWUP = VK_UP;
2684+ const unsigned int keyCTRLLEFT = VK_CONTROL;
2685+ const unsigned int keyAPPLEFT = VK_LWIN;
2686+ const unsigned int keyALT = VK_LMENU;
2687+ const unsigned int keySPACE = VK_SPACE;
2688+ const unsigned int keyALTGR = VK_CONTROL;
2689+ const unsigned int keyAPPRIGHT = VK_RWIN;
2690+ const unsigned int keyMENU = VK_APPS;
2691+ const unsigned int keyCTRLRIGHT = VK_CONTROL;
2692+ const unsigned int keyARROWLEFT = VK_LEFT;
2693+ const unsigned int keyARROWDOWN = VK_DOWN;
2694+ const unsigned int keyARROWRIGHT = VK_RIGHT;
2695+ const unsigned int keyPAD0 = 0x60;
2696+ const unsigned int keyPAD1 = 0x61;
2697+ const unsigned int keyPAD2 = 0x62;
2698+ const unsigned int keyPAD3 = 0x63;
2699+ const unsigned int keyPAD4 = 0x64;
2700+ const unsigned int keyPAD5 = 0x65;
2701+ const unsigned int keyPAD6 = 0x66;
2702+ const unsigned int keyPAD7 = 0x67;
2703+ const unsigned int keyPAD8 = 0x68;
2704+ const unsigned int keyPAD9 = 0x69;
2705+ const unsigned int keyPADADD = VK_ADD;
2706+ const unsigned int keyPADSUB = VK_SUBTRACT;
2707+ const unsigned int keyPADMUL = VK_MULTIPLY;
2708+ const unsigned int keyPADDIV = VK_DIVIDE;
2709+
2710+#else
2711+ // Define unknow keycodes when no display are available.
2712+ // (should rarely be used then !).
2713+ const unsigned int keyESC = 1U;
2714+ const unsigned int keyF1 = 2U;
2715+ const unsigned int keyF2 = 3U;
2716+ const unsigned int keyF3 = 4U;
2717+ const unsigned int keyF4 = 5U;
2718+ const unsigned int keyF5 = 6U;
2719+ const unsigned int keyF6 = 7U;
2720+ const unsigned int keyF7 = 8U;
2721+ const unsigned int keyF8 = 9U;
2722+ const unsigned int keyF9 = 10U;
2723+ const unsigned int keyF10 = 11U;
2724+ const unsigned int keyF11 = 12U;
2725+ const unsigned int keyF12 = 13U;
2726+ const unsigned int keyPAUSE = 14U;
2727+ const unsigned int key1 = 15U;
2728+ const unsigned int key2 = 16U;
2729+ const unsigned int key3 = 17U;
2730+ const unsigned int key4 = 18U;
2731+ const unsigned int key5 = 19U;
2732+ const unsigned int key6 = 20U;
2733+ const unsigned int key7 = 21U;
2734+ const unsigned int key8 = 22U;
2735+ const unsigned int key9 = 23U;
2736+ const unsigned int key0 = 24U;
2737+ const unsigned int keyBACKSPACE = 25U;
2738+ const unsigned int keyINSERT = 26U;
2739+ const unsigned int keyHOME = 27U;
2740+ const unsigned int keyPAGEUP = 28U;
2741+ const unsigned int keyTAB = 29U;
2742+ const unsigned int keyQ = 30U;
2743+ const unsigned int keyW = 31U;
2744+ const unsigned int keyE = 32U;
2745+ const unsigned int keyR = 33U;
2746+ const unsigned int keyT = 34U;
2747+ const unsigned int keyY = 35U;
2748+ const unsigned int keyU = 36U;
2749+ const unsigned int keyI = 37U;
2750+ const unsigned int keyO = 38U;
2751+ const unsigned int keyP = 39U;
2752+ const unsigned int keyDELETE = 40U;
2753+ const unsigned int keyEND = 41U;
2754+ const unsigned int keyPAGEDOWN = 42U;
2755+ const unsigned int keyCAPSLOCK = 43U;
2756+ const unsigned int keyA = 44U;
2757+ const unsigned int keyS = 45U;
2758+ const unsigned int keyD = 46U;
2759+ const unsigned int keyF = 47U;
2760+ const unsigned int keyG = 48U;
2761+ const unsigned int keyH = 49U;
2762+ const unsigned int keyJ = 50U;
2763+ const unsigned int keyK = 51U;
2764+ const unsigned int keyL = 52U;
2765+ const unsigned int keyENTER = 53U;
2766+ const unsigned int keySHIFTLEFT = 54U;
2767+ const unsigned int keyZ = 55U;
2768+ const unsigned int keyX = 56U;
2769+ const unsigned int keyC = 57U;
2770+ const unsigned int keyV = 58U;
2771+ const unsigned int keyB = 59U;
2772+ const unsigned int keyN = 60U;
2773+ const unsigned int keyM = 61U;
2774+ const unsigned int keySHIFTRIGHT = 62U;
2775+ const unsigned int keyARROWUP = 63U;
2776+ const unsigned int keyCTRLLEFT = 64U;
2777+ const unsigned int keyAPPLEFT = 65U;
2778+ const unsigned int keyALT = 66U;
2779+ const unsigned int keySPACE = 67U;
2780+ const unsigned int keyALTGR = 68U;
2781+ const unsigned int keyAPPRIGHT = 69U;
2782+ const unsigned int keyMENU = 70U;
2783+ const unsigned int keyCTRLRIGHT = 71U;
2784+ const unsigned int keyARROWLEFT = 72U;
2785+ const unsigned int keyARROWDOWN = 73U;
2786+ const unsigned int keyARROWRIGHT = 74U;
2787+ const unsigned int keyPAD0 = 75U;
2788+ const unsigned int keyPAD1 = 76U;
2789+ const unsigned int keyPAD2 = 77U;
2790+ const unsigned int keyPAD3 = 78U;
2791+ const unsigned int keyPAD4 = 79U;
2792+ const unsigned int keyPAD5 = 80U;
2793+ const unsigned int keyPAD6 = 81U;
2794+ const unsigned int keyPAD7 = 82U;
2795+ const unsigned int keyPAD8 = 83U;
2796+ const unsigned int keyPAD9 = 84U;
2797+ const unsigned int keyPADADD = 85U;
2798+ const unsigned int keyPADSUB = 86U;
2799+ const unsigned int keyPADMUL = 87U;
2800+ const unsigned int keyPADDIV = 88U;
2801+#endif
2802+
2803+ const double PI = 3.14159265358979323846; //!< Definition of the mathematical constant PI
2804+
2805+ // Definition of a 10x13 font (small size).
2806+ const unsigned int font10x13[256*10*13/32] = {
2807+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2808+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80100c0,
2809+ 0x68000300,0x801,0xc00010,0x100c000,0x68100,0x100c0680,0x2,0x403000,0x1000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2810+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2811+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x0,0x0,0x4020120,
2812+ 0x58120480,0x402,0x1205008,0x2012050,0x58080,0x20120581,0x40000001,0x804812,0x2000000,0x0,0x300,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2813+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x140,0x80000,0x200402,0x800000,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2814+ 0x0,0x7010,0x7000000,0x8000200,0x20000,0xc0002000,0x8008,0x0,0x0,0x0,0x0,0x808,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2815+ 0x0,0x0,0x80000000,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x480,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x80100c0,0x68000480,0x1001,
2816+ 0xc00010,0x1018000,0x68100,0x100c0680,0x4,0x403000,0x1020000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20140,0x28081883,0x200801,
2817+ 0x2a00000,0x10,0x1c0201c0,0x70040f80,0xc0f81c07,0x0,0x70,0x3e0303c0,0x3c3c0f83,0xe03c2107,0xe08810,0x18c31070,0x3c0703c0,
2818+ 0x783e0842,0x22222208,0x83e04010,0x1008000,0x4000200,0x20001,0x2002,0x408008,0x0,0x0,0x100000,0x0,0x1008,0x2000000,0x0,0x0,0x0,
2819+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20080,0x38000880,0x8078140f,0x81c00000,0x3e000,0xc020180,0x60080001,0xe0000002,0xc00042,0x108e2010,
2820+ 0xc0300c0,0x300c0303,0xf83c3e0f,0x83e0f81c,0x701c070,0x3c0c41c0,0x701c0701,0xc0001d08,0x42108421,0x8820088,0x4020120,0x58140480,
2821+ 0x802,0x1205008,0x3014050,0xc058080,0x20120581,0x40000002,0x804814,0x2020050,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20140,
2822+ 0x281e2484,0x80200801,0x1c02000,0x10,0x22060220,0x880c0801,0x82208,0x80000001,0x20008,0x41030220,0x40220802,0x402102,0x209010,
2823+ 0x18c31088,0x22088220,0x80080842,0x22222208,0x80204010,0x1014000,0x200,0x20001,0x2000,0x8008,0x0,0x0,0x100000,0x0,0x1008,
2824+ 0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x40000500,0x80800010,0x40200000,0x41000,0x12020040,0x10000003,0xa0000006,
2825+ 0x12000c4,0x31014000,0xc0300c0,0x300c0302,0x80402008,0x2008008,0x2008020,0x220c4220,0x88220882,0x20002208,0x42108421,0x8820088,
2826+ 0x0,0x300,0x0,0x0,0x0,0x14000000,0x0,0x200200,0x0,0x20000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000,0xfc282504,0x80001000,
2827+ 0x82a02000,0x20,0x22020020,0x8140802,0x102208,0x80801006,0x18008,0x9c848220,0x80210802,0x802102,0x20a010,0x15429104,0x22104220,
2828+ 0x80080842,0x22221405,0x404008,0x1022000,0x703c0,0x381e0701,0xc0783c02,0xc09008,0x1d83c070,0x3c078140,0x381c0882,0x21242208,
2829+ 0x81e01008,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x201e0,0x40220500,0x80800027,0x20e02800,0x9c800,0x12020040,
2830+ 0x20000883,0xa0200002,0x120a044,0x11064010,0x12048120,0x48120484,0x80802008,0x2008008,0x2008020,0x210a4411,0x4411044,0x10884508,
2831+ 0x42108421,0x503c0b0,0x1c0701c0,0x701c0707,0x70381c07,0x1c07008,0x2008020,0x20f01c0,0x701c0701,0xc0201c08,0x82208822,0x883c088,
2832+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000,0x50281903,0x20001000,0x80802000,0x20,0x22020040,0x30240f03,0xc0101c08,0x80801018,
2833+ 0x1fc06010,0xa48483c0,0x80210f03,0xe0803f02,0x20c010,0x15429104,0x22104220,0x70080841,0x41540805,0x804008,0x1041000,0x8220,
2834+ 0x40220881,0x882202,0x40a008,0x12422088,0x22088180,0x40100882,0x21241408,0x80201008,0x2031000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2835+ 0x0,0x20280,0x401c0200,0x700028,0x21205000,0x92800,0xc1fc080,0x10000883,0xa0200002,0x1205049,0x12c19010,0x12048120,0x48120484,
2836+ 0xf0803c0f,0x3c0f008,0x2008020,0x790a4411,0x4411044,0x10504908,0x42108421,0x5022088,0x2008020,0x8020080,0x88402208,0x82208808,
2837+ 0x2008020,0x1e088220,0x88220882,0x20002608,0x82208822,0x8822088,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000,0x501c0264,
2838+ 0xa0001000,0x8001fc00,0x7000020,0x22020080,0x83e0082,0x20202207,0x80000020,0x1020,0xa4848220,0x80210802,0x9c2102,0x20c010,
2839+ 0x12425104,0x3c1043c0,0x8080841,0x41540802,0x804008,0x1000000,0x78220,0x40220f81,0x882202,0x40c008,0x12422088,0x22088100,
2840+ 0x60100881,0x41540805,0x406008,0x1849000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20280,0xf0140200,0x880028,0x20e0a03f,0x709c800,
2841+ 0x201c0,0x60000881,0xa0000007,0xc0284b,0x122eb020,0x12048120,0x48120487,0x80802008,0x2008008,0x2008020,0x21094411,0x4411044,
2842+ 0x10204908,0x42108421,0x2022088,0x1e0781e0,0x781e0787,0xf8403e0f,0x83e0f808,0x2008020,0x22088220,0x88220882,0x21fc2a08,0x82208822,
2843+ 0x5022050,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20001,0xf80a0294,0x40001000,0x80002000,0x20,0x22020100,0x8040082,0x20202200,
2844+ 0x80000018,0x1fc06020,0xa48fc220,0x80210802,0x842102,0x20a010,0x12425104,0x20104240,0x8080841,0x41541402,0x1004008,0x1000000,
2845+ 0x88220,0x40220801,0x882202,0x40a008,0x12422088,0x22088100,0x18100881,0x41540805,0x801008,0x2046000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2846+ 0x0,0x0,0x0,0x20280,0x401c0f80,0x80880028,0x20005001,0x94800,0x20000,0x880,0xa0000000,0x5015,0x4215040,0x3f0fc3f0,0xfc3f0fc8,
2847+ 0x80802008,0x2008008,0x2008020,0x21094411,0x4411044,0x10505108,0x42108421,0x203c088,0x22088220,0x88220888,0x80402008,0x2008008,
2848+ 0x2008020,0x22088220,0x88220882,0x20002a08,0x82208822,0x5022050,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa00a0494,0x60001000,
2849+ 0x80002004,0x8020,0x22020200,0x88040882,0x20402201,0x801006,0x18000,0x9f084220,0x40220802,0x442102,0x209010,0x10423088,0x20088220,
2850+ 0x8080840,0x80882202,0x2004008,0x1000000,0x88220,0x40220881,0x882202,0x409008,0x12422088,0x22088100,0x8100880,0x80881402,
2851+ 0x1001008,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20280,0x40220200,0x80700027,0x20002801,0x92800,0x1fc000,0x980,
2852+ 0xa0000000,0xa017,0x84417840,0x21084210,0x84210848,0x80402008,0x2008008,0x2008020,0x2208c220,0x88220882,0x20882208,0x42108421,
2853+ 0x2020088,0x22088220,0x88220888,0xc8402208,0x82208808,0x2008020,0x22088220,0x88220882,0x20203208,0x82208822,0x2022020,0x0,0x0,0x0,
2854+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000,0xa03c0463,0x90000801,0x2004,0x8040,0x1c0703e0,0x70040701,0xc0401c06,0x801001,0x20020,
2855+ 0x400843c0,0x3c3c0f82,0x3c2107,0x1c0881e,0x10423070,0x20070210,0xf0080780,0x80882202,0x3e04004,0x1000000,0x783c0,0x381e0701,
2856+ 0x782202,0x408808,0x12422070,0x3c078100,0x700c0780,0x80882202,0x1e01008,0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x201e0,
2857+ 0xf8000200,0x80080010,0x40000001,0x41000,0x0,0xe80,0xa0000000,0x21,0x8e21038,0x21084210,0x84210848,0xf83c3e0f,0x83e0f81c,
2858+ 0x701c070,0x3c08c1c0,0x701c0701,0xc0005c07,0x81e0781e,0x20200b0,0x1e0781e0,0x781e0787,0x30381c07,0x1c07008,0x2008020,0x1c0881c0,
2859+ 0x701c0701,0xc0201c07,0x81e0781e,0x203c020,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000,0x801,0x4,0x40,0x0,0x0,0x0,0x1000,
2860+ 0x0,0x3c000000,0x0,0x0,0x0,0x0,0x10000,0x0,0x0,0x4004,0x1000000,0x0,0x0,0x80000,0x400000,0x0,0x20008000,0x0,0x4,0x1008,0x2000000,
2861+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x8008000f,0x80000000,0x3e000,0x0,0x800,0xa0000400,0x0,0x0,0x0,0x0,0x80000,0x0,
2862+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100000,0x0,0x0,0x0,0x0,0x2000,0x0,0x4020040,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000,
2863+ 0x402,0x8,0x40,0x0,0x0,0x0,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0xc000,0x0,0x0,0x7004,0x70000fc,0x0,0x0,0x700000,0x800000,0x0,0x20008000,
2864+ 0x0,0x4,0x808,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x80f00000,0x0,0x0,0x0,0x800,0xa0001800,0x0,0x0,0x0,0x0,
2865+ 0x300000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x600000,0x0,0x0,0x0,0x0,0x0,0x0,0x4020040
2866+ };
2867+
2868+ // Definition of a 12x24 font (normal size).
2869+ const unsigned int font12x24[12*24*256/32] = {
2870+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2871+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x19,0x80000000,0x198000,0x0,0x0,0x0,0x0,
2872+ 0x0,0x198,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc001806,0xc81980,0x60000000,0xc001806,0x1980c00,0x18060198,0xc80c,
2873+ 0x180600,0xc8198000,0xc001,0x80601980,0x18000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2874+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2875+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf,0x0,0xf0000,0x0,0x0,0x0,0x0,0x0,0x198,0x0,0x0,0x0,0x0,0x0,0x0,
2876+ 0x0,0x0,0x0,0x0,0x0,0x0,0x600300f,0x1301980,0x90000000,0x600300f,0x1980600,0x300f0198,0x13006,0x300f01,0x30198000,0x6003,
2877+ 0xf01980,0x30000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2878+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2879+ 0x0,0x0,0x0,0x0,0x0,0x0,0x6,0x0,0x60000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7007,0x3c0000,0x3006019,
2880+ 0x80000000,0x90000000,0x3006019,0x80000300,0x60198000,0x3,0x601980,0x0,0x3006,0x1980000,0x60000000,0x0,0x0,0xe0000000,0x0,
2881+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2882+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000000,
2883+ 0x0,0x0,0x0,0x0,0x0,0xc800019,0x80000000,0x198000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x1001,0x420000,0x0,0x0,0x90000000,
2884+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18000c06,0xc80001,0x10000000,0x18000c06,0x1800,0xc060000,0xc818,0xc0600,0xc8000000,
2885+ 0x18000,0xc0600000,0xc000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6019,0x80660207,0x800f8060,0x300c004,0x0,0x6,
2886+ 0xe00703f,0x3f00383,0xf80f07fc,0x1f01f000,0x0,0xf8,0x607f,0x7c7e07,0xfe7fe0f8,0x6063fc1f,0x86066007,0xe7060f0,0x7f80f07f,
2887+ 0x81f8fff6,0x6606c03,0x70ee077f,0xe0786000,0xf0070000,0xc000060,0xc0,0x3e000,0x60006003,0x600fc00,0x0,0x0,0x0,0x0,0x0,0x3c0603,
2888+ 0xc0000000,0x7800000,0xf0000,0x0,0xf00001f,0x80001fe0,0x7fe000,0x0,0x0,0x0,0x168fe609,0x0,0x90e07,0x6000,0x3c000e,0x70000f8,
2889+ 0x1980001f,0x0,0x1f8,0xf00000f,0xf00180,0xfe000,0xe00e,0x1001,0x20060,0x6006006,0x600600,0x600fe07c,0x7fe7fe7f,0xe7fe3fc3,
2890+ 0xfc3fc3fc,0x7e07060f,0xf00f00,0xf00f0000,0xf360660,0x6606606e,0x76001e0,0xc00180f,0x1681981,0x10000000,0xc00180f,0x1980c00,
2891+ 0x180f0198,0x3801680c,0x180f01,0x68198000,0xc001,0x80f01980,0x18600198,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6019,
2892+ 0x8044020c,0xc01f8060,0x2004004,0x0,0xc,0x3f81f07f,0x87f80383,0xf81f87fc,0x3f83f800,0x0,0x1fc,0x780607f,0x81fe7f87,0xfe7fe1fc,
2893+ 0x6063fc1f,0x860c6007,0xe7061f8,0x7fc1f87f,0xc3fcfff6,0x6606c03,0x30c6067f,0xe0783000,0xf00d8000,0x6000060,0xc0,0x7e000,0x60006003,
2894+ 0x600fc00,0x0,0x0,0xc00,0x0,0x0,0x7c0603,0xe0000000,0xfc00000,0x1f0000,0x0,0x900003f,0xc0003fe0,0x7fe000,0x0,0x0,0x0,0x1302660f,
2895+ 0x0,0xf0606,0x6004,0x7e0006,0x60601f8,0x19800001,0x80000000,0x1f8,0x19800010,0x81080300,0x3f2000,0x2011,0x1001,0x1c0060,0x6006006,
2896+ 0x600600,0x601fe1fe,0x7fe7fe7f,0xe7fe3fc3,0xfc3fc3fc,0x7f87061f,0x81f81f81,0xf81f8000,0x3fa60660,0x66066066,0x66003f0,0x6003009,
2897+ 0x1301981,0x10000000,0x6003009,0x1980600,0x30090198,0x1f013006,0x300901,0x30198000,0x6003,0x901980,0x30600198,0x0,0x0,0x0,
2898+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6019,0x80cc0f8c,0xc0180060,0x6006044,0x40000000,0xc,0x3181b041,0xc41c0783,0x388018,
2899+ 0x71c71800,0x0,0x106,0x18c0f061,0xc38261c6,0x600384,0x60606001,0x86186007,0xe78630c,0x60e30c60,0xe7040606,0x630cc03,0x39c30c00,
2900+ 0xc0603000,0x3018c000,0x3000060,0xc0,0x60000,0x60000000,0x6000c00,0x0,0x0,0xc00,0x0,0x0,0x600600,0x60000000,0x18400000,0x180000,
2901+ 0x0,0x19800070,0x40003600,0xc000,0x0,0x0,0x0,0x25a06,0x0,0x6030c,0x4,0xe20007,0xe060180,0xf000,0x80000000,0xf0000,0x10800000,
2902+ 0x80080600,0x7f2000,0x2020,0x80001001,0x20000,0xf00f00f,0xf00f00,0x601b0382,0x60060060,0x6000600,0x60060060,0x61c78630,0xc30c30c3,
2903+ 0xc30c000,0x30e60660,0x66066063,0xc600738,0x3006019,0x80000000,0xe0000000,0x3006019,0x80000300,0x60198000,0x3e000003,0x601980,
2904+ 0x0,0x3006,0x1980000,0x60600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6019,0x80cc1fcc,0xc0180060,0x6006035,0x80000000,
2905+ 0x18,0x71c03000,0xc00c0583,0x300018,0x60c60c00,0x0,0x6,0x3060f060,0xc30060c6,0x600300,0x60606001,0x86306007,0x9e78670e,0x60670e60,
2906+ 0x66000606,0x630c606,0x19830c01,0xc0601800,0x30306000,0x60,0xc0,0x60000,0x60000000,0x6000c00,0x0,0x0,0xc00,0x0,0x0,0x600600,
2907+ 0x60000000,0x18000000,0x300000,0x0,0x78060,0x6600,0x1c000,0x300c,0x39819c0,0x0,0x25a00,0x0,0x30c,0x4,0xc00003,0xc060180,0x30c1f,
2908+ 0x80000000,0x30c000,0x10800001,0x80700000,0x7f2000,0x2020,0x80001001,0x20060,0xf00f00f,0xf00f00,0xf01b0300,0x60060060,0x6000600,
2909+ 0x60060060,0x60c78670,0xe70e70e7,0xe70e000,0x70c60660,0x66066063,0xc7f8618,0x0,0x0,0x0,0x0,0x0,0x0,0x7000000,0x0,0x0,0x0,
2910+ 0x0,0x600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6019,0x87ff3a4c,0xc0180060,0x400600e,0x600000,0x18,0x60c03000,
2911+ 0xc00c0d83,0x700018,0x60c60c00,0x20,0x400006,0x3060f060,0xc6006066,0x600600,0x60606001,0x86606006,0x966c6606,0x60660660,0x66000606,
2912+ 0x630c666,0xf019801,0x80601800,0x30603000,0x1f06f,0xf01ec0,0xf03fe1ec,0x6703e01f,0x61c0c06,0xdc6701f0,0x6f01ec0c,0xe1f87fc6,
2913+ 0xc60cc03,0x71c60c7f,0xc0600600,0x60000000,0x30000000,0x300000,0x40040,0x88060,0x6600,0x18000,0x300c,0x1981980,0x0,0x2421f,
2914+ 0x80003ce0,0x7fc198,0x601f,0xc02021,0x980600c0,0x40230,0x80000000,0x402000,0x19806003,0x80006,0xc7f2000,0x2020,0x80001001,
2915+ 0x420060,0xf00f00f,0xf00f00,0xf01b0600,0x60060060,0x6000600,0x60060060,0x6066c660,0x66066066,0x6606208,0x60e60660,0x66066061,
2916+ 0x987fc670,0x1f01f01f,0x1f01f01,0xf039c0f0,0xf00f00f,0xf03e03,0xe03e03e0,0x1f06701f,0x1f01f01,0xf01f0060,0x1e660c60,0xc60c60c6,
2917+ 0xc6f060c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0x7ff3207,0x8c0c0000,0xc00300e,0x600000,0x30,0x60c03000,
2918+ 0xc01c0983,0xf0600030,0x31860c06,0x6001e0,0x78000e,0x23e1f861,0xc6006066,0x600600,0x60606001,0x86c06006,0x966c6606,0x60660660,
2919+ 0xe7000606,0x630c666,0xf01f803,0x600c00,0x30000000,0x3f87f,0x83f83fc3,0xf83fe3fc,0x7f83e01f,0x6380c07,0xfe7f83f8,0x7f83fc0d,
2920+ 0xf3fc7fc6,0xc71cc03,0x3183187f,0xc0600600,0x60000000,0xff806000,0x300000,0x40040,0x88070,0x6600,0x60030060,0x6001818,0x1883180,
2921+ 0x0,0x2423f,0xc0007ff0,0x607fc1f8,0x603f,0x80c01fc1,0xf80601e0,0x5f220,0x80420000,0x5f2000,0xf006006,0x80006,0xc7f2000,0x2020,
2922+ 0x82107c07,0xc03c0060,0x1f81f81f,0x81f81f80,0xf03b0600,0x60060060,0x6000600,0x60060060,0x6066c660,0x66066066,0x660671c,0x61660660,
2923+ 0x66066061,0xf860e6c0,0x3f83f83f,0x83f83f83,0xf87fe3f8,0x3f83f83f,0x83f83e03,0xe03e03e0,0x3f87f83f,0x83f83f83,0xf83f8060,
2924+ 0x3fc60c60,0xc60c60c3,0x187f8318,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0x883200,0x300c0000,0xc003035,0x80600000,
2925+ 0x30,0x66c03001,0xc0f81983,0xf86f0030,0x1f071c06,0x600787,0xfe1e001c,0x6261987f,0x86006067,0xfe7fc600,0x7fe06001,0x87c06006,
2926+ 0xf6646606,0x60e6067f,0xc3e00606,0x61986f6,0x600f007,0x600c00,0x30000000,0x21c71,0x830831c3,0x1c06031c,0x71c06003,0x6700c06,
2927+ 0x6671c318,0x71831c0f,0x16040c06,0xc318606,0x1b031803,0x80600600,0x60000000,0x30009000,0x300000,0x40040,0x7003e,0x67e0,0x90070090,
2928+ 0x9001818,0x8c3100,0x0,0x60,0x4000e730,0x900380f0,0x6034,0x80c018c7,0xfe060338,0xb0121,0x80c60000,0x909000,0x6008,0x1080006,
2929+ 0xc3f2000,0x2011,0x3180060,0x60060e0,0x19819819,0x81981981,0x9833c600,0x7fe7fe7f,0xe7fe0600,0x60060060,0x60664660,0x66066066,
2930+ 0x66063b8,0x62660660,0x66066060,0xf06066c0,0x21c21c21,0xc21c21c2,0x1c466308,0x31c31c31,0xc31c0600,0x60060060,0x31871c31,0x83183183,
2931+ 0x18318000,0x71860c60,0xc60c60c3,0x18718318,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0x1981a00,0xe03e0000,0xc003044,
2932+ 0x40600000,0x60,0x66c03001,0x80f03182,0x1c7f8030,0x3f83fc06,0x601e07,0xfe078038,0x6661987f,0x86006067,0xfe7fc61e,0x7fe06001,
2933+ 0x87e06006,0x66666606,0x7fc6067f,0x81f80606,0x61986f6,0x6006006,0x600600,0x30000000,0xc60,0xc60060c6,0xc06060c,0x60c06003,
2934+ 0x6e00c06,0x6660c60c,0x60c60c0e,0x6000c06,0xc318666,0x1f031803,0x600600,0x603c2000,0x30016800,0x1fe0000,0x1f81f8,0x1c1f,0x804067e1,
2935+ 0x68060168,0x16800810,0xc42300,0x0,0x60,0x20c331,0x68030060,0x6064,0x3fc1040,0xf006031c,0xa011e,0x818c7fe0,0x909000,0x7fe1f,
2936+ 0x80f00006,0xc0f2060,0xf80e,0x18c0780,0x780781c0,0x19819819,0x81981981,0x9833c600,0x7fe7fe7f,0xe7fe0600,0x60060060,0xfc666660,
2937+ 0x66066066,0x66061f0,0x66660660,0x66066060,0x606066e0,0xc00c00,0xc00c00c0,0xc066600,0x60c60c60,0xc60c0600,0x60060060,0x60c60c60,
2938+ 0xc60c60c6,0xc60c000,0x61c60c60,0xc60c60c3,0x1860c318,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0x1980f81,0x80373000,
2939+ 0xc003004,0x7fe0001,0xf0000060,0x60c03003,0x183180,0xc71c060,0x3181ec00,0x7000,0xe070,0x66619860,0xc6006066,0x60061e,0x60606001,
2940+ 0x87606006,0x66626606,0x7f860661,0xc01c0606,0x6198696,0xf00600e,0x600600,0x30000000,0x1fc60,0xc60060c7,0xfc06060c,0x60c06003,
2941+ 0x7c00c06,0x6660c60c,0x60c60c0c,0x7f00c06,0xc3b8666,0xe01b007,0x3c00600,0x3c7fe000,0xff03ec00,0x1fe0000,0x40040,0xe001,0xc0806603,
2942+ 0xec0e03ec,0x3ec00010,0x0,0x60000000,0x7f,0x10c3f3,0xec070060,0x6064,0x3fc1040,0x6000030c,0xa0100,0x3187fe1,0xf09f1000,0x7fe00,
2943+ 0x6,0xc012060,0x0,0xc63c03,0xc03c0380,0x19819819,0x81981981,0x98330600,0x60060060,0x6000600,0x60060060,0xfc662660,0x66066066,
2944+ 0x66060e0,0x6c660660,0x66066060,0x6060e630,0x1fc1fc1f,0xc1fc1fc1,0xfc3fe600,0x7fc7fc7f,0xc7fc0600,0x60060060,0x60c60c60,0xc60c60c6,
2945+ 0xc60c7fe,0x62c60c60,0xc60c60c1,0xb060c1b0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0xffe02c6,0x3c633000,0xc003004,
2946+ 0x7fe0001,0xf00000c0,0x60c03006,0xc6180,0xc60c060,0x60c00c00,0x7000,0xe060,0x66639c60,0x66006066,0x600606,0x60606001,0x86306006,
2947+ 0x66636606,0x60060660,0xc0060606,0x61f8696,0xf00600c,0x600300,0x30000000,0x3fc60,0xc60060c7,0xfc06060c,0x60c06003,0x7c00c06,
2948+ 0x6660c60c,0x60c60c0c,0x1f80c06,0xc1b0666,0xe01b00e,0x3c00600,0x3c43c000,0x3007de00,0x600000,0x40040,0x30000,0x61006607,0xde0c07de,
2949+ 0x7de00000,0x0,0xf07fefff,0x1f,0x8008c3f7,0xde0e0060,0x6064,0xc01047,0xfe00018c,0xb013f,0x86300061,0xf0911000,0x6000,0x6,
2950+ 0xc012060,0x3f,0x8063c0cc,0x3cc0c700,0x39c39c39,0xc39c39c1,0x98630600,0x60060060,0x6000600,0x60060060,0x60663660,0x66066066,
2951+ 0x66061f0,0x78660660,0x66066060,0x607fc618,0x3fc3fc3f,0xc3fc3fc3,0xfc7fe600,0x7fc7fc7f,0xc7fc0600,0x60060060,0x60c60c60,0xc60c60c6,
2952+ 0xc60c7fe,0x64c60c60,0xc60c60c1,0xb060c1b0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0xffe0260,0x6661b000,0xc003000,
2953+ 0x600000,0xc0,0x60c0300c,0xc7fe0,0xc60c060,0x60c01c00,0x1e07,0xfe078060,0x6663fc60,0x66006066,0x600606,0x60606001,0x86386006,
2954+ 0x6636606,0x60060660,0xe0060606,0x60f039c,0x1b806018,0x600300,0x30000000,0x70c60,0xc60060c6,0x6060c,0x60c06003,0x7600c06,
2955+ 0x6660c60c,0x60c60c0c,0x1c0c06,0xc1b03fc,0xe01f01c,0xe00600,0x70000000,0x3007fc00,0x600000,0x40040,0x0,0x62006607,0xfc1807fc,
2956+ 0x7fc00000,0x0,0xf0000000,0x1,0xc004c307,0xfc1c0060,0x6064,0xc018c0,0x600000d8,0x5f200,0x3180060,0x50a000,0x6000,0x6,0xc012000,
2957+ 0x0,0xc601c0,0x4201c600,0x3fc3fc3f,0xc3fc3fc3,0xfc7f0600,0x60060060,0x6000600,0x60060060,0x60663660,0x66066066,0x66063b8,
2958+ 0x70660660,0x66066060,0x607f860c,0x70c70c70,0xc70c70c7,0xcc60600,0x60060060,0x6000600,0x60060060,0x60c60c60,0xc60c60c6,0xc60c000,
2959+ 0x68c60c60,0xc60c60c1,0xf060c1f0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3300260,0x6661e000,0xc003000,0x600000,
2960+ 0x180,0x71c03018,0xc7fe0,0xc60c0c0,0x60c01800,0x787,0xfe1e0060,0x6663fc60,0x630060c6,0x600306,0x60606001,0x86186006,0x661e70e,
2961+ 0x60070c60,0x60060606,0x60f039c,0x19806038,0x600180,0x30000000,0x60c60,0xc60060c6,0x6060c,0x60c06003,0x6700c06,0x6660c60c,
2962+ 0x60c60c0c,0xc0c06,0xc1b039c,0x1f00e018,0x600600,0x60000000,0x1803f800,0x600000,0x40040,0x39e00,0x63006603,0xf83803f8,0x3f800000,
2963+ 0x0,0x60000000,0x0,0xc00cc303,0xf8180060,0x6064,0xc01fc0,0x60060070,0x40200,0x18c0060,0x402000,0x6000,0x6,0xc012000,0x0,0x18c0140,
2964+ 0x2014600,0x3fc3fc3f,0xc3fc3fc3,0xfc7f0300,0x60060060,0x6000600,0x60060060,0x60c61e70,0xe70e70e7,0xe70e71c,0x60e60660,0x66066060,
2965+ 0x6060060c,0x60c60c60,0xc60c60c6,0xcc60600,0x60060060,0x6000600,0x60060060,0x60c60c60,0xc60c60c6,0xc60c000,0x70c60c60,0xc60c60c0,
2966+ 0xe060c0e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x33022e0,0x6670c000,0xc003000,0x600600,0x60180,0x31803030,
2967+ 0x41c0184,0x1831c0c0,0x71c23806,0x6001e0,0x780000,0x62630c60,0xe38261c6,0x600386,0x60606043,0x860c6006,0x661e30c,0x60030c60,
2968+ 0x740e0607,0xe0f039c,0x31c06030,0x600180,0x30000000,0x61c71,0x830831c3,0x406031c,0x60c06003,0x6300c06,0x6660c318,0x71831c0c,
2969+ 0x41c0c07,0x1c0e039c,0x1b00e030,0x600600,0x60000000,0x1c41b00e,0x601cc0,0x401f8,0x45240,0xe1803601,0xb03001b0,0x1b000000,
2970+ 0x0,0x0,0x41,0xc008e711,0xb0300060,0x6034,0x80c02020,0x60060030,0x30c00,0xc60000,0x30c000,0x0,0x7,0x1c012000,0x0,0x3180240,
2971+ 0x6024608,0x30c30c30,0xc30c30c3,0xc630382,0x60060060,0x6000600,0x60060060,0x61c61e30,0xc30c30c3,0xc30c208,0x70c70e70,0xe70e70e0,
2972+ 0x6060068c,0x61c61c61,0xc61c61c6,0x1cc62308,0x30430430,0x43040600,0x60060060,0x31860c31,0x83183183,0x18318060,0x31c71c71,
2973+ 0xc71c71c0,0xe07180e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0x2203fc0,0x663f6000,0x6006000,0x600600,0x60300,
2974+ 0x3f81fe7f,0xc7f80187,0xf83f80c0,0x3f83f006,0x600020,0x400060,0x33e6067f,0xc1fe7f87,0xfe6001fe,0x6063fc7f,0x60e7fe6,0x660e3f8,
2975+ 0x6001f860,0x37fc0603,0xfc06030c,0x30c0607f,0xe06000c0,0x30000000,0x7fc7f,0x83f83fc3,0xfc0603fc,0x60c7fe03,0x61807c6,0x6660c3f8,
2976+ 0x7f83fc0c,0x7f80fc3,0xfc0e039c,0x3180607f,0xc0600600,0x60000000,0xfc0e00c,0x601986,0x66040040,0x4527f,0xc0803fe0,0xe07fe0e0,
2977+ 0xe000000,0x0,0x0,0x7f,0x80107ff0,0xe07fc060,0x603f,0x83fe0000,0x60060018,0xf000,0x420000,0xf0000,0x7fe00,0x7,0xfe012000,
2978+ 0x0,0x2100640,0xc0643f8,0x60660660,0x66066067,0xec3e1fe,0x7fe7fe7f,0xe7fe3fc3,0xfc3fc3fc,0x7f860e3f,0x83f83f83,0xf83f8000,
2979+ 0x5fc3fc3f,0xc3fc3fc0,0x606006fc,0x7fc7fc7f,0xc7fc7fc7,0xfcffe3f8,0x3fc3fc3f,0xc3fc7fe7,0xfe7fe7fe,0x3f860c3f,0x83f83f83,
2980+ 0xf83f8060,0x7f83fc3f,0xc3fc3fc0,0x607f8060,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000,0x2201f80,0x3c1e7000,0x6006000,
2981+ 0x600,0x60300,0xe01fe7f,0xc3f00183,0xe01f0180,0x1f01e006,0x600000,0x60,0x3006067f,0x807c7e07,0xfe6000f8,0x6063fc3e,0x6067fe6,
2982+ 0x660e0f0,0x6000f060,0x3bf80601,0xf806030c,0x60e0607f,0xe06000c0,0x30000000,0x1ec6f,0xf01ec0,0xf80601ec,0x60c7fe03,0x61c03c6,
2983+ 0x6660c1f0,0x6f01ec0c,0x3f007c1,0xcc0e030c,0x71c0c07f,0xc0600600,0x60000000,0x7804018,0xe01186,0x66040040,0x39e3f,0x80401fe0,
2984+ 0x407fe040,0x4000000,0x0,0x0,0x3f,0x203ce0,0x407fc060,0x601f,0x3fe0000,0x60060018,0x0,0x0,0x0,0x7fe00,0x6,0xe6012000,0x0,
2985+ 0x7e0,0x1807e1f0,0x60660660,0x66066066,0x6c3e07c,0x7fe7fe7f,0xe7fe3fc3,0xfc3fc3fc,0x7e060e0f,0xf00f00,0xf00f0000,0x8f01f81f,
2986+ 0x81f81f80,0x60600670,0x1ec1ec1e,0xc1ec1ec1,0xec79c0f0,0xf80f80f,0x80f87fe7,0xfe7fe7fe,0x1f060c1f,0x1f01f01,0xf01f0000,0x4f01cc1c,
2987+ 0xc1cc1cc0,0xc06f00c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x6006000,0x600,0x600,0x0,0x0,0x0,0x0,
2988+ 0x600000,0x0,0x18000000,0x0,0x0,0x0,0x0,0x0,0x1800,0x0,0x0,0x0,0x600060,0x30000000,0x0,0x0,0xc,0x3,0x0,0x0,0x60000c00,0x0,
2989+ 0x0,0xc000,0x600600,0x60000000,0x18,0xc03100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x601f8,0x0,0x0,0x0,0x0,0x6,
2990+ 0x12000,0x2000000,0x40,0x20004000,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2991+ 0x0,0xc06000c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x2004000,0xc00,0x0,0x0,0x0,0x0,0x0,0xc00000,
2992+ 0x0,0x1c000000,0x0,0x0,0x0,0x0,0x0,0xc00,0x0,0x0,0x0,0x780000,0xf0000000,0x0,0x0,0x21c,0x3,0x0,0x0,0x60000c00,0x0,0x0,0xc000,
2993+ 0x7c0603,0xe0000000,0x10,0xc02300,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x601f0,0x0,0x0,0x0,0x0,0x6,0x12000,0x1000000,
2994+ 0x40,0x7e004000,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc06000c0,0x0,
2995+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x300c000,0xc00,0x0,0x0,0x0,0x0,0x0,0xc00000,0x0,0x7800000,0x0,
2996+ 0x0,0x0,0x0,0x0,0x800,0x0,0x0,0x0,0x780000,0xf0000000,0x0,0x0,0x3f8,0x3e,0x0,0x0,0x60000c00,0x0,0x0,0x38000,0x3c0603,0xc0000000,
2997+ 0x10,0xfc00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x60000,0x0,0x0,0x0,0x0,0x6,0x0,0x1000000,0x0,0x0,0x0,0x0,
2998+ 0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x80600380,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
2999+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc,0x0,
3000+ 0x0,0x1f0,0x3c,0x0,0x0,0x60000c00,0x0,0x0,0x38000,0x600,0x0,0x0,0xf000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3001+ 0x0,0x0,0x0,0x0,0x0,0x6,0x0,0xe000000,0x0,0x0,0x0,0x0,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x0,0x0,0x0,0x0,
3002+ 0x0,0x0,0x0,0x3,0x80600380,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3003+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x600,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3004+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3005+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 };
3006+
3007+ // Definition of a 16x32 font (large size).
3008+ const unsigned int font16x32[16*32*256/32] = {
3009+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3010+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3011+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc300000,0x0,0xc300000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe70,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3012+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x70000e0,0x3c00730,0xe7001c0,0x0,0x70000e0,0x3c00e70,0x70000e0,0x3c00e70,0x730,0x70000e0,0x3c00730,
3013+ 0xe700000,0x700,0xe003c0,0xe7000e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3014+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3015+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3016+ 0x0,0x0,0x6600000,0x0,0x6600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe70,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3017+ 0x0,0x0,0x18001c0,0x6600ff0,0xe7003e0,0x0,0x18001c0,0x6600e70,0x18001c0,0x6600e70,0xff0,0x18001c0,0x6600ff0,0xe700000,0x180,
3018+ 0x1c00660,0xe7001c0,0x0,0x0,0x0,0x380,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3019+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3020+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00000,
3021+ 0x0,0x3c00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe70,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c00380,
3022+ 0xc300ce0,0xe700630,0x0,0x1c00380,0xc300e70,0x1c00380,0xc300e70,0xce0,0x1c00380,0xc300ce0,0xe700000,0x1c0,0x3800c30,0xe700380,
3023+ 0x0,0x0,0x0,0x7c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3024+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3025+ 0x0,0x0,0x0,0x0,0xe000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1800000,0x0,0x0,0x0,
3026+ 0x0,0x0,0x0,0x0,0x0,0xc300000,0x0,0xc300000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x700000,0x0,0x0,0x0,0x7c007c00,0x3e000000,
3027+ 0x0,0x0,0x630,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe000070,0x1800000,0xc60,0x0,0xe000070,0x1800000,0xe000070,
3028+ 0x1800000,0x0,0xe000070,0x1800000,0x0,0xe00,0x700180,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3029+ 0x0,0x0,0x0,0x800000,0x0,0x600600,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3030+ 0x0,0x0,0x3f0,0xfc0,0x0,0x7000000,0x38000000,0x1c0000,0xfc0000,0x380001c0,0xe01c00,0x7f800000,0x0,0x0,0x0,0x0,0x0,0x0,0x7c,
3031+ 0x1801f00,0x0,0x0,0x1c,0x0,0x0,0x3c00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7300000,0x6600000,0x0,0x6600000,0x0,0x0,0x0,0x0,0xe700000,
3032+ 0x0,0x0,0x0,0x0,0x0,0xe00000,0x0,0x0,0x0,0xc000c00,0x43800000,0x0,0x0,0x630,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3033+ 0xf80,0x70000e0,0x3c00730,0xe700c60,0x0,0x70000e0,0x3c00e70,0x70000e0,0x3c00e70,0xe000730,0x70000e0,0x3c00730,0xe700000,0x700,
3034+ 0xe003c0,0xe7000e0,0x38000e70,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x6300000,0x803c00,0x7c00180,
3035+ 0xc00300,0x1000000,0x0,0x1c,0x3c007c0,0xfc007e0,0xe01ff8,0x3f03ffc,0x7e007c0,0x0,0x0,0x7c0,0x1c0,0x7f8003f0,0x7f007ff8,0x7ff803f0,
3036+ 0x70381ffc,0xff0700e,0x7000783c,0x783807c0,0x7fc007c0,0x7fc00fc0,0x7fff7038,0x700ee007,0x780f780f,0x7ffc03f0,0x70000fc0,0x3c00000,
3037+ 0x3000000,0x38000000,0x1c0000,0x1fc0000,0x380001c0,0xe01c00,0x7f800000,0x0,0x0,0x0,0x0,0x0,0x0,0xfc,0x1801f80,0x0,0x1f80000,
3038+ 0x7e,0x0,0x0,0x2400000,0xfc00000,0x7ff0000,0x7ffc0000,0x0,0x0,0x0,0x0,0xf30fb0c,0x2400000,0x0,0x240780f,0x1c0,0xfc,0x780f,
3039+ 0x18003f0,0xe700000,0x7c00000,0x0,0xff0,0x3c00000,0x78007c0,0xc00000,0xff80000,0xf80,0x7c00000,0xc000c00,0x18001c0,0x1c001c0,
3040+ 0x1c001c0,0x1c003e0,0x7fe03f0,0x7ff87ff8,0x7ff87ff8,0x1ffc1ffc,0x1ffc1ffc,0x7f007838,0x7c007c0,0x7c007c0,0x7c00000,0x7c67038,
3041+ 0x70387038,0x7038780f,0x70001fe0,0x30000c0,0x2400f30,0xe700c60,0x0,0x30000c0,0x2400e70,0x30000c0,0x2400e70,0xf700f30,0x30000c0,
3042+ 0x2400f30,0xe700000,0x300,0xc00240,0xe7000c0,0x38000e70,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,
3043+ 0x630018c,0x807e00,0xfe00180,0xc00300,0x1000000,0x0,0x38,0xff01fc0,0x3ff01ff0,0x1e01ff8,0x7f83ffc,0x1ff80ff0,0x0,0x0,0xff0,
3044+ 0x1f003e0,0x7fe00ff8,0x7fc07ff8,0x7ff80ff8,0x70381ffc,0xff0701c,0x7000783c,0x78381ff0,0x7fe01ff0,0x7fe01ff0,0x7fff7038,0x781ee007,
3045+ 0x3c1e380e,0x7ffc0380,0x380001c0,0x3c00000,0x1800000,0x38000000,0x1c0000,0x3c00000,0x380001c0,0xe01c00,0x3800000,0x0,0x0,
3046+ 0x0,0x7000000,0x0,0x0,0x1e0,0x18003c0,0x0,0x3fc0000,0x70,0x0,0x0,0x6600000,0x1ff00000,0x1fff0000,0x7ffc0000,0x0,0x0,0x0,0x0,
3047+ 0xcf0239c,0x3c00000,0x0,0x3c0380e,0x1c0,0x2001fe,0x380e,0x18007f8,0xe700000,0x8600000,0x0,0xff0,0x7e00000,0x8c00870,0x1800000,
3048+ 0x1ff80000,0x180,0xc600000,0xc000c00,0x38001c0,0x3e003e0,0x3e003e0,0x3e001c0,0x7fe0ff8,0x7ff87ff8,0x7ff87ff8,0x1ffc1ffc,0x1ffc1ffc,
3049+ 0x7fc07838,0x1ff01ff0,0x1ff01ff0,0x1ff00000,0x1fec7038,0x70387038,0x7038380e,0x70003ce0,0x1800180,0x6600cf0,0xe7007c0,0x0,
3050+ 0x1800180,0x6600e70,0x1800180,0x6600e70,0x7c00cf0,0x1800180,0x6600cf0,0xe700000,0x180,0x1800660,0xe700180,0x38000e70,0x0,
3051+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x630030c,0x3f0e700,0x1e200180,0x1800180,0x21100000,0x0,
3052+ 0x38,0x1e7819c0,0x38781038,0x1e01c00,0xf080038,0x1c381c38,0x0,0x0,0x1878,0x7fc03e0,0x70e01e18,0x70e07000,0x70001e18,0x703801c0,
3053+ 0x707038,0x70007c7c,0x7c381c70,0x70701c70,0x70703830,0x1c07038,0x381ce007,0x1c1c3c1e,0x3c0380,0x380001c0,0x7e00000,0xc00000,
3054+ 0x38000000,0x1c0000,0x3800000,0x38000000,0x1c00,0x3800000,0x0,0x0,0x0,0x7000000,0x0,0x0,0x1c0,0x18001c0,0x0,0x70c0000,0xe0,
3055+ 0x0,0x0,0xc300000,0x38300000,0x3c700000,0x3c0000,0x0,0x0,0x0,0x0,0xce022f4,0x1800000,0x0,0x1803c1e,0x1c0,0x2003c2,0x3c1e,
3056+ 0x1800e08,0x7e0,0x300000,0x0,0x7e00000,0xe700000,0x600030,0x3000000,0x3f980000,0x180,0x18200000,0xc000c00,0x1e0001c0,0x3e003e0,
3057+ 0x3e003e0,0x3e003e0,0xfe01e18,0x70007000,0x70007000,0x1c001c0,0x1c001c0,0x70e07c38,0x1c701c70,0x1c701c70,0x1c700000,0x3c787038,
3058+ 0x70387038,0x70383c1e,0x70003870,0xc00300,0xc300ce0,0x380,0x0,0xc00300,0xc300000,0xc00300,0xc300000,0xfc00ce0,0xc00300,0xc300ce0,
3059+ 0x0,0xc0,0x3000c30,0x300,0x38000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x630031c,0xff8c300,
3060+ 0x1c000180,0x1800180,0x39380000,0x0,0x70,0x1c3801c0,0x203c001c,0x3e01c00,0x1c000038,0x381c3838,0x0,0x0,0x1038,0xe0e03e0,0x70703c08,
3061+ 0x70707000,0x70003808,0x703801c0,0x707070,0x70007c7c,0x7c383838,0x70383838,0x70387010,0x1c07038,0x381c700e,0x1e3c1c1c,0x780380,
3062+ 0x1c0001c0,0xe700000,0x0,0x38000000,0x1c0000,0x3800000,0x38000000,0x1c00,0x3800000,0x0,0x0,0x0,0x7000000,0x0,0x0,0x1c0,0x18001c0,
3063+ 0x0,0xe000000,0xe0,0x0,0x1000100,0x3800,0x70100000,0x38700000,0x780000,0x1c0,0x7801ce0,0xe380000,0x0,0x2264,0x0,0x0,0x1c1c,
3064+ 0x0,0x200780,0x1c1c,0x1800c00,0x1818,0x7f00000,0x0,0x18180000,0xc300000,0x600070,0x0,0x7f980000,0x180,0x18300000,0xc000c00,
3065+ 0x3000000,0x3e003e0,0x3e003e0,0x3e003e0,0xee03c08,0x70007000,0x70007000,0x1c001c0,0x1c001c0,0x70707c38,0x38383838,0x38383838,
3066+ 0x38380000,0x38387038,0x70387038,0x70381c1c,0x7fc03870,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xbc00000,0x0,0x0,0x0,0x0,0x0,0x0,
3067+ 0x38000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x6300318,0xe88c300,0x1c000180,0x38001c0,
3068+ 0xfe00180,0x0,0x70,0x1c3801c0,0x1c001c,0x6e01c00,0x1c000078,0x381c3818,0x0,0x40000,0x40000038,0x1c0607e0,0x70703800,0x70707000,
3069+ 0x70003800,0x703801c0,0x7070e0,0x70007c7c,0x7c383838,0x70383838,0x70387000,0x1c07038,0x381c700e,0xf780e38,0x700380,0x1c0001c0,
3070+ 0x1c380000,0x0,0x38000000,0x1c0000,0x3800000,0x38000000,0x1c00,0x3800000,0x0,0x0,0x0,0x7000000,0x0,0x0,0x1c0,0x18001c0,0x0,
3071+ 0xe000000,0xe0,0x0,0x1000100,0x4400,0x70000000,0x38700000,0x700000,0xe0,0x7001c70,0xe380000,0x0,0x2264,0x0,0x0,0xe38,0x0,
3072+ 0x200700,0xe38,0x1800c00,0x300c,0xc300000,0x0,0x300c0000,0xc300180,0x6003c0,0x0,0x7f980000,0x180,0x18300000,0xc000c00,0x1800000,
3073+ 0x7e007e0,0x7e007e0,0x7e003e0,0xee03800,0x70007000,0x70007000,0x1c001c0,0x1c001c0,0x70707c38,0x38383838,0x38383838,0x38380000,
3074+ 0x38387038,0x70387038,0x70380e38,0x7ff039f0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e00000,0x0,0x0,0x0,0x40000,0x0,0x0,0x38000000,
3075+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x6300318,0x1c80e700,0x1c000180,0x38001c0,0x3800180,
3076+ 0x0,0xe0,0x381c01c0,0x1c001c,0x6e01c00,0x38000070,0x381c381c,0x0,0x3c0000,0x78000078,0x38030770,0x70707800,0x70387000,0x70007000,
3077+ 0x703801c0,0x7071c0,0x7000745c,0x7638701c,0x7038701c,0x70387000,0x1c07038,0x1c38718e,0x7700f78,0xf00380,0xe0001c0,0x381c0000,
3078+ 0x7e0,0x39e003e0,0x79c03f0,0x3ffc079c,0x39e01fc0,0xfe01c1e,0x3807778,0x39e007e0,0x39e0079c,0x73c07e0,0x7ff83838,0x701ce007,
3079+ 0x783c701c,0x1ffc01c0,0x18001c0,0x0,0x1c000100,0xe0,0x0,0x1000100,0x4200,0x70000000,0x70700100,0xf00100,0x10000e0,0x7000c70,
3080+ 0xc700000,0x0,0x2204,0x7e00000,0x1e380100,0x1ffc0f78,0x0,0xf80700,0xf78,0x1800e00,0x63e6,0x18300000,0x0,0x6fe60000,0xe700180,
3081+ 0xc00060,0x3838,0x7f980000,0x180,0x18300000,0xc000c00,0x18001c0,0x7700770,0x7700770,0x77007f0,0xee07800,0x70007000,0x70007000,
3082+ 0x1c001c0,0x1c001c0,0x70387638,0x701c701c,0x701c701c,0x701c1008,0x707c7038,0x70387038,0x70380f78,0x707039c0,0x7e007e0,0x7e007e0,
3083+ 0x7e007e0,0x1f3c03e0,0x3f003f0,0x3f003f0,0x1fc01fc0,0x1fc01fc0,0x7f039e0,0x7e007e0,0x7e007e0,0x7e00380,0x7ce3838,0x38383838,
3084+ 0x3838701c,0x39e0701c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x6307fff,0x1c807e0c,0xe000180,
3085+ 0x30000c0,0x3800180,0x0,0xe0,0x381c01c0,0x1c001c,0xce01fe0,0x38000070,0x381c381c,0x3800380,0xfc0000,0x7e0000f0,0x30030770,
3086+ 0x70707000,0x70387000,0x70007000,0x703801c0,0x707380,0x700076dc,0x7638701c,0x7038701c,0x70387800,0x1c07038,0x1c3873ce,0x7f00770,
3087+ 0xe00380,0xe0001c0,0x700e0000,0x1ff8,0x3ff00ff0,0xffc0ff8,0x3ffc0ffc,0x3bf01fc0,0xfe01c3c,0x3807f78,0x3bf00ff0,0x3ff00ffc,
3088+ 0x77e0ff0,0x7ff83838,0x3838e007,0x3c783838,0x1ffc01c0,0x18001c0,0x0,0x7ff00380,0x1e0,0x0,0x1000100,0x4200,0x78000000,0x70700380,
3089+ 0xe00380,0x3800060,0xe000e30,0x1c600000,0x0,0x2204,0xff00000,0x7f7c0380,0x1ffc0770,0x1c0,0x3fc0700,0x18040770,0x1800780,0x4e12,
3090+ 0x18300104,0x0,0x4c320000,0x7e00180,0x1c00030,0x3838,0x7f980000,0x180,0x18302080,0xc000c00,0x18001c0,0x7700770,0x7700770,
3091+ 0x7700770,0x1ee07000,0x70007000,0x70007000,0x1c001c0,0x1c001c0,0x70387638,0x701c701c,0x701c701c,0x701c381c,0x705c7038,0x70387038,
3092+ 0x70380770,0x70383b80,0x1ff81ff8,0x1ff81ff8,0x1ff81ff8,0x3fbe0ff0,0xff80ff8,0xff80ff8,0x1fc01fc0,0x1fc01fc0,0xff83bf0,0xff00ff0,
3093+ 0xff00ff0,0xff00380,0xffc3838,0x38383838,0x38383838,0x3ff03838,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3094+ 0x0,0x1c0,0x7fff,0x1c803c38,0xf000000,0x70000e0,0xfe00180,0x0,0x1c0,0x381c01c0,0x3c0078,0xce01ff0,0x39e000f0,0x1c38381c,0x3800380,
3095+ 0x3e07ffc,0xf8001f0,0x307b0770,0x70e07000,0x70387000,0x70007000,0x703801c0,0x707700,0x700076dc,0x7638701c,0x7038701c,0x70387e00,
3096+ 0x1c07038,0x1c3873ce,0x3e007f0,0x1e00380,0x70001c0,0x0,0x1038,0x3c381e18,0x1c7c1e3c,0x3801e3c,0x3c7801c0,0xe01c78,0x380739c,
3097+ 0x3c781c38,0x3c381c3c,0x7c21e10,0x7003838,0x3838700e,0x1ef03838,0x3c01c0,0x18001c0,0x0,0x7fe007c0,0x1c0,0x0,0x1000100,0x6400,
3098+ 0x7e000000,0x707007c0,0x1e007c0,0x7c00070,0xe000638,0x18600000,0x0,0x0,0x1e100000,0x73ce07c0,0x3c07f0,0x1c0,0x7240700,0x1ddc3ffe,
3099+ 0x1800de0,0x8c01,0x1870030c,0x0,0x8c310000,0x3c00180,0x3800030,0x3838,0x7f980000,0x180,0x183030c0,0xc000c00,0x430001c0,0x7700770,
3100+ 0x7700770,0x7700770,0x1ce07000,0x70007000,0x70007000,0x1c001c0,0x1c001c0,0x70387638,0x701c701c,0x701c701c,0x701c1c38,0x70dc7038,
3101+ 0x70387038,0x703807f0,0x70383b80,0x10381038,0x10381038,0x10381038,0x21e71e18,0x1e3c1e3c,0x1e3c1e3c,0x1c001c0,0x1c001c0,0x1e383c78,
3102+ 0x1c381c38,0x1c381c38,0x1c380380,0x1c383838,0x38383838,0x38383838,0x3c383838,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3103+ 0x0,0x0,0x0,0x0,0x0,0x1c0,0x630,0x1e8000e0,0x1f000000,0x70000e0,0x39380180,0x0,0x1c0,0x3b9c01c0,0x3c07f0,0x18e01078,0x3bf800e0,
3104+ 0x7e0383c,0x3800380,0x1f807ffc,0x3f001c0,0x61ff0e38,0x7fc07000,0x70387ff0,0x7ff07000,0x7ff801c0,0x707f00,0x7000729c,0x7338701c,
3105+ 0x7070701c,0x70703fc0,0x1c07038,0x1e7873ce,0x1c003e0,0x3c00380,0x70001c0,0x0,0x1c,0x3c381c00,0x1c3c1c1c,0x3801c3c,0x383801c0,
3106+ 0xe01cf0,0x380739c,0x38381c38,0x3c381c3c,0x7801c00,0x7003838,0x3838700e,0xfe03c78,0x7801c0,0x18001c0,0x0,0x1c000c20,0xff8,
3107+ 0x0,0x1ff01ff0,0x3818,0x3fc00100,0x707e0c20,0x3c00c20,0xc200030,0xc000618,0x18c00000,0x0,0x0,0x1c000080,0xe1ce0c20,0x7803e0,
3108+ 0x1c0,0xe200700,0xff83ffe,0x1801878,0x9801,0x1cf0071c,0x7ffc0000,0x8c310000,0x7ffe,0x7000030,0x3838,0x3f980380,0x180,0xc6038e0,
3109+ 0x7f9c7f9c,0x3e1c01c0,0xe380e38,0xe380e38,0xe380f78,0x1cfc7000,0x7ff07ff0,0x7ff07ff0,0x1c001c0,0x1c001c0,0xfe387338,0x701c701c,
3110+ 0x701c701c,0x701c0e70,0x719c7038,0x70387038,0x703803e0,0x70383b80,0x1c001c,0x1c001c,0x1c001c,0xe71c00,0x1c1c1c1c,0x1c1c1c1c,
3111+ 0x1c001c0,0x1c001c0,0x1c383838,0x1c381c38,0x1c381c38,0x1c380000,0x3c383838,0x38383838,0x38383c78,0x3c383c78,0x0,0x0,0x0,0x0,
3112+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x630,0xf800380,0x3f830000,0x70000e0,0x31080180,0x0,0x380,0x3b9c01c0,
3113+ 0x7807e0,0x38e00038,0x3c3800e0,0xff01c3c,0x3800380,0x7c000000,0x7c03c0,0x61870e38,0x7fc07000,0x70387ff0,0x7ff070fc,0x7ff801c0,
3114+ 0x707f80,0x7000739c,0x7338701c,0x7ff0701c,0x7fe00ff0,0x1c07038,0xe7073ce,0x1c003e0,0x3800380,0x38001c0,0x0,0x1c,0x381c3800,
3115+ 0x381c380e,0x380381c,0x383801c0,0xe01de0,0x380739c,0x3838381c,0x381c381c,0x7001e00,0x7003838,0x1c70718e,0x7e01c70,0xf00380,
3116+ 0x18001e0,0x1e000000,0x1c001bb0,0xff8,0x0,0x1000100,0xe0,0xff00300,0x707e1bb0,0x3801bb0,0x1bb00010,0x8000308,0x30c00000,0x0,
3117+ 0x0,0x1e0000c0,0xe1ce1bb0,0xf003e0,0x1c0,0x1c203ff8,0x63003e0,0x180181c,0x9801,0xfb00e38,0x7ffc0000,0x8fc10000,0x7ffe,0xe000860,
3118+ 0x3838,0x1f980380,0x180,0x7c01c70,0x1f001f0,0x1f003c0,0xe380e38,0xe380e38,0xe380e38,0x1cfc7000,0x7ff07ff0,0x7ff07ff0,0x1c001c0,
3119+ 0x1c001c0,0xfe387338,0x701c701c,0x701c701c,0x701c07e0,0x731c7038,0x70387038,0x703803e0,0x70383980,0x1c001c,0x1c001c,0x1c001c,
3120+ 0xe73800,0x380e380e,0x380e380e,0x1c001c0,0x1c001c0,0x381c3838,0x381c381c,0x381c381c,0x381c0000,0x387c3838,0x38383838,0x38381c70,
3121+ 0x381c1c70,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0xc30,0x7f00e00,0x33c30000,0x70000e0,0x1007ffe,
3122+ 0x0,0x380,0x3b9c01c0,0xf00078,0x30e0001c,0x3c1c01c0,0x1c381fdc,0x0,0x70000000,0x1c0380,0x63030e38,0x70707000,0x70387000,0x700070fc,
3123+ 0x703801c0,0x707b80,0x7000739c,0x7338701c,0x7fc0701c,0x7fc001f0,0x1c07038,0xe703e5c,0x3e001c0,0x7800380,0x38001c0,0x0,0x7fc,
3124+ 0x381c3800,0x381c380e,0x380381c,0x383801c0,0xe01fe0,0x380739c,0x3838381c,0x381c381c,0x7001fc0,0x7003838,0x1c70718e,0x7c01c70,
3125+ 0xe01f00,0x180007c,0x7f8c0000,0x7fc03fb8,0x1c0,0x0,0x1000100,0x700,0x1f00600,0x70703fb8,0x7803fb8,0x3fb80000,0x8000000,0x180,
3126+ 0x0,0x0,0x1fc00060,0xe1ce3fb8,0xe001c0,0x1c0,0x1c203ff8,0xc1801c0,0x180c,0x9801,0x1c70,0xc0000,0x8cc10000,0x180,0xfe007c0,
3127+ 0x3838,0x7980380,0xff0,0xe38,0x3e003e00,0x3e000380,0xe380e38,0xe380e38,0xe380e38,0x38e07000,0x70007000,0x70007000,0x1c001c0,
3128+ 0x1c001c0,0x70387338,0x701c701c,0x701c701c,0x701c03c0,0x731c7038,0x70387038,0x703801c0,0x703838e0,0x7fc07fc,0x7fc07fc,0x7fc07fc,
3129+ 0xe73800,0x380e380e,0x380e380e,0x1c001c0,0x1c001c0,0x381c3838,0x381c381c,0x381c381c,0x381c7ffc,0x38dc3838,0x38383838,0x38381c70,
3130+ 0x381c1c70,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0xc60,0xf83878,0x71e30000,0x70000e0,0x1007ffe,
3131+ 0x7f0,0x380,0x381c01c0,0x1e0003c,0x60e0001c,0x381c01c0,0x381c079c,0x0,0x7c000000,0x7c0380,0x63031c1c,0x70307000,0x70387000,
3132+ 0x7000701c,0x703801c0,0x7071c0,0x7000739c,0x71b8701c,0x7000701c,0x71e00078,0x1c07038,0xe703e7c,0x7e001c0,0xf000380,0x38001c0,
3133+ 0x0,0x1ffc,0x381c3800,0x381c3ffe,0x380381c,0x383801c0,0xe01fc0,0x380739c,0x3838381c,0x381c381c,0x7000ff0,0x7003838,0x1ef03bdc,
3134+ 0x3800ee0,0x1e01f00,0x180007c,0x61fc0000,0x7fc07f3c,0x1c0,0x0,0x1000100,0x1800,0x780c00,0x70707f3c,0xf007f3c,0x7f3c0000,0x0,
3135+ 0x3c0,0x3ffcffff,0x0,0xff00030,0xe1fe7f3c,0x1e001c0,0x1c0,0x1c200700,0xc183ffe,0xe0c,0x9801,0x1ff038e0,0xc07f0,0x8c610000,
3136+ 0x180,0x0,0x3838,0x1980380,0x0,0x1ff0071c,0xe000e000,0xe0000f80,0x1c1c1c1c,0x1c1c1c1c,0x1c1c1e38,0x38e07000,0x70007000,0x70007000,
3137+ 0x1c001c0,0x1c001c0,0x703871b8,0x701c701c,0x701c701c,0x701c03c0,0x761c7038,0x70387038,0x703801c0,0x70703870,0x1ffc1ffc,0x1ffc1ffc,
3138+ 0x1ffc1ffc,0xfff3800,0x3ffe3ffe,0x3ffe3ffe,0x1c001c0,0x1c001c0,0x381c3838,0x381c381c,0x381c381c,0x381c7ffc,0x389c3838,0x38383838,
3139+ 0x38380ee0,0x381c0ee0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0xfffc,0xbc60fc,0x70e30000,0x70000e0,
3140+ 0x180,0x7f0,0x700,0x381c01c0,0x3e0001c,0x7ffc001c,0x381c03c0,0x381c001c,0x0,0x1f807ffc,0x3f00380,0x63031ffc,0x70387000,0x70387000,
3141+ 0x7000701c,0x703801c0,0x7071e0,0x7000701c,0x71b8701c,0x7000701c,0x70f00038,0x1c07038,0x7e03e7c,0x77001c0,0xe000380,0x1c001c0,
3142+ 0x0,0x3c1c,0x381c3800,0x381c3ffe,0x380381c,0x383801c0,0xe01fe0,0x380739c,0x3838381c,0x381c381c,0x70003f8,0x7003838,0xee03bdc,
3143+ 0x3c00ee0,0x3c00380,0x18000e0,0xf00000,0x1c007e7c,0x3c0,0x0,0x1000100,0x0,0x381800,0x70707e7c,0xe007e7c,0x7e7c0000,0x0,0x7c0,
3144+ 0x0,0x0,0x3f80018,0xe1fe7e7c,0x3c001c0,0x1c0,0x1c200700,0xc183ffe,0xf0c,0x8c01,0x38e0,0xc07f0,0x8c710000,0x180,0x0,0x3838,
3145+ 0x1980000,0x0,0x71c,0x7000f0,0x700f00,0x1ffc1ffc,0x1ffc1ffc,0x1ffc1ffc,0x3fe07000,0x70007000,0x70007000,0x1c001c0,0x1c001c0,
3146+ 0x703871b8,0x701c701c,0x701c701c,0x701c07e0,0x7c1c7038,0x70387038,0x703801c0,0x7ff03838,0x3c1c3c1c,0x3c1c3c1c,0x3c1c3c1c,
3147+ 0x3fff3800,0x3ffe3ffe,0x3ffe3ffe,0x1c001c0,0x1c001c0,0x381c3838,0x381c381c,0x381c381c,0x381c0000,0x391c3838,0x38383838,0x38380ee0,
3148+ 0x381c0ee0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfffc,0x9c01ce,0x70f60000,0x70000e0,0x180,
3149+ 0x0,0x700,0x381c01c0,0x780001c,0x7ffc001c,0x381c0380,0x381c003c,0x0,0x3e07ffc,0xf800380,0x63031ffc,0x70387000,0x70387000,
3150+ 0x7000701c,0x703801c0,0x7070f0,0x7000701c,0x71b8701c,0x7000701c,0x70700038,0x1c07038,0x7e03e7c,0xf7801c0,0x1e000380,0x1c001c0,
3151+ 0x0,0x381c,0x381c3800,0x381c3800,0x380381c,0x383801c0,0xe01fe0,0x380739c,0x3838381c,0x381c381c,0x7000078,0x7003838,0xee03a5c,
3152+ 0x7c00fe0,0x78001c0,0x18001c0,0x0,0x1c003ef8,0x380,0x0,0x1000100,0x810,0x383000,0x70703ef8,0x1e003ef8,0x3ef80000,0x0,0x7c0,
3153+ 0x0,0x0,0x78000c,0xe1c03ef8,0x78001c0,0x1c0,0x1c200700,0x63001c0,0x18003f8,0x4e12,0x1c70,0xc0000,0x4c320000,0x180,0x0,0x3838,
3154+ 0x1980000,0x0,0xe38,0x700118,0x701e00,0x1ffc1ffc,0x1ffc1ffc,0x1ffc1ffc,0x7fe07000,0x70007000,0x70007000,0x1c001c0,0x1c001c0,
3155+ 0x703871b8,0x701c701c,0x701c701c,0x701c0e70,0x7c1c7038,0x70387038,0x703801c0,0x7fc0381c,0x381c381c,0x381c381c,0x381c381c,
3156+ 0x78e03800,0x38003800,0x38003800,0x1c001c0,0x1c001c0,0x381c3838,0x381c381c,0x381c381c,0x381c0000,0x3b1c3838,0x38383838,0x38380fe0,
3157+ 0x381c0fe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1860,0x9c0186,0x707e0000,0x30000c0,0x180,
3158+ 0x0,0xe00,0x183801c0,0xf00001c,0xe0001c,0x181c0380,0x381c0038,0x0,0xfc0000,0x7e000000,0x61873c1e,0x70383800,0x70707000,0x7000381c,
3159+ 0x703801c0,0x707070,0x7000701c,0x70f83838,0x70003838,0x70780038,0x1c07038,0x7e03c3c,0xe3801c0,0x1c000380,0xe001c0,0x0,0x381c,
3160+ 0x381c3800,0x381c3800,0x380381c,0x383801c0,0xe01ef0,0x380739c,0x3838381c,0x381c381c,0x7000038,0x7003838,0xfe03e7c,0xfe007c0,
3161+ 0x70001c0,0x18001c0,0x0,0xe001ff0,0x380,0x0,0x1000100,0x162c,0x381800,0x30701ff0,0x1c001ff0,0x1ff00000,0x0,0x3c0,0x0,0x0,
3162+ 0x380018,0xe1c01ff0,0x70001c0,0x1c0,0x1c200700,0xff801c0,0x18000f0,0x63e6,0xe38,0x0,0x6c3e0000,0x0,0x0,0x3838,0x1980000,0x0,
3163+ 0x1c70,0xf0000c,0xf01c00,0x3c1e3c1e,0x3c1e3c1e,0x3c1e3c1c,0x70e03800,0x70007000,0x70007000,0x1c001c0,0x1c001c0,0x707070f8,
3164+ 0x38383838,0x38383838,0x38381c38,0x38387038,0x70387038,0x703801c0,0x7000381c,0x381c381c,0x381c381c,0x381c381c,0x70e03800,
3165+ 0x38003800,0x38003800,0x1c001c0,0x1c001c0,0x381c3838,0x381c381c,0x381c381c,0x381c0380,0x3e1c3838,0x38383838,0x383807c0,0x381c07c0,
3166+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18c0,0x9c0186,0x783c0000,0x38001c0,0x180,0x3800000,
3167+ 0x3800e00,0x1c3801c0,0x1e00003c,0xe00038,0x1c1c0780,0x381c0038,0x3800380,0x3c0000,0x78000000,0x61ff380e,0x70383808,0x70707000,
3168+ 0x7000381c,0x703801c0,0x40707078,0x7000701c,0x70f83838,0x70003838,0x70384038,0x1c07038,0x7e03c3c,0x1e3c01c0,0x3c000380,0xe001c0,
3169+ 0x0,0x383c,0x3c381c00,0x1c3c1c00,0x3801c3c,0x383801c0,0xe01c78,0x380739c,0x38381c38,0x3c381c3c,0x7000038,0x7003878,0x7c01e78,
3170+ 0x1ef007c0,0xf0001c0,0x18001c0,0x0,0xe000ee0,0x7800380,0xe380000,0x1001ff0,0x2242,0x40380c00,0x38700ee0,0x3c000ee0,0xee00000,
3171+ 0x0,0x0,0x0,0x0,0x380030,0xe1c00ee0,0xf0001c0,0x1c0,0xe200700,0xdd801c0,0x1800038,0x300c,0x71c,0x0,0x300c0000,0x0,0x0,0x3838,
3172+ 0x1980000,0x0,0x38e0,0xb0000c,0xb01c08,0x380e380e,0x380e380e,0x380e380e,0x70e03808,0x70007000,0x70007000,0x1c001c0,0x1c001c0,
3173+ 0x707070f8,0x38383838,0x38383838,0x3838381c,0x38387038,0x70387038,0x703801c0,0x7000381c,0x383c383c,0x383c383c,0x383c383c,
3174+ 0x70e01c00,0x1c001c00,0x1c001c00,0x1c001c0,0x1c001c0,0x1c383838,0x1c381c38,0x1c381c38,0x1c380380,0x1c383878,0x38783878,0x387807c0,
3175+ 0x3c3807c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x18c0,0x10b801ce,0x3c3e0000,0x38001c0,0x180,
3176+ 0x3800000,0x3801c00,0x1e7801c0,0x3c002078,0xe02078,0x1c380700,0x1c3810f0,0x3800380,0x40000,0x40000380,0x307b380e,0x70701e18,
3177+ 0x70e07000,0x70001c1c,0x703801c0,0x60e0703c,0x7000701c,0x70f83c78,0x70003c70,0x703c70f0,0x1c03870,0x3c01c3c,0x3c1c01c0,0x78000380,
3178+ 0x7001c0,0x0,0x3c7c,0x3c381e18,0x1c7c1e0c,0x3801c3c,0x383801c0,0xe01c38,0x3c0739c,0x38381c38,0x3c381c3c,0x7001078,0x7803c78,
3179+ 0x7c01c38,0x1c780380,0x1e0001c0,0x18001c0,0x0,0x70c06c0,0x7000380,0xe300000,0x1000100,0x2142,0x70f00600,0x3c7006c0,0x780006c0,
3180+ 0x6c00000,0x0,0x0,0x0,0x0,0x10780060,0x73e206c0,0x1e0001c0,0x1c0,0x7240700,0x180c01c0,0x1800018,0x1818,0x30c,0x0,0x18180000,
3181+ 0x0,0x0,0x3c78,0x1980000,0x0,0x30c0,0x130000c,0x1301c18,0x380e380e,0x380e380e,0x380e380e,0x70e01e18,0x70007000,0x70007000,
3182+ 0x1c001c0,0x1c001c0,0x70e070f8,0x3c783c78,0x3c783c78,0x3c781008,0x7c783870,0x38703870,0x387001c0,0x70003a3c,0x3c7c3c7c,0x3c7c3c7c,
3183+ 0x3c7c3c7c,0x79f11e18,0x1e0c1e0c,0x1e0c1e0c,0x1c001c0,0x1c001c0,0x1c783838,0x1c381c38,0x1c381c38,0x1c380380,0x1c383c78,0x3c783c78,
3184+ 0x3c780380,0x3c380380,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x38c0,0x1ff800fc,0x1fee0000,
3185+ 0x1800180,0x180,0x3800000,0x3801c00,0xff01ffc,0x3ffc3ff0,0xe03ff0,0xff00700,0x1ff81fe0,0x3800380,0x0,0x380,0x3000780f,0x7ff00ff8,
3186+ 0x7fc07ff8,0x70000ffc,0x70381ffc,0x7fe0701c,0x7ff8701c,0x70781ff0,0x70001ff0,0x701c7ff0,0x1c01fe0,0x3c01c38,0x380e01c0,0x7ffc0380,
3187+ 0x7001c0,0x0,0x1fdc,0x3ff00ff0,0xffc0ffc,0x3800fdc,0x38383ffe,0xe01c3c,0x1fc739c,0x38380ff0,0x3ff00ffc,0x7001ff0,0x3f81fb8,
3188+ 0x7c01c38,0x3c3c0380,0x1ffc01c0,0x18001c0,0x0,0x3fc0380,0x7000380,0xc70718c,0x1000100,0x2244,0x7ff00200,0x1fff0380,0x7ffc0380,
3189+ 0x3800000,0x0,0x0,0x0,0x0,0x1ff000c0,0x7f7e0380,0x1ffc01c0,0x1c0,0x3fc3ffe,0x1c0,0x1800018,0x7e0,0x104,0x0,0x7e00000,0x7ffe,
3190+ 0x0,0x3fde,0x1980000,0x0,0x2080,0x3300018,0x3300ff0,0x780f780f,0x780f780f,0x780f780e,0xf0fe0ff8,0x7ff87ff8,0x7ff87ff8,0x1ffc1ffc,
3191+ 0x1ffc1ffc,0x7fc07078,0x1ff01ff0,0x1ff01ff0,0x1ff00000,0x7ff01fe0,0x1fe01fe0,0x1fe001c0,0x70003bf8,0x1fdc1fdc,0x1fdc1fdc,
3192+ 0x1fdc1fdc,0x3fbf0ff0,0xffc0ffc,0xffc0ffc,0x3ffe3ffe,0x3ffe3ffe,0xff03838,0xff00ff0,0xff00ff0,0xff00000,0x3ff01fb8,0x1fb81fb8,
3193+ 0x1fb80380,0x3ff00380,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x31c0,0x7e00078,0x7cf0000,0x1800180,
3194+ 0x0,0x3800000,0x3803800,0x3c01ffc,0x3ffc0fe0,0xe01fc0,0x3e00e00,0x7e00f80,0x3800380,0x0,0x380,0x18007007,0x7fc003f0,0x7f007ff8,
3195+ 0x700003f0,0x70381ffc,0x3f80701e,0x7ff8701c,0x707807c0,0x700007c0,0x701e1fc0,0x1c00fc0,0x3c01818,0x780f01c0,0x7ffc0380,0x3801c0,
3196+ 0x0,0xf9c,0x39e003e0,0x79c03f0,0x380079c,0x38383ffe,0xe01c1e,0x7c739c,0x383807e0,0x39e0079c,0x7000fc0,0x1f80f38,0x3801c38,
3197+ 0x781e0380,0x1ffc01c0,0x18001c0,0x0,0x1f80100,0xe000700,0x1c60718c,0x1000100,0x1e3c,0x1fc00100,0x7ff0100,0x7ffc0100,0x1000000,
3198+ 0x0,0x0,0x0,0x0,0xfc00080,0x3e3c0100,0x1ffc01c0,0x1c0,0xf83ffe,0x1c0,0x1800838,0x0,0x0,0x0,0x0,0x7ffe,0x0,0x3b9e,0x1980000,
3199+ 0x0,0x0,0x2300038,0x23003e0,0x70077007,0x70077007,0x70077007,0xe0fe03f0,0x7ff87ff8,0x7ff87ff8,0x1ffc1ffc,0x1ffc1ffc,0x7f007078,
3200+ 0x7c007c0,0x7c007c0,0x7c00000,0xc7c00fc0,0xfc00fc0,0xfc001c0,0x700039f0,0xf9c0f9c,0xf9c0f9c,0xf9c0f9c,0x1f1e03e0,0x3f003f0,
3201+ 0x3f003f0,0x3ffe3ffe,0x3ffe3ffe,0x7e03838,0x7e007e0,0x7e007e0,0x7e00000,0x63e00f38,0xf380f38,0xf380380,0x39e00380,0x0,0x0,
3202+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x0,0xc00300,0x0,0x3000000,0x3800,0x0,0x0,0x0,0x0,
3203+ 0x0,0x300,0x0,0x0,0x1c000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x380,0x3801c0,0x0,0x0,0x0,0x0,0x1c,0x0,0xe00000,
3204+ 0x0,0x0,0x3800001c,0x0,0x0,0x0,0x700,0x1c0,0x18001c0,0x0,0x0,0xe000700,0x18600000,0x1000100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3205+ 0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x1800ff0,0x0,0x0,0x0,0x0,0x0,0x0,0x3800,0x1980000,0x1800000,0x0,0x6300070,0x6300000,0x0,
3206+ 0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,
3207+ 0x0,0x700,0x38000700,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x0,0xc00300,0x0,0x7000000,
3208+ 0x7000,0x0,0x0,0x0,0x0,0x0,0x700,0x0,0x0,0xf040000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x78,0x0,0x0,0x0,0x0,0x3f0,0x1c0fc0,0x0,0x0,
3209+ 0x0,0x0,0x1c,0x0,0xe00000,0x0,0x0,0x3800001c,0x0,0x0,0x0,0x700,0x1e0,0x18003c0,0x0,0x0,0xc000700,0x18c00000,0x1000000,0x0,
3210+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x18007e0,0x0,0x0,0x0,0x0,0x0,0x0,0x3800,0x1980000,0xc00000,
3211+ 0x0,0x7f800e0,0x7f80000,0x0,0x0,0x0,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x0,0x0,0x0,0x0,
3212+ 0x0,0x0,0x0,0x0,0x0,0x0,0x700,0x38000700,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,
3213+ 0x0,0x600600,0x0,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0,0x600,0x0,0x0,0x7fc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x0,
3214+ 0x3f0,0xfc0,0x0,0x0,0x0,0x0,0x838,0x0,0x1e00000,0x0,0x0,0x3800001c,0x0,0x0,0x0,0xf00,0xfc,0x1801f80,0x0,0x0,0x8008e00,0x30c00000,
3215+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x1800000,0x0,0x0,0x0,0x0,0x0,0x0,0x3800,0x1980000,0xc00000,
3216+ 0x0,0x3001c0,0x300000,0x0,0x0,0x0,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x0,0x0,0x0,0x0,0x0,
3217+ 0x0,0x0,0x0,0x0,0x0,0xf00,0x38000f00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800000,0x0,
3218+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3219+ 0x0,0x0,0xff0,0x0,0x1fc00000,0x0,0x0,0x3800001c,0x0,0x0,0x0,0x3e00,0x7c,0x1801f00,0x0,0x0,0x800fe00,0x0,0x0,0x0,0x0,0x0,0x0,
3220+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x1800000,0x0,0x0,0x0,0x0,0x0,0x0,0x3800,0x0,0x7c00000,0x0,0x3001fc,0x300000,
3221+ 0x0,0x0,0x0,0x3e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3222+ 0x3e00,0x38003e00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3223+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfff8,0x0,0x0,0x0,0x7e0,0x0,0x1f000000,
3224+ 0x0,0x0,0x3800001c,0x0,0x0,0x0,0x3c00,0x0,0x1800000,0x0,0x0,0x7800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3225+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3800,0x0,0x7800000,0x0,0x0,0x0,0x0,0x0,0x0,0x3c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3226+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00,0x38003c00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3227+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3228+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfff8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1800000,0x0,0x0,0x0,0x0,
3229+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3230+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3231+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3232+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3233+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3234+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3235+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3236+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3237+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3238+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3239+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0 };
3240+
3241+ // Definition of a 29x57 font (extra large size).
3242+ const unsigned int font29x57[29*57*256/32] = {
3243+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3244+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3245+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3246+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3247+ 0x0,0x781e00,0x0,0x0,0x7,0x81e00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3248+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7c0000,0xf8000,0x7e00000,0x0,0x7,
3249+ 0xc0000000,0x0,0x7c00,0xf80,0x7e000,0x0,0x7c00000,0xf80000,0x7e000000,0x0,0x0,0x1f00,0x3e0,0x1f800,0x0,0x0,0x0,0x3,0xe0000000,
3250+ 0x7c00003f,0x0,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3251+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3252+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3253+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3254+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3255+ 0x0,0x0,0x0,0x0,0x0,0x0,0x3c3c00,0x0,0x0,0x3,0xc3c00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3e1f00,
3256+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3e0000,
3257+ 0x1f0000,0x7e00000,0xf838001f,0xf80001f,0xf0000000,0x0,0x3e00,0x1f00,0x7e000,0x3e1f000,0x3e00000,0x1f00000,0x7e00003e,0x1f000000,
3258+ 0x3e0,0xe0000f80,0x7c0,0x1f800,0x3e0e00,0x7c3e000,0x0,0x1,0xf0000000,0xf800003f,0x1f0f,0x800001f0,0x0,0x0,0x0,0x0,0x0,0x0,
3259+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3260+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3261+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3262+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3263+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e7800,0x0,0x0,
3264+ 0x1,0xe7800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3e1f00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3265+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e0000,0x1e0000,0xff00001,0xfe38001f,0xf80003f,
3266+ 0xf8000000,0x0,0x1e00,0x1e00,0xff000,0x3e1f000,0x1e00000,0x1e00000,0xff00003e,0x1f000000,0x7f8,0xe0000780,0x780,0x3fc00,0x7f8e00,
3267+ 0x7c3e000,0x0,0x0,0xf0000000,0xf000007f,0x80001f0f,0x800001e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3268+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3269+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3270+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3271+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3272+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xef000,0x0,0x0,0x0,0xef000000,0x0,0x0,0x0,0x0,0x0,0x0,
3273+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3e1f00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3274+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0000,0x3c0000,0x1e780003,0xfff8001f,0xf80003c,0x78000000,0x0,0xf00,0x3c00,0x1e7800,
3275+ 0x3e1f000,0xf00000,0x3c00001,0xe780003e,0x1f000000,0xfff,0xe00003c0,0xf00,0x79e00,0xfffe00,0x7c3e000,0x0,0x0,0x78000001,0xe00000f3,
3276+ 0xc0001f0f,0x800003c0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0xc0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3277+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3278+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3279+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3280+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3281+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7e000,0x0,0x0,0x0,0x7e000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3282+ 0x3e1f00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3283+ 0x0,0x78000,0x780000,0x3c3c0003,0x8ff0001f,0xf800078,0x3c000000,0x0,0x780,0x7800,0x3c3c00,0x3e1f000,0x780000,0x7800003,0xc3c0003e,
3284+ 0x1f000000,0xe3f,0xc00001e0,0x1e00,0xf0f00,0xe3fc00,0x7c3e000,0x0,0x0,0x3c000003,0xc00001e1,0xe0001f0f,0x80000780,0x0,0x0,
3285+ 0x0,0x0,0x0,0x0,0x1f,0xf0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3286+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3287+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3288+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3289+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3290+ 0x0,0x7e000,0x0,0x0,0x0,0x7e000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3e1f00,0x0,0x0,0x0,0x0,0x0,0x0,
3291+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc00,0x7e000,0xfe000,0x0,0x3c000,0xf00000,0x781e0003,
3292+ 0x83e0001f,0xf800070,0x1c000000,0x0,0x3c0,0xf000,0x781e00,0x3e1f000,0x3c0000,0xf000007,0x81e0003e,0x1f000000,0xe0f,0x800000f0,
3293+ 0x3c00,0x1e0780,0xe0f800,0x7c3e000,0x0,0x0,0x1e000007,0x800003c0,0xf0001f0f,0x80000f00,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,0xf8000000,
3294+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3295+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3296+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3297+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3298+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3299+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3300+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3fc00,0x1fe000,0x3ff800,0x0,0x0,0x0,0x0,0x0,0x70,0x1c000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3301+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x78000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3302+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3303+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3304+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3305+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3306+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3307+ 0x0,0x0,0x78,0xf000000,0x0,0x0,0x780f0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7c0,
3308+ 0x0,0x0,0x0,0x0,0x0,0x0,0x3fc00,0x1fe000,0x3ffc00,0x0,0x0,0x0,0x0,0x0,0x70,0x1c000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3309+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f00000,0x3e000,0x3e00000,0x0,0x78,0x3c000000,0x0,0x1f000,0x3e0,
3310+ 0x3e000,0x0,0x1f000000,0x3e0000,0x3e000000,0x0,0x0,0x7c00,0xf8,0xf800,0x0,0x0,0x0,0xf,0x80000000,0x1f00001f,0x0,0x3e,0x0,
3311+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3312+ 0x0,0x0,0x0,0x30000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3313+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf80000,
3314+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3315+ 0x0,0x0,0x0,0x0,0xf80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x781c0000,0x38,0xe000000,0x0,0x0,0x380e0,0x0,
3316+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf80,0x0,0x0,0x0,0x0,0x0,0x0,0x39c00,0x1ce000,0x303e00,
3317+ 0x0,0x0,0x0,0x0,0x0,0x78,0x3c000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x0,0x0,0x0,0x0,
3318+ 0x0,0x0,0xf80000,0x7c000,0x3e00000,0xf0380000,0x70,0x1c000000,0x0,0xf800,0x7c0,0x3e000,0x0,0xf800000,0x7c0000,0x3e000000,
3319+ 0x0,0x3c0,0xe0003e00,0x1f0,0xf800,0x3c0e00,0x0,0x0,0x7,0xc0000000,0x3e00001f,0x0,0x7c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3320+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0xff,0x0,
3321+ 0xf8,0xf8000,0x1c000,0x0,0x0,0x0,0x0,0x1f,0xc0000000,0x1ff8,0xff00,0x0,0x0,0x3fe000,0x0,0x1fc00001,0xfe000000,0x0,0x0,0x0,
3322+ 0x0,0x7f800,0x0,0x0,0x0,0xff00000,0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xf8000000,0xfe,0x0,0x7f80,0x0,0x0,0x0,0x0,0x0,
3323+ 0x0,0x3f,0xf0000000,0x7fe0,0x0,0x0,0x780000,0x1,0xe0000000,0x0,0x780000,0x3,0xfe000000,0x78000,0x3c00,0xf000,0x7800003,0xffe00000,
3324+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfc0000f0,0x3f000,0x0,0x0,0x3fc00,0x0,0x0,0x1fc000,0x0,0x0,0x0,0x1fc0,
3325+ 0x0,0xff000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe1c0000,0x1c,0x1c000000,0x0,0x0,0x1c1c0,0x0,0x0,0x0,0x0,0x1fe0000,
3326+ 0x0,0x0,0x1ff,0x1f0f8,0x0,0xff000,0x0,0x0,0x0,0x3f,0xff00000f,0x80000000,0xfe0,0x3f80,0xf00,0x0,0x0,0x0,0x1,0xf8000003,0xe0000000,
3327+ 0x1c00,0xe000,0xe00,0x0,0x0,0x0,0x0,0x0,0x3c,0x78000000,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7f0,0x3f80,0x1fc00,0xfe000,
3328+ 0x7f0000,0x0,0x1fc07000,0x0,0x0,0x0,0x0,0x0,0x3f800,0x780000,0x78000,0x7f00001,0xfc38001f,0xf800070,0x1c000000,0x0,0x7800,
3329+ 0x780,0x7f000,0x3e1f000,0x7800000,0x780000,0x7f00003e,0x1f0003f0,0x7f0,0xe0001e00,0x1e0,0x1fc00,0x7f0e00,0x7c3e000,0x0,0x3,
3330+ 0xc0000000,0x3c00003f,0x80001f0f,0x80000078,0x1e0000,0x3e1f00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3331+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x3c1e0000,0x1e078000,0x30000000,0x3ff,0xc00001e0,0xf0,
3332+ 0x78000,0x1c000,0x0,0x0,0x0,0x0,0x1e0007f,0xf000007e,0x1ffff,0x7ffe0,0x1f80,0x3ffff80,0xfff803,0xfffff800,0xfff80007,0xff800000,
3333+ 0x0,0x0,0x0,0x0,0x1ffe00,0x0,0xfe0003,0xfff80000,0x3ffe01ff,0xe00003ff,0xffe01fff,0xff0003ff,0xe01e0007,0x803ffff0,0xfff80,
3334+ 0x3c000fc0,0x7800001f,0x8003f07e,0x1e000f,0xfe0007ff,0xf00003ff,0x8007ffe0,0x1fff8,0x7fffffe,0xf0003c1,0xe000079e,0xf1f,0x1f3e0,
3335+ 0x1f01ff,0xfff8003f,0xf003c000,0x7fe0,0x3f00,0x0,0x3c0000,0x1,0xe0000000,0x0,0x780000,0xf,0xfe000000,0x78000,0x3c00,0xf000,
3336+ 0x7800003,0xffe00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0xfc0000f0,0x3fe00,0x0,0x0,0xfff00,0x0,0x0,0x3fe000,
3337+ 0x0,0x0,0x0,0x1dc0,0x0,0x3fff00,0x0,0x3ffff80,0x1f,0xffff8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff1c07ff,0x3c0f001e,0x3c000000,
3338+ 0x0,0x0,0x1e3c0,0xf80007c,0x0,0x780000,0x0,0xfff8000,0x3e00,0x1f00000,0x7ff,0xc001f0f8,0x0,0x3ffc00,0x0,0x0,0x0,0x3f,0xff00003f,
3339+ 0xe0000000,0x3ff8,0xffe0,0x1e00,0x0,0xfffc00,0x0,0x7,0xf800000f,0xf8000000,0x1c00,0xe000,0xe00,0xf000,0x1fc000,0xfe0000,0x7f00000,
3340+ 0x3f800001,0xfc00003f,0xf80000ff,0xffc003ff,0xe007ffff,0xc03ffffe,0x1fffff0,0xfffff80,0x7fffe003,0xffff001f,0xfff800ff,0xffc01ffc,
3341+ 0xfc00,0x3c001ffc,0xffe0,0x7ff00,0x3ff800,0x1ffc000,0x0,0x7ff8f0f0,0x3c0780,0x1e03c00,0xf01e000,0x783e0001,0xf01e0000,0xffe00,
3342+ 0x3c0000,0xf0000,0x7700001,0xfe38001f,0xf800070,0x1c000000,0x0,0x3c00,0xf00,0x77000,0x3e1f000,0x3c00000,0xf00000,0x7700003e,
3343+ 0x1f0000f8,0xc0007f8,0xe0000f00,0x3c0,0x1dc00,0x7f8e00,0x7c3e000,0x0,0x1,0xe0000000,0x7800003b,0x80001f0f,0x800000f0,0x1e0000,
3344+ 0x3e1f00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3345+ 0x0,0x0,0x780000,0x3c1e0000,0x1e070000,0x300001f0,0x7ff,0xc00001e0,0x1e0,0x7c000,0x1c000,0x0,0x0,0x0,0x0,0x3c000ff,0xf80007fe,
3346+ 0x3ffff,0x801ffff8,0x1f80,0x3ffff80,0x3fff803,0xfffff801,0xfffc000f,0xffc00000,0x0,0x0,0x0,0x0,0x7fff80,0x0,0xfe0003,0xffff0000,
3347+ 0xffff01ff,0xfc0003ff,0xffe01fff,0xff000fff,0xf01e0007,0x803ffff0,0xfff80,0x3c001f80,0x7800001f,0xc007f07e,0x1e001f,0xff0007ff,
3348+ 0xfc0007ff,0xc007fffc,0x3fffc,0x7fffffe,0xf0003c1,0xf0000f9e,0xf0f,0x8003e1e0,0x1e01ff,0xfff8003f,0xf001e000,0x7fe0,0x3f00,
3349+ 0x0,0x1e0000,0x1,0xe0000000,0x0,0x780000,0x1f,0xfe000000,0x78000,0x3c00,0xf000,0x7800003,0xffe00000,0x0,0x0,0x0,0x0,0x0,0x0,
3350+ 0x0,0x0,0x0,0x0,0x0,0x0,0xf,0xfc0000f0,0x3ff00,0x0,0x0,0x1fff80,0x0,0x0,0xffe000,0x0,0x0,0x0,0x3de0,0x0,0x7fff80,0x0,0xfffff80,
3351+ 0x1f,0xffff8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0xe7bc07ff,0x3e1f000f,0x78000000,0x0,0x0,0xf780,0x7800078,0x0,0x780000,0x180000,
3352+ 0x1fff8000,0x1e00,0x1e0003c,0xfff,0xc001f0f8,0x0,0x7ffe00,0x0,0x0,0x0,0x3f,0xff00007f,0xf0000000,0x3ffc,0xfff0,0x3c00,0x0,
3353+ 0x7fffc00,0x0,0x7,0xf800003f,0xfe000000,0x1c00,0xe000,0xe00,0xf000,0x1fc000,0xfe0000,0x7f00000,0x3f800001,0xfc00001f,0xe00001ff,
3354+ 0xffc00fff,0xf007ffff,0xc03ffffe,0x1fffff0,0xfffff80,0x7fffe003,0xffff001f,0xfff800ff,0xffc01fff,0xc000fc00,0x3c003ffe,0x1fff0,
3355+ 0xfff80,0x7ffc00,0x3ffe000,0x0,0xfffce0f0,0x3c0780,0x1e03c00,0xf01e000,0x781e0001,0xe01e0000,0x3fff00,0x1e0000,0x1e0000,0xf780003,
3356+ 0xcf78001f,0xf800078,0x3c000000,0x0,0x1e00,0x1e00,0xf7800,0x3e1f000,0x1e00000,0x1e00000,0xf780003e,0x1f0000fc,0x7c000f3d,
3357+ 0xe0000780,0x780,0x3de00,0xf3de00,0x7c3e000,0x0,0x0,0xf0000000,0xf000007b,0xc0001f0f,0x800001e0,0x1e0000,0x3e1f00,0x0,0x0,
3358+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,
3359+ 0x3c1e0000,0x1e0f0000,0x300007fc,0xfff,0xc00001e0,0x1e0,0x3c000,0x1c000,0x0,0x0,0x0,0x0,0x3c001ff,0xfc001ffe,0x3ffff,0xc01ffffc,
3360+ 0x3f80,0x3ffff80,0x7fff803,0xfffff803,0xfffe001f,0xffe00000,0x0,0x0,0x0,0x0,0xffff80,0x7f800,0xfe0003,0xffff8001,0xffff01ff,
3361+ 0xff0003ff,0xffe01fff,0xff001fff,0xf01e0007,0x803ffff0,0xfff80,0x3c003f00,0x7800001f,0xc007f07f,0x1e003f,0xff8007ff,0xff000fff,
3362+ 0xe007ffff,0x7fffc,0x7fffffe,0xf0003c0,0xf0000f1e,0xf07,0x8003c1f0,0x3e01ff,0xfff8003f,0xf001e000,0x7fe0,0x7f80,0x0,0xe0000,
3363+ 0x1,0xe0000000,0x0,0x780000,0x1f,0xfe000000,0x78000,0x3c00,0xf000,0x7800003,0xffe00000,0x0,0x0,0x0,0x0,0x0,0x0,0x3c000,0x0,
3364+ 0x0,0x0,0x0,0x0,0xf,0xfc0000f0,0x3ff00,0x0,0x0,0x3fff80,0x0,0x0,0xffe000,0x0,0x0,0x0,0x78f0,0x0,0xffff80,0x0,0x3fffff80,0x1f,
3365+ 0xffff8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0xc7f80070,0x3e1f0007,0x70000000,0x0,0x0,0x7700,0x7c000f8,0x0,0x780000,0x180000,
3366+ 0x3fff8000,0x1f00,0x3e0003c,0x1f03,0xc001f0f8,0x0,0x703f00,0x0,0x0,0x0,0x3f,0xff0000f0,0xf8000000,0x303e,0xc0f8,0x7800,0x0,
3367+ 0xffffc00,0x0,0x7,0x3800003e,0x3e000000,0x1c00,0xe000,0x3c00,0xf000,0x1fc000,0xfe0000,0x7f00000,0x3f800001,0xfc00000f,0xe00001ff,
3368+ 0xffc01fff,0xf007ffff,0xc03ffffe,0x1fffff0,0xfffff80,0x7fffe003,0xffff001f,0xfff800ff,0xffc01fff,0xf000fe00,0x3c007fff,0x3fff8,
3369+ 0x1fffc0,0xfffe00,0x7fff000,0x1,0xffffc0f0,0x3c0780,0x1e03c00,0xf01e000,0x781f0003,0xe01e0000,0x3fff80,0xe0000,0x3c0000,0x1e3c0003,
3370+ 0x8ff0001f,0xf80003c,0x78000000,0x0,0xe00,0x3c00,0x1e3c00,0x3e1f000,0xe00000,0x3c00001,0xe3c0003e,0x1f00007f,0xf8000e3f,0xc0000380,
3371+ 0xf00,0x78f00,0xe3fc00,0x7c3e000,0x0,0x0,0x70000001,0xe00000f1,0xe0001f0f,0x800003c0,0x1e0000,0x3e1f00,0x0,0x0,0x0,0x0,0x0,
3372+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x3c1e0000,0x3c0f0000,
3373+ 0x30000ffe,0xf80,0xc00001e0,0x3c0,0x1e000,0x101c040,0x0,0x0,0x0,0x0,0x78003f0,0x7e001ffe,0x3f807,0xe01f00fe,0x3f80,0x3ffff80,
3374+ 0x7e01803,0xfffff007,0xe03f003f,0x3f00000,0x0,0x0,0x0,0x0,0xfc0fc0,0x3ffe00,0xfe0003,0xffffc003,0xf81f01ff,0xff8003ff,0xffe01fff,
3375+ 0xff003f01,0xf01e0007,0x803ffff0,0xfff80,0x3c007e00,0x7800001f,0xc007f07f,0x1e007e,0xfc007ff,0xff801f83,0xf007ffff,0x800fc07c,
3376+ 0x7fffffe,0xf0003c0,0xf0000f0f,0x1e07,0xc007c0f8,0x7c01ff,0xfff8003c,0xf000,0x1e0,0xffc0,0x0,0xf0000,0x1,0xe0000000,0x0,0x780000,
3377+ 0x3e,0x0,0x78000,0x3c00,0xf000,0x7800000,0x1e00000,0x0,0x0,0x0,0x0,0x0,0x0,0x3c000,0x0,0x0,0x0,0x0,0x0,0x1f,0x800000f0,0x1f80,
3378+ 0x0,0x0,0x7e0780,0x0,0x0,0x1f82000,0x0,0x0,0x0,0x7070,0x0,0x1f80f80,0x0,0x7fffff80,0x1f,0xffff8000,0x0,0x0,0x0,0x0,0x0,0x0,
3379+ 0x0,0x1,0xc3f80070,0x3f3f0007,0xf0000000,0x0,0x0,0x7f00,0x3e001f0,0x0,0x780000,0x180000,0x7f018000,0xf80,0x7c0003c,0x3e00,
3380+ 0x4001f0f8,0xfe00,0x400f00,0x0,0x0,0x0,0x7f000000,0xe0,0x38000000,0x1e,0x38,0x7800,0x0,0x1ffe1c00,0x0,0x0,0x38000078,0xf000000,
3381+ 0x1c00,0xe000,0x7f800,0xf000,0x1fc000,0xfe0000,0x7f00000,0x3f800001,0xfc00001f,0xf00001ff,0xffc03f81,0xf007ffff,0xc03ffffe,
3382+ 0x1fffff0,0xfffff80,0x7fffe003,0xffff001f,0xfff800ff,0xffc01fff,0xf800fe00,0x3c00fc1f,0x8007e0fc,0x3f07e0,0x1f83f00,0xfc1f800,
3383+ 0x3,0xf07fc0f0,0x3c0780,0x1e03c00,0xf01e000,0x780f8007,0xc01e0000,0x7e0fc0,0xf0000,0x3c0000,0x1c1c0003,0x87f0001f,0xf80003f,
3384+ 0xf8000000,0x0,0xf00,0x3c00,0x1c1c00,0x3e1f000,0xf00000,0x3c00001,0xc1c0003e,0x1f00003f,0xc0000e1f,0xc00003c0,0xf00,0x70700,
3385+ 0xe1fc00,0x7c3e000,0x0,0x0,0x78000001,0xe00000e0,0xe0001f0f,0x800003c0,0x1e0000,0x3e1f00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3386+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x3c1e0000,0x3c0f0001,0xff801e0f,
3387+ 0x1f00,0x1e0,0x3c0,0x1e000,0x3c1c1e0,0x0,0x0,0x0,0x0,0x78007c0,0x1f001f9e,0x3c001,0xf010003e,0x7780,0x3c00000,0xf800000,0xf007,
3388+ 0xc01f007c,0x1f80000,0x0,0x0,0x0,0x0,0xe003e0,0x7fff00,0x1ef0003,0xc007e007,0xc00301e0,0x1fc003c0,0x1e00,0x7c00,0x301e0007,
3389+ 0x80007800,0x780,0x3c00fc00,0x7800001f,0xe00ff07f,0x1e00f8,0x3e00780,0x1fc03e00,0xf807801f,0xc01f001c,0xf000,0xf0003c0,0xf0000f0f,
3390+ 0x1e03,0xc00f8078,0x780000,0xf0003c,0xf000,0x1e0,0x1f3e0,0x0,0x78000,0x1,0xe0000000,0x0,0x780000,0x3c,0x0,0x78000,0x0,0x0,
3391+ 0x7800000,0x1e00000,0x0,0x0,0x0,0x0,0x0,0x0,0x3c000,0x0,0x0,0x0,0x0,0x0,0x1f,0xf0,0xf80,0x0,0x0,0xf80180,0x0,0x0,0x1e00000,
3392+ 0x0,0x0,0x0,0xe038,0x0,0x3e00380,0x0,0xfe0f0000,0x0,0xf0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0xc0f00070,0x3b370003,0xe0000000,
3393+ 0x0,0x0,0x3e00,0x1e001e0,0x0,0x780000,0x180000,0x7c000000,0x780,0x780003c,0x3c00,0x0,0x7ffc0,0x780,0x0,0x0,0x3,0xffe00000,
3394+ 0x1c0,0x3c000000,0xe,0x38,0xf000,0x0,0x3ffe1c00,0x0,0x0,0x38000078,0xf000000,0x1c00,0xe000,0x7f000,0xf000,0x3de000,0x1ef0000,
3395+ 0xf780000,0x7bc00003,0xde00001e,0xf00003e7,0x80007c00,0x30078000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,
3396+ 0xe0001e03,0xfc00fe00,0x3c01f007,0xc00f803e,0x7c01f0,0x3e00f80,0x1f007c00,0x7,0xc01f80f0,0x3c0780,0x1e03c00,0xf01e000,0x78078007,
3397+ 0x801e0000,0x7803c0,0x78000,0x780000,0x380e0003,0x81e00000,0x1f,0xf0000000,0x0,0x780,0x7800,0x380e00,0x0,0x780000,0x7800003,
3398+ 0x80e00000,0x1ff,0x80000e07,0x800001e0,0x1e00,0xe0380,0xe07800,0x0,0x0,0x0,0x3c000003,0xc00001c0,0x70000000,0x780,0x1e0000,
3399+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3400+ 0x780000,0x3c1e0000,0x3c0e0007,0xfff01c07,0x1e00,0x1e0,0x780,0xf000,0x3e1c3e0,0x0,0x0,0x0,0x0,0xf0007c0,0x1f00181e,0x20000,
3401+ 0xf000001f,0xf780,0x3c00000,0x1f000000,0x1f00f,0x800f8078,0xf80000,0x0,0x0,0x0,0x0,0x8003e0,0x1fc0f80,0x1ef0003,0xc001e007,
3402+ 0x800101e0,0x7e003c0,0x1e00,0x7800,0x101e0007,0x80007800,0x780,0x3c00f800,0x7800001e,0xe00ef07f,0x801e00f0,0x1e00780,0x7c03c00,
3403+ 0x78078007,0xc01e0004,0xf000,0xf0003c0,0x78001e0f,0x1e03,0xe00f807c,0xf80000,0x1f0003c,0x7800,0x1e0,0x3e1f0,0x0,0x3c000,0x1,
3404+ 0xe0000000,0x0,0x780000,0x3c,0x0,0x78000,0x0,0x0,0x7800000,0x1e00000,0x0,0x0,0x0,0x0,0x0,0x0,0x3c000,0x0,0x0,0x0,0x0,0x0,
3405+ 0x1e,0xf0,0x780,0x0,0x0,0x1f00080,0x0,0x0,0x3c00000,0x0,0x0,0x0,0x1e03c,0x0,0x3c00080,0x0,0xf80f0000,0x0,0x1f0000,0x0,0x0,
3406+ 0x0,0x0,0x0,0x0,0x0,0x0,0x70,0x3bf70003,0xe0000000,0x0,0x0,0x3e00,0x1f003e0,0x0,0x780000,0x180000,0x78000000,0x7c0,0xf80003c,
3407+ 0x3c00,0x0,0x1f01f0,0x780,0x0,0x0,0xf,0x80f80000,0x1c0,0x1c000000,0xe,0x38,0x1e000,0x0,0x7ffe1c00,0x0,0x0,0x380000f0,0x7800000,
3408+ 0x1c00,0xe000,0x7fc00,0xf000,0x3de000,0x1ef0000,0xf780000,0x7bc00003,0xde00001e,0xf00003c7,0x80007800,0x10078000,0x3c0000,
3409+ 0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0x7e00ff00,0x3c01e003,0xc00f001e,0x7800f0,0x3c00780,0x1e003c00,
3410+ 0x7,0x800f00f0,0x3c0780,0x1e03c00,0xf01e000,0x7807c00f,0x801e0000,0xf803c0,0x3c000,0xf00000,0x780f0000,0x0,0x7,0xc0000000,
3411+ 0x0,0x3c0,0xf000,0x780f00,0x0,0x3c0000,0xf000007,0x80f00000,0x7ff,0xc0000000,0xf0,0x3c00,0x1e03c0,0x0,0x0,0x0,0x0,0x1e000007,
3412+ 0x800003c0,0x78000000,0xf00,0x1e0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3413+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x3c1e0000,0x3c1e001f,0xfff03803,0x80001e00,0x1e0,0x780,0xf000,0xf9cf80,
3414+ 0x0,0x0,0x0,0x0,0xf000780,0xf00001e,0x0,0xf800000f,0xe780,0x3c00000,0x1e000000,0x1e00f,0x78078,0x7c0000,0x0,0x0,0x0,0x0,0x1e0,
3415+ 0x3f003c0,0x1ef0003,0xc000f00f,0x800001e0,0x1f003c0,0x1e00,0xf000,0x1e0007,0x80007800,0x780,0x3c01f000,0x7800001e,0xe00ef07f,
3416+ 0x801e01f0,0x1e00780,0x3c07c00,0x78078003,0xc03e0000,0xf000,0xf0003c0,0x78001e0f,0x1e01,0xf01f003c,0xf00000,0x3e0003c,0x7800,
3417+ 0x1e0,0x7c0f8,0x0,0x0,0x1,0xe0000000,0x0,0x780000,0x3c,0x0,0x78000,0x0,0x0,0x7800000,0x1e00000,0x0,0x0,0x0,0x0,0x0,0x0,0x3c000,
3418+ 0x0,0x0,0x0,0x0,0x0,0x1e,0xf0,0x780,0x0,0x0,0x1e00000,0x0,0x0,0x3c00000,0x0,0x8,0x40,0x0,0x7e0000,0x7c00000,0x1,0xf00f0000,
3419+ 0x0,0x3e0000,0x0,0x3f,0xfc0,0xfc3f0,0xfc3f0,0x0,0x0,0x0,0x70,0x39e70000,0x0,0x0,0x0,0x0,0xf003c0,0x0,0x0,0x180000,0xf8000000,
3420+ 0x3c0,0xf00003c,0x3c00,0x0,0x3c0078,0x7ff80,0x0,0x0,0x1e,0x3c0000,0x1c0,0x1c000000,0xe,0xf0,0x0,0x0,0x7ffe1c00,0x0,0x0,0x380000f0,
3421+ 0x7800000,0x1c00,0xe000,0x3c00,0x0,0x3de000,0x1ef0000,0xf780000,0x7bc00003,0xde00001e,0xf00003c7,0x8000f800,0x78000,0x3c0000,
3422+ 0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0x1f00ff00,0x3c03e003,0xc01f001e,0xf800f0,0x7c00780,0x3e003c00,
3423+ 0xf,0x800f80f0,0x3c0780,0x1e03c00,0xf01e000,0x7803c00f,0x1fffc0,0xf001e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3424+ 0x0,0x0,0x307,0xe0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1e0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3425+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x3c1e0000,0x781e003f,0xfff03803,
3426+ 0x80001e00,0x1e0,0xf80,0xf000,0x3dde00,0x0,0x0,0x0,0x0,0xf000f00,0x780001e,0x0,0x7800000f,0x1e780,0x3c00000,0x3e000000,0x3e00f,
3427+ 0x780f0,0x7c0000,0x0,0x0,0x0,0x0,0x1e0,0x7c001e0,0x3ef8003,0xc000f00f,0x1e0,0xf003c0,0x1e00,0xf000,0x1e0007,0x80007800,0x780,
3428+ 0x3c03e000,0x7800001e,0xf01ef07b,0xc01e01e0,0xf00780,0x3e07800,0x3c078003,0xe03c0000,0xf000,0xf0003c0,0x78001e0f,0x1e00,0xf01e003e,
3429+ 0x1f00000,0x3c0003c,0x7800,0x1e0,0x78078,0x0,0x0,0x1,0xe0000000,0x0,0x780000,0x3c,0x0,0x78000,0x0,0x0,0x7800000,0x1e00000,
3430+ 0x0,0x0,0x0,0x0,0x0,0x0,0x3c000,0x0,0x0,0x0,0x0,0x0,0x1e,0xf0,0x780,0x0,0x0,0x1e00000,0x0,0x0,0x3c00000,0x0,0x18,0xc0,0x0,
3431+ 0xe70000,0x7800000,0x1,0xe00f0000,0x0,0x3c0000,0x0,0x3f,0xfc0,0xfc1f0,0x1f83f0,0x0,0x0,0x0,0x70,0x39e70000,0x0,0x0,0x0,0x0,
3432+ 0xf807c0,0x0,0x0,0x180000,0xf0000000,0x3e0,0x1f00003c,0x3e00,0x0,0x70001c,0x3fff80,0x0,0x0,0x38,0xe0000,0x1c0,0x1c000078,
3433+ 0x1c,0x1fe0,0x0,0x0,0xfffe1c00,0x0,0x0,0x380000f0,0x7800000,0x1c00,0xe000,0xe00,0x0,0x7df000,0x3ef8000,0x1f7c0000,0xfbe00007,
3434+ 0xdf00003c,0x780003c7,0x8000f000,0x78000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0xf00f780,
3435+ 0x3c03c001,0xe01e000f,0xf00078,0x78003c0,0x3c001e00,0xf,0xf80f0,0x3c0780,0x1e03c00,0xf01e000,0x7803e01f,0x1ffff8,0xf001e0,
3436+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xe0000000,0x0,0x0,0x0,0x0,0x0,0x0,0xc000,0x0,0x0,0x0,0x0,0x1e0000,
3437+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3438+ 0x780000,0x3c1e0000,0x781e003e,0x30703803,0x80001e00,0x1e0,0xf00,0x7800,0xff800,0x1e0000,0x0,0x0,0x0,0x1e000f00,0x780001e,
3439+ 0x0,0x7800000f,0x3c780,0x3c00000,0x3c000000,0x3c00f,0x780f0,0x3c0000,0x0,0x0,0x2000000,0x800000,0x1e0,0x78000e0,0x3c78003,
3440+ 0xc000f01e,0x1e0,0xf803c0,0x1e00,0x1e000,0x1e0007,0x80007800,0x780,0x3c07c000,0x7800001e,0x701cf07b,0xc01e01e0,0xf00780,0x1e07800,
3441+ 0x3c078001,0xe03c0000,0xf000,0xf0003c0,0x7c003e0f,0x1e00,0xf83e001e,0x1e00000,0x7c0003c,0x3c00,0x1e0,0xf807c,0x0,0x0,0x1fe0001,
3442+ 0xe1fc0000,0x7f00003,0xf8780007,0xf000003c,0x7f0,0x783f0,0x0,0x0,0x7800000,0x1e00000,0x3e0f8000,0xfc00007,0xf8000007,0xf00001fc,
3443+ 0xf,0xc0003fc0,0x3c000,0x0,0x0,0x0,0x0,0x0,0x1e,0xf0,0x780,0x0,0x0,0x3c00000,0x0,0x0,0x3c00000,0x0,0x18,0xc0,0x0,0x1818000,
3444+ 0x7800000,0x1,0xe00f0000,0x0,0x7c0000,0x0,0x1f,0x80001f80,0x7c1f8,0x1f83e0,0x0,0x0,0x0,0x70,0x38c70007,0xf8000000,0x7f03,
3445+ 0xf0000000,0x0,0x780780,0x0,0x0,0xfe0000,0xf0000000,0x1e0,0x1e00003c,0x3f00,0x0,0xe07f0e,0x7fff80,0x0,0x0,0x70,0x70000,0x1c0,
3446+ 0x1c000078,0x3c,0x1fc0,0x0,0x0,0xfffe1c00,0x0,0x0,0x380000f0,0x7800000,0x1c00,0xe000,0xe00,0x0,0x78f000,0x3c78000,0x1e3c0000,
3447+ 0xf1e00007,0x8f00003c,0x78000787,0x8001e000,0x78000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,
3448+ 0xf80f780,0x3c03c001,0xe01e000f,0xf00078,0x78003c0,0x3c001e00,0xf,0x1f80f0,0x3c0780,0x1e03c00,0xf01e000,0x7801e01e,0x1ffffc,
3449+ 0xf007e0,0x3fc000,0x1fe0000,0xff00000,0x7f800003,0xfc00001f,0xe0000fc0,0xfc00007f,0xfe0,0x7f00,0x3f800,0x1fc000,0x0,0x0,0x0,
3450+ 0x1,0xf000001f,0x80000ff0,0x7f80,0x3fc00,0x1fe000,0xff0000,0x1f80000,0x1fc1e000,0x0,0x0,0x0,0x0,0x1e1fc0,0x0,0x0,0x0,0x0,
3451+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x3c1e0000,
3452+ 0x781c007c,0x30003803,0x80001f00,0x1e0,0xf00,0x7800,0x7f000,0x1e0000,0x0,0x0,0x0,0x1e000f00,0x780001e,0x0,0x7800000f,0x3c780,
3453+ 0x3c00000,0x3c000000,0x3c00f,0x780f0,0x3c0000,0x0,0x0,0x1e000000,0xf00000,0x3e0,0xf0000e0,0x3c78003,0xc000f01e,0x1e0,0x7803c0,
3454+ 0x1e00,0x1e000,0x1e0007,0x80007800,0x780,0x3c0f8000,0x7800001e,0x701cf079,0xe01e01e0,0xf00780,0x1e07800,0x3c078001,0xe03c0000,
3455+ 0xf000,0xf0003c0,0x3c003c0f,0x3e00,0x787c001f,0x3e00000,0xf80003c,0x3c00,0x1e0,0x1f003e,0x0,0x0,0x1fffc001,0xe7ff0000,0x3ffe000f,
3456+ 0xfe78003f,0xfc001fff,0xfe001ffc,0xf0078ffc,0x1ffc00,0x7ff000,0x7800f80,0x1e0000f,0x7f1fc01e,0x3ff0001f,0xfe00079f,0xfc0007ff,
3457+ 0x3c003c7f,0xf001fff8,0x1fffff0,0x3c003c0,0xf0000f1e,0xf1f,0x7c1f0,0x1f00ff,0xffe0001e,0xf0,0x780,0x0,0x0,0x3c00000,0x100000,
3458+ 0x0,0x7800000,0x0,0x18,0xc0,0x0,0x1818000,0x7800000,0x1,0xe00f0000,0x1000000,0xf80000,0x40000002,0xf,0x80001f00,0x7e0f8,0x1f07c0,
3459+ 0x0,0x0,0x0,0x70,0x38c7003f,0xff000000,0xff8f,0xf8000100,0xffffe,0x7c0f80,0x0,0x0,0x3ffc000,0xf0000020,0x1001f0,0x3c00003c,
3460+ 0x1f80,0x0,0x1c3ffc7,0x7c0780,0x0,0x0,0xe3,0xff038000,0xe0,0x38000078,0x78,0x1ff0,0x0,0x3c003c0,0xfffe1c00,0x0,0x0,0x380000f0,
3461+ 0x7800000,0x1c00,0xe000,0xe00,0xf000,0x78f000,0x3c78000,0x1e3c0000,0xf1e00007,0x8f00003c,0x78000787,0x8001e000,0x78000,0x3c0000,
3462+ 0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0x780f3c0,0x3c03c001,0xe01e000f,0xf00078,0x78003c0,0x3c001e00,
3463+ 0x4000200f,0x3f80f0,0x3c0780,0x1e03c00,0xf01e000,0x7801f03e,0x1ffffe,0xf01fe0,0x3fff800,0x1fffc000,0xfffe0007,0xfff0003f,
3464+ 0xff8001ff,0xfc003ff3,0xfe0003ff,0xe0007ff8,0x3ffc0,0x1ffe00,0xfff000,0x3ff80001,0xffc0000f,0xfe00007f,0xf000003f,0xf8003c7f,
3465+ 0xe0003ffc,0x1ffe0,0xfff00,0x7ff800,0x3ffc000,0x1f80000,0xfff1c03c,0x3c01e0,0x1e00f00,0xf007800,0x781f0001,0xf01e7ff0,0x7c0007c,
3466+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,
3467+ 0x3c1e003f,0xfffff078,0x30003803,0x80000f00,0x1e0,0x1f00,0x7800,0x7f000,0x1e0000,0x0,0x0,0x0,0x3c000f00,0x780001e,0x0,0x7800000f,
3468+ 0x78780,0x3c00000,0x3c000000,0x7c00f,0x780f0,0x3c0007,0xe000003f,0x0,0xfe000000,0xfe0000,0x3c0,0x1f000070,0x7c7c003,0xc000f01e,
3469+ 0x1e0,0x7803c0,0x1e00,0x1e000,0x1e0007,0x80007800,0x780,0x3c1f0000,0x7800001e,0x783cf079,0xe01e03c0,0xf00780,0x1e0f000,0x3c078001,
3470+ 0xe03c0000,0xf000,0xf0003c0,0x3c003c07,0x81f03c00,0x7c7c000f,0x87c00000,0xf00003c,0x1e00,0x1e0,0x3e001f,0x0,0x0,0x3fffe001,
3471+ 0xefff8000,0x7fff001f,0xff78007f,0xfe001fff,0xfe003ffe,0xf0079ffe,0x1ffc00,0x7ff000,0x7801f00,0x1e0000f,0xffbfe01e,0x7ff8003f,
3472+ 0xff0007bf,0xfe000fff,0xbc003cff,0xf803fffc,0x1fffff0,0x3c003c0,0x78001e1e,0xf0f,0x800f80f0,0x1e00ff,0xffe0001e,0xf0,0x780,
3473+ 0x0,0x0,0x3c00000,0x380000,0x0,0x7800000,0x0,0x18,0xc0,0x0,0x1008000,0x7800000,0x3,0xe00f0000,0x3800000,0xf00000,0xe0000007,
3474+ 0xf,0x80001f00,0x3e0f8,0x1e07c0,0x0,0x0,0x0,0x70,0x3807007f,0xff800000,0x1ffdf,0xfc000380,0xffffe,0x3e1f00,0x0,0x0,0xfffe000,
3475+ 0xf0000030,0x3800f8,0x7c00003c,0xfc0,0x0,0x18780c3,0xf00780,0x80100,0x0,0xc3,0xffc18000,0xf0,0x78000078,0xf0,0xf0,0x0,0x3c003c0,
3476+ 0xfffe1c00,0x0,0x0,0x380000f0,0x7800801,0x1c00,0xe000,0x1e00,0xf000,0xf8f800,0x7c7c000,0x3e3e0001,0xf1f0000f,0x8f80007c,0x7c000787,
3477+ 0x8001e000,0x78000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0x780f3c0,0x3c078001,0xe03c000f,
3478+ 0x1e00078,0xf0003c0,0x78001e00,0xe000701f,0x3fc0f0,0x3c0780,0x1e03c00,0xf01e000,0x7800f87c,0x1e007f,0xf07e00,0x7fffc00,0x3fffe001,
3479+ 0xffff000f,0xfff8007f,0xffc003ff,0xfe007ff7,0xff0007ff,0xf000fffc,0x7ffe0,0x3fff00,0x1fff800,0x3ff80001,0xffc0000f,0xfe00007f,
3480+ 0xf00000ff,0xf8003cff,0xf0007ffe,0x3fff0,0x1fff80,0xfffc00,0x7ffe000,0x1f80001,0xfffb803c,0x3c01e0,0x1e00f00,0xf007800,0x780f0001,
3481+ 0xe01efff8,0x3c00078,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3482+ 0x0,0x0,0x0,0x0,0x0,0x780000,0x3c1e003f,0xfffff078,0x30001c07,0xf80,0x1e0,0x1e00,0x3c00,0xff800,0x1e0000,0x0,0x0,0x0,0x3c001e00,
3483+ 0x3c0001e,0x0,0x7800001e,0x70780,0x3c00000,0x78000000,0x78007,0x800f00f0,0x3e0007,0xe000003f,0x3,0xfe000000,0xff8000,0x7c0,
3484+ 0x1e000070,0x783c003,0xc001f01e,0x1e0,0x7803c0,0x1e00,0x1e000,0x1e0007,0x80007800,0x780,0x3c3e0000,0x7800001e,0x3838f079,
3485+ 0xe01e03c0,0x780780,0x1e0f000,0x1e078001,0xe03c0000,0xf000,0xf0003c0,0x3c007c07,0x81f03c00,0x3ef80007,0x87800000,0x1f00003c,
3486+ 0x1e00,0x1e0,0x7c000f,0x80000000,0x0,0x3ffff001,0xffffc000,0xffff003f,0xff7800ff,0xff001fff,0xfe007ffe,0xf007bffe,0x1ffc00,
3487+ 0x7ff000,0x7803e00,0x1e0000f,0xffffe01e,0xfff8007f,0xff8007ff,0xff001fff,0xbc003dff,0xf807fffc,0x1fffff0,0x3c003c0,0x78001e0f,
3488+ 0x1e07,0xc01f00f0,0x1e00ff,0xffe0001e,0xf0,0x780,0x0,0x0,0x7c00000,0x7c0000,0x0,0x7800000,0x0,0x18,0xc0,0x0,0x1018000,0x7800000,
3489+ 0x3,0xc00f0000,0x7c00000,0x1f00001,0xf000000f,0x80000007,0xc0003e00,0x1e07c,0x3e0780,0x0,0x0,0x0,0x70,0x380700ff,0xff800000,
3490+ 0x3ffff,0xfe0007c0,0xffffe,0x1e1e00,0x0,0x780000,0x1fffe000,0xf0000078,0x7c0078,0x7800003c,0xff0,0x0,0x38e0003,0x80f00780,
3491+ 0x180300,0x0,0x1c3,0x81e1c000,0x7f,0xf0000078,0x1e0,0x38,0x0,0x3c003c0,0xfffe1c00,0x0,0x0,0x380000f0,0x7800c01,0x80001c00,
3492+ 0xe000,0x603e00,0xf000,0xf07800,0x783c000,0x3c1e0001,0xe0f0000f,0x7800078,0x3c000f87,0x8001e000,0x78000,0x3c0000,0x1e00000,
3493+ 0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0x780f3c0,0x3c078000,0xf03c0007,0x81e0003c,0xf0001e0,0x78000f01,0xf000f81e,
3494+ 0x7bc0f0,0x3c0780,0x1e03c00,0xf01e000,0x78007878,0x1e001f,0xf0f800,0x7fffe00,0x3ffff001,0xffff800f,0xfffc007f,0xffe003ff,
3495+ 0xff007fff,0xff800fff,0xf001fffe,0xffff0,0x7fff80,0x3fffc00,0x3ff80001,0xffc0000f,0xfe00007f,0xf00001ff,0xfc003dff,0xf000ffff,
3496+ 0x7fff8,0x3fffc0,0x1fffe00,0xffff000,0x1f80003,0xffff803c,0x3c01e0,0x1e00f00,0xf007800,0x780f0001,0xe01ffffc,0x3c00078,0x0,
3497+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,
3498+ 0x3c1e003f,0xfffff078,0x30001e0f,0x300780,0x1e0,0x1e00,0x3c00,0x3dde00,0x1e0000,0x0,0x0,0x0,0x78001e00,0x3c0001e,0x0,0xf800003e,
3499+ 0xf0780,0x3dfc000,0x783f8000,0xf8007,0xc01f00f0,0x3e0007,0xe000003f,0x1f,0xfc000000,0x7ff000,0xf80,0x3e007c70,0x783c003,0xc001e03c,
3500+ 0x1e0,0x3c03c0,0x1e00,0x3c000,0x1e0007,0x80007800,0x780,0x3c7c0000,0x7800001e,0x3878f078,0xf01e03c0,0x780780,0x1e0f000,0x1e078001,
3501+ 0xe03e0000,0xf000,0xf0003c0,0x1e007807,0x83f03c00,0x3ef00007,0xcf800000,0x3e00003c,0xf00,0x1e0,0xf80007,0xc0000000,0x0,0x3e01f801,
3502+ 0xfe07e001,0xf80f007e,0x7f801f8,0x1f801fff,0xfe00fc0f,0xf007f83f,0x1ffc00,0x7ff000,0x7807c00,0x1e0000f,0x87e1e01f,0xe0fc00fc,
3503+ 0xfc007f8,0x1f803f03,0xfc003df0,0x3807e03c,0x1fffff0,0x3c003c0,0x78003e0f,0x1e03,0xe03e00f8,0x3e00ff,0xffe0001e,0xf0,0x780,
3504+ 0x0,0x0,0x7800000,0xfe0000,0x0,0x7800000,0x0,0x18,0xc0,0x0,0x1818000,0x7c00000,0x3,0xc00f0000,0xfe00000,0x3e00003,0xf800001f,
3505+ 0xc0000007,0xc0003e00,0x1e03c,0x3c0f80,0x0,0x0,0x0,0x70,0x380700fc,0x7800000,0x7c1fe,0x3e000fe0,0xffffe,0x1f3e00,0x0,0x780000,
3506+ 0x3f98e000,0xf000003c,0xfcf8007c,0xf800003c,0x3ffc,0x0,0x31c0001,0x80f00f80,0x380700,0x0,0x183,0x80e0c000,0x3f,0xe0000078,
3507+ 0x3c0,0x38,0x0,0x3c003c0,0xfffe1c00,0x0,0x0,0x38000078,0xf000e01,0xc003ffe0,0x1fff00,0x7ffc00,0xf000,0xf07800,0x783c000,0x3c1e0001,
3508+ 0xe0f0000f,0x7800078,0x3c000f07,0x8003c000,0x78000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,
3509+ 0x3c0f1e0,0x3c078000,0xf03c0007,0x81e0003c,0xf0001e0,0x78000f00,0xf801f01e,0xf3c0f0,0x3c0780,0x1e03c00,0xf01e000,0x78007cf8,
3510+ 0x1e000f,0x80f0f000,0x7c03f00,0x3e01f801,0xf00fc00f,0x807e007c,0x3f003e0,0x1f80707f,0x8f801f80,0xf003f03f,0x1f81f8,0xfc0fc0,
3511+ 0x7e07e00,0x3ff80001,0xffc0000f,0xfe00007f,0xf00003ff,0xfc003fc1,0xf801f81f,0x800fc0fc,0x7e07e0,0x3f03f00,0x1f81f800,0x1f80007,
3512+ 0xe07f003c,0x3c01e0,0x1e00f00,0xf007800,0x780f8003,0xe01fe07e,0x3e000f8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3513+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x3f,0xfffff078,0x30000ffe,0x1f007c0,0x0,0x1e00,
3514+ 0x3c00,0xf9cf80,0x1e0000,0x0,0x0,0x0,0x78001e00,0x3c0001e,0x0,0xf00000fc,0x1e0780,0x3fff800,0x78ffe000,0xf0003,0xe03e00f0,
3515+ 0x3e0007,0xe000003f,0x7f,0xe01fffff,0xf00ffc00,0x1f80,0x3c01ff70,0x783c003,0xc007e03c,0x1e0,0x3c03c0,0x1e00,0x3c000,0x1e0007,
3516+ 0x80007800,0x780,0x3cfc0000,0x7800001e,0x3c78f078,0xf01e03c0,0x780780,0x3e0f000,0x1e078003,0xc01f0000,0xf000,0xf0003c0,0x1e007807,
3517+ 0x83f83c00,0x1ff00003,0xcf000000,0x3e00003c,0xf00,0x1e0,0x0,0x0,0x0,0x20007801,0xfc03e003,0xe003007c,0x3f803e0,0x7c0003c,
3518+ 0xf807,0xf007e00f,0x3c00,0xf000,0x780f800,0x1e0000f,0x87e1f01f,0x803c00f8,0x7c007f0,0xf803e01,0xfc003f80,0x80f8004,0x3c000,
3519+ 0x3c003c0,0x3c003c0f,0x1e03,0xe03e0078,0x3c0000,0x7c0001e,0xf0,0x780,0x0,0x0,0x3ffff800,0x1ff0000,0x0,0x7800000,0x0,0x18,
3520+ 0xc0,0x0,0x1818000,0x3e00000,0x3,0xc00f0000,0x1ff00000,0x3e00007,0xfc00003f,0xe0000003,0xc0003c00,0xf03c,0x3c0f00,0x0,0x0,
3521+ 0x0,0x70,0x380701f0,0x800000,0x780fc,0x1e001ff0,0x7c,0xf3c00,0x0,0x780000,0x7e182000,0xf000001f,0xfff00ffc,0xffc0003c,0x3cfe,
3522+ 0x0,0x31c0001,0x80f01f80,0x780f00,0x0,0x183,0x80e0c000,0xf,0x80000078,0x780,0x38,0x0,0x3c003c0,0x7ffe1c00,0x0,0x0,0x38000078,
3523+ 0xf000f01,0xe003ffe0,0x1fff00,0x7ff800,0xf000,0xf07800,0x783c000,0x3c1e0001,0xe0f0000f,0x78000f8,0x3e000f07,0x8003c000,0x78000,
3524+ 0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0x3c0f1e0,0x3c078000,0xf03c0007,0x81e0003c,0xf0001e0,
3525+ 0x78000f00,0x7c03e01e,0x1e3c0f0,0x3c0780,0x1e03c00,0xf01e000,0x78003cf0,0x1e0007,0x80f1e000,0x4000f00,0x20007801,0x3c008,
3526+ 0x1e0040,0xf00200,0x780403f,0x7803e00,0x3007c00f,0x803e007c,0x1f003e0,0xf801f00,0x780000,0x3c00000,0x1e000000,0xf00007f0,
3527+ 0x3e003f00,0x7801f00f,0x800f807c,0x7c03e0,0x3e01f00,0x1f00f800,0x1f80007,0xc03e003c,0x3c01e0,0x1e00f00,0xf007800,0x78078003,
3528+ 0xc01fc03e,0x1e000f0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3529+ 0x0,0x0,0x0,0x0,0x0,0x780000,0x0,0xf078007c,0x300007fc,0x7e00fe0,0x0,0x1e00,0x3c00,0x3e1c3e0,0x1e0000,0x0,0x0,0x0,0xf0001e00,
3530+ 0x3c0001e,0x1,0xf000fff8,0x1e0780,0x3fffe00,0x79fff000,0x1f0001,0xfffc00f0,0x7e0007,0xe000003f,0x3ff,0x801fffff,0xf003ff80,
3531+ 0x3f00,0x3c03fff0,0xf01e003,0xffffc03c,0x1e0,0x3c03ff,0xffc01fff,0xfe03c000,0x1fffff,0x80007800,0x780,0x3df80000,0x7800001e,
3532+ 0x1c70f078,0x781e03c0,0x780780,0x3c0f000,0x1e078007,0xc01f8000,0xf000,0xf0003c0,0x1e007807,0x83f83c00,0xfe00003,0xff000000,
3533+ 0x7c00003c,0x780,0x1e0,0x0,0x0,0x0,0x7c01,0xf801f007,0xc00100f8,0x1f803c0,0x3c0003c,0x1f003,0xf007c00f,0x80003c00,0xf000,
3534+ 0x783f000,0x1e0000f,0x3c0f01f,0x3e01f0,0x3e007e0,0x7c07c00,0xfc003f00,0xf0000,0x3c000,0x3c003c0,0x3c003c0f,0x1e01,0xf07c007c,
3535+ 0x7c0000,0xfc0001e,0xf0,0x780,0x0,0x0,0x3ffff000,0x3838000,0x0,0x7800000,0x0,0x18,0xc0,0x0,0xff0000,0x3f00000,0x3,0xc00fff00,
3536+ 0x38380000,0x7c0000e,0xe000070,0x70000001,0xe0003c00,0xf01e,0x780e00,0x0,0x0,0x0,0x0,0x1e0,0x0,0x780f8,0xf003838,0xfc,0xffc00,
3537+ 0x0,0x780000,0x7c180000,0xf000000f,0xffe00fff,0xffc0003c,0x783f,0x80000000,0x6380000,0xc0f83f80,0xf81f00,0x0,0x303,0x80e06000,
3538+ 0x0,0x78,0xf00,0x78,0x0,0x3c003c0,0x7ffe1c00,0x0,0x0,0x3800003c,0x3e000f81,0xf003ffe0,0x1fff00,0x1fc000,0xf000,0x1e03c00,
3539+ 0xf01e000,0x780f0003,0xc078001e,0x3c000f0,0x1e000f07,0xff83c000,0x7ffff,0x803ffffc,0x1ffffe0,0xfffff00,0xf00000,0x7800000,
3540+ 0x3c000001,0xe0001e00,0x3c0f0f0,0x3c078000,0xf03c0007,0x81e0003c,0xf0001e0,0x78000f00,0x3e07c01e,0x1e3c0f0,0x3c0780,0x1e03c00,
3541+ 0xf01e000,0x78003ff0,0x1e0007,0x80f1e000,0xf80,0x7c00,0x3e000,0x1f0000,0xf80000,0x7c0001e,0x3c07c00,0x10078007,0x803c003c,
3542+ 0x1e001e0,0xf000f00,0x780000,0x3c00000,0x1e000000,0xf00007c0,0x1e003e00,0x7c03e007,0xc01f003e,0xf801f0,0x7c00f80,0x3e007c00,
3543+ 0xf,0x801f003c,0x3c01e0,0x1e00f00,0xf007800,0x7807c007,0xc01f801f,0x1f001f0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3544+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x0,0xe078003c,0x300001f0,0x3f801ff0,0x0,
3545+ 0x3c00,0x1e00,0x3c1c1e0,0x1e0000,0x0,0x0,0x0,0xf0001e0f,0x3c0001e,0x3,0xe000fff0,0x3c0780,0x3ffff00,0x7bfff800,0x1e0000,0x7ff00078,
3546+ 0x7e0007,0xe000003f,0x1ffc,0x1fffff,0xf0007ff0,0x7e00,0x3c07c3f0,0xf01e003,0xffff003c,0x1e0,0x3c03ff,0xffc01fff,0xfe03c000,
3547+ 0x1fffff,0x80007800,0x780,0x3ffc0000,0x7800001e,0x1ef0f078,0x781e03c0,0x780780,0x7c0f000,0x1e07801f,0x800ff000,0xf000,0xf0003c0,
3548+ 0xf00f807,0x83b83c00,0xfc00001,0xfe000000,0xf800003c,0x780,0x1e0,0x0,0x0,0x0,0x3c01,0xf000f007,0xc00000f0,0xf80780,0x3c0003c,
3549+ 0x1e001,0xf007c007,0x80003c00,0xf000,0x787e000,0x1e0000f,0x3c0f01f,0x1e01e0,0x1e007c0,0x3c07800,0x7c003f00,0xf0000,0x3c000,
3550+ 0x3c003c0,0x3e007c07,0x80003c00,0xf8f8003c,0x780000,0xf80001e,0xf0,0x780,0x0,0x0,0x7ffff000,0x601c000,0x3,0xffff0000,0x0,
3551+ 0xfff,0xf8007fff,0xc0000000,0x7e003c,0x1fe0000,0xc0003,0xc00fff00,0x601c0000,0xf800018,0x70000c0,0x38000001,0xe0007800,0x701e,
3552+ 0x701e00,0x0,0x0,0x0,0x0,0x1e0,0x6,0x700f8,0xf00601c,0xf8,0x7f800,0x0,0x780000,0xf8180000,0xf000000f,0x87c00fff,0xffc0003c,
3553+ 0xf01f,0xc0000000,0x6380000,0xc07ff780,0x1f03e03,0xfffffe00,0x303,0x81c06000,0x0,0x1ffff,0xfe001e00,0x180f8,0x0,0x3c003c0,
3554+ 0x3ffe1c00,0x3f00000,0x0,0x3800003f,0xfe0007c0,0xf8000000,0x18000000,0xc0000006,0x1f000,0x1e03c00,0xf01e000,0x780f0003,0xc078001e,
3555+ 0x3c000f0,0x1e001f07,0xff83c000,0x7ffff,0x803ffffc,0x1ffffe0,0xfffff00,0xf00000,0x7800000,0x3c000001,0xe000fff8,0x3c0f0f0,
3556+ 0x3c078000,0xf03c0007,0x81e0003c,0xf0001e0,0x78000f00,0x1f0f801e,0x3c3c0f0,0x3c0780,0x1e03c00,0xf01e000,0x78001fe0,0x1e0007,
3557+ 0x80f1e000,0x780,0x3c00,0x1e000,0xf0000,0x780000,0x3c0001e,0x3c07c00,0xf0007,0x8078003c,0x3c001e0,0x1e000f00,0x780000,0x3c00000,
3558+ 0x1e000000,0xf0000f80,0x1f003e00,0x3c03c003,0xc01e001e,0xf000f0,0x7800780,0x3c003c00,0xf,0x3f003c,0x3c01e0,0x1e00f00,0xf007800,
3559+ 0x7803c007,0x801f000f,0xf001e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3560+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x1,0xe078003f,0xb0000000,0xfc003cf0,0x0,0x3c00,0x1e00,0x101c040,0x1e0000,0x0,0x0,0x1,
3561+ 0xe0001e1f,0x83c0001e,0x7,0xe000fff0,0x3c0780,0x3c03f80,0x7fc0fc00,0x1e0000,0xfff80078,0xfe0007,0xe000003f,0x7fe0,0x1fffff,
3562+ 0xf0000ffc,0xfc00,0x780f81f0,0xf01e003,0xffff003c,0x1e0,0x3c03ff,0xffc01fff,0xfe03c000,0x1fffff,0x80007800,0x780,0x3ffc0000,
3563+ 0x7800001e,0x1ef0f078,0x3c1e03c0,0x780780,0x1fc0f000,0x1e07ffff,0x7ff00,0xf000,0xf0003c0,0xf00f007,0xc3b87c00,0x7c00001,0xfe000000,
3564+ 0xf800003c,0x3c0,0x1e0,0x0,0x0,0x0,0x3c01,0xf000f007,0x800000f0,0xf80780,0x1e0003c,0x1e001,0xf0078007,0x80003c00,0xf000,0x78fc000,
3565+ 0x1e0000f,0x3c0f01e,0x1e01e0,0x1e007c0,0x3c07800,0x7c003e00,0xf0000,0x3c000,0x3c003c0,0x1e007807,0x80003c00,0x7df0003c,0x780000,
3566+ 0x1f00001e,0xf0,0x780,0x0,0x0,0x7800000,0xe7ce000,0x3,0xffff0000,0x0,0xfff,0xf8007fff,0xc0000000,0x1f0,0xffe000,0x1c0003,
3567+ 0xc00fff00,0xe7ce0000,0xf800039,0xf38001cf,0x9c000000,0xe0007800,0x780e,0x701c00,0x0,0x0,0x0,0x0,0x1e0,0x7,0xf0078,0xf00e7ce,
3568+ 0x1f0,0x7f800,0x0,0x780000,0xf0180000,0xf000000e,0x1c0001f,0xe000003c,0xf007,0xe0000000,0x6380000,0xc03fe780,0x3e07c03,0xfffffe00,
3569+ 0x303,0xffc06000,0x0,0x1ffff,0xfe003ffe,0x1fff0,0x0,0x3c003c0,0x1ffe1c00,0x3f00000,0x7,0xffc0001f,0xfc0003e0,0x7c000001,0xfc00000f,
3570+ 0xe000007f,0x1e000,0x1e03c00,0xf01e000,0x780f0003,0xc078001e,0x3c000f0,0x1e001e07,0xff83c000,0x7ffff,0x803ffffc,0x1ffffe0,
3571+ 0xfffff00,0xf00000,0x7800000,0x3c000001,0xe000fff8,0x3c0f078,0x3c078000,0xf03c0007,0x81e0003c,0xf0001e0,0x78000f00,0xf9f001e,
3572+ 0x783c0f0,0x3c0780,0x1e03c00,0xf01e000,0x78001fe0,0x1e0007,0x80f1e000,0x780,0x3c00,0x1e000,0xf0000,0x780000,0x3c0001e,0x3c07800,
3573+ 0xf0003,0xc078001e,0x3c000f0,0x1e000780,0x780000,0x3c00000,0x1e000000,0xf0000f00,0xf003c00,0x3c03c003,0xc01e001e,0xf000f0,
3574+ 0x7800780,0x3c003c00,0xf,0x7f003c,0x3c01e0,0x1e00f00,0xf007800,0x7803c007,0x801f000f,0xf001e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3575+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x1,0xe070001f,0xf8000007,
3576+ 0xf0007cf8,0x7800000,0x3c00,0x1e00,0x1c000,0x1e0000,0x0,0x0,0x1,0xe0001e1f,0x83c0001e,0xf,0xc000fff8,0x780780,0x2000f80,0x7f803e00,
3577+ 0x3e0003,0xfffe007c,0x1fe0000,0x0,0x3ff00,0x0,0x1ff,0x8001f000,0x780f00f0,0x1f00f003,0xffffc03c,0x1e0,0x3c03ff,0xffc01fff,
3578+ 0xfe03c00f,0xf81fffff,0x80007800,0x780,0x3ffe0000,0x7800001e,0xee0f078,0x3c1e03c0,0x7807ff,0xff80f000,0x1e07fffe,0x3ffe0,
3579+ 0xf000,0xf0003c0,0xf00f003,0xc7bc7800,0xfc00000,0xfc000001,0xf000003c,0x3c0,0x1e0,0x0,0x0,0x0,0x3c01,0xe000f80f,0x800001e0,
3580+ 0xf80f00,0x1e0003c,0x3c000,0xf0078007,0x80003c00,0xf000,0x79f8000,0x1e0000f,0x3c0f01e,0x1e03c0,0x1f00780,0x3e0f000,0x7c003e00,
3581+ 0xf0000,0x3c000,0x3c003c0,0x1e007807,0x81e03c00,0x7df0003e,0xf80000,0x3e00003e,0xf0,0x7c0,0xfc000,0x80000000,0x7800000,0x1e7cf000,
3582+ 0x3,0xffff0000,0x0,0x18,0xc0,0x0,0xf80,0x7ffc00,0x380003,0xc00fff01,0xe7cf0000,0x1f000079,0xf3c003cf,0x9e000000,0xe0007000,
3583+ 0x380e,0xe01c00,0x0,0x0,0x0,0x0,0x1e0,0x3,0x800f0078,0xf01e7cf,0x3e0,0x3f000,0x0,0x780000,0xf018001f,0xfff8001e,0x1e0000f,
3584+ 0xc000003c,0xf003,0xe0000000,0x6380000,0xc00fc780,0x7c0f803,0xfffffe00,0x303,0xfe006000,0x0,0x1ffff,0xfe003ffe,0x1ffe0,0x0,
3585+ 0x3c003c0,0xffe1c00,0x3f00000,0x7,0xffc00007,0xf00001f0,0x3e00001f,0xfc0000ff,0xe00007ff,0x3e000,0x3e01e00,0x1f00f000,0xf8078007,
3586+ 0xc03c003e,0x1e001e0,0xf001e07,0xff83c000,0x7ffff,0x803ffffc,0x1ffffe0,0xfffff00,0xf00000,0x7800000,0x3c000001,0xe000fff8,
3587+ 0x3c0f078,0x3c078000,0xf03c0007,0x81e0003c,0xf0001e0,0x78000f00,0x7fe001e,0xf03c0f0,0x3c0780,0x1e03c00,0xf01e000,0x78000fc0,
3588+ 0x1e0007,0x80f1f000,0x780,0x3c00,0x1e000,0xf0000,0x780000,0x3c0001e,0x3c0f800,0x1e0003,0xc0f0001e,0x78000f0,0x3c000780,0x780000,
3589+ 0x3c00000,0x1e000000,0xf0000f00,0xf003c00,0x3c078003,0xe03c001f,0x1e000f8,0xf0007c0,0x78003e00,0x1e,0xf7803c,0x3c01e0,0x1e00f00,
3590+ 0xf007800,0x7803e00f,0x801e000f,0x80f803e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3591+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x1,0xe0f0000f,0xff00001f,0x8000f87c,0x7800000,0x3c00,0x1e00,0x1c000,0x7fffff80,
3592+ 0x0,0x0,0x3,0xc0001e1f,0x83c0001e,0x1f,0x800000fe,0xf00780,0x7c0,0x7f001e00,0x3c0007,0xe03f003f,0x3fe0000,0x0,0x3fc00,0x0,
3593+ 0x7f,0x8001e000,0x781f00f0,0x1e00f003,0xc007e03c,0x1e0,0x3c03c0,0x1e00,0x3c00f,0xf81e0007,0x80007800,0x780,0x3f9f0000,0x7800001e,
3594+ 0xfe0f078,0x3c1e03c0,0x7807ff,0xff00f000,0x1e07fff8,0xfff8,0xf000,0xf0003c0,0xf81f003,0xc7bc7800,0xfe00000,0x78000003,0xe000003c,
3595+ 0x1e0,0x1e0,0x0,0x0,0x0,0x1fffc01,0xe000780f,0x1e0,0x780f00,0x1e0003c,0x3c000,0xf0078007,0x80003c00,0xf000,0x7bf0000,0x1e0000f,
3596+ 0x3c0f01e,0x1e03c0,0xf00780,0x1e0f000,0x3c003c00,0xf8000,0x3c000,0x3c003c0,0x1f00f807,0x81f03c00,0x3fe0001e,0xf00000,0x7c00007c,
3597+ 0xf0,0x3e0,0x3ff801,0x80000000,0x7800000,0x3cfcf800,0x3,0xffff0000,0x0,0x18,0xc0,0x0,0x7c00,0x1fff00,0x700003,0xc00f0003,
3598+ 0xcfcf8000,0x3e0000f3,0xf3e0079f,0x9f000000,0xf000,0x1000,0x0,0x0,0x0,0x0,0x0,0x1f0,0x1,0xc00f0078,0xf03cfcf,0x800007c0,0x1e000,
3599+ 0x0,0x780001,0xe018001f,0xfff8001c,0xe00007,0x8000003c,0xf001,0xf0000000,0x6380000,0xc0000000,0xf81f003,0xfffffe00,0x303,
3600+ 0x87006000,0x0,0x1ffff,0xfe003ffe,0x7f00,0x0,0x3c003c0,0x3fe1c00,0x3f00000,0x7,0xffc00000,0xf8,0x1f0001ff,0xf0000fff,0x80007ffc,
3601+ 0xfc000,0x3c01e00,0x1e00f000,0xf0078007,0x803c003c,0x1e001e0,0xf001e07,0x8003c000,0x78000,0x3c0000,0x1e00000,0xf000000,0xf00000,
3602+ 0x7800000,0x3c000001,0xe000fff8,0x3c0f078,0x3c078000,0xf03c0007,0x81e0003c,0xf0001e0,0x78000f00,0x3fc001e,0x1e03c0f0,0x3c0780,
3603+ 0x1e03c00,0xf01e000,0x78000780,0x1e0007,0x80f0fc00,0x3fff80,0x1fffc00,0xfffe000,0x7fff0003,0xfff8001f,0xffc0001e,0x3c0f000,
3604+ 0x1e0003,0xc0f0001e,0x78000f0,0x3c000780,0x780000,0x3c00000,0x1e000000,0xf0001e00,0xf803c00,0x3c078001,0xe03c000f,0x1e00078,
3605+ 0xf0003c0,0x78001e07,0xfffffe1e,0x1e7803c,0x3c01e0,0x1e00f00,0xf007800,0x7801e00f,0x1e0007,0x807803c0,0x0,0x0,0x0,0x0,0x0,
3606+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x3,0xc0f00007,
3607+ 0xffc0007e,0xf03e,0x7800000,0x3c00,0x1e00,0x1c000,0x7fffff80,0x0,0x0,0x3,0xc0001e1f,0x83c0001e,0x3f,0x3e,0xf00780,0x3c0,0x7e001e00,
3608+ 0x7c000f,0x800f001f,0xffde0000,0x0,0x3e000,0x0,0xf,0x8003e000,0x781e0070,0x1e00f003,0xc001f03c,0x1e0,0x3c03c0,0x1e00,0x3c00f,
3609+ 0xf81e0007,0x80007800,0x780,0x3f1f0000,0x7800001e,0x7c0f078,0x1e1e03c0,0x7807ff,0xfc00f000,0x1e07fffe,0xffc,0xf000,0xf0003c0,
3610+ 0x781e003,0xc71c7800,0x1ff00000,0x78000003,0xe000003c,0x1e0,0x1e0,0x0,0x0,0x0,0xffffc01,0xe000780f,0x1e0,0x780fff,0xffe0003c,
3611+ 0x3c000,0xf0078007,0x80003c00,0xf000,0x7ff0000,0x1e0000f,0x3c0f01e,0x1e03c0,0xf00780,0x1e0f000,0x3c003c00,0x7f000,0x3c000,
3612+ 0x3c003c0,0xf00f007,0xc1f07c00,0x1fc0001f,0x1f00000,0xfc000ff8,0xf0,0x1ff,0xfffe07,0x80000000,0x7800000,0x7ffcfc00,0x0,0xf000000,
3613+ 0x0,0x18,0xc0,0x0,0x3e000,0x1ff80,0xe00003,0xc00f0007,0xffcfc000,0x3e0001ff,0xf3f00fff,0x9f800000,0x6000,0x0,0x0,0x7c000,
3614+ 0x0,0x0,0x0,0xfe,0x0,0xe00f007f,0xff07ffcf,0xc0000fc0,0x1e000,0x0,0x780001,0xe018001f,0xfff8001c,0xe00007,0x80000000,0xf800,
3615+ 0xf0000000,0x6380000,0xc0000000,0x1f03c000,0x1e00,0x303,0x83806000,0x0,0x78,0x0,0x0,0x0,0x3c003c0,0xfe1c00,0x3f00000,0x0,
3616+ 0x0,0x3c,0xf801fff,0xfff8,0x7ffc0,0x1f8000,0x3c01e00,0x1e00f000,0xf0078007,0x803c003c,0x1e001e0,0xf003c07,0x8003c000,0x78000,
3617+ 0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0x3c0f03c,0x3c078000,0xf03c0007,0x81e0003c,0xf0001e0,
3618+ 0x78000f00,0x1f8001e,0x1e03c0f0,0x3c0780,0x1e03c00,0xf01e000,0x78000780,0x1e000f,0x80f0ff00,0x1ffff80,0xffffc00,0x7fffe003,
3619+ 0xffff001f,0xfff800ff,0xffc007ff,0xffc0f000,0x1fffff,0xc0fffffe,0x7fffff0,0x3fffff80,0x780000,0x3c00000,0x1e000000,0xf0001e00,
3620+ 0x7803c00,0x3c078001,0xe03c000f,0x1e00078,0xf0003c0,0x78001e07,0xfffffe1e,0x3c7803c,0x3c01e0,0x1e00f00,0xf007800,0x7801f01f,
3621+ 0x1e0007,0x807c07c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3622+ 0x0,0x0,0x0,0x0,0x780000,0x3,0xc0f00000,0xfff003f0,0x1f00f03e,0x7800000,0x3c00,0x1e00,0x1c000,0x7fffff80,0x0,0x7ff80000,0x3,
3623+ 0xc0001e0f,0x3c0001e,0x7e,0x1f,0x1e00780,0x3e0,0x7e000f00,0x78000f,0x7800f,0xff9e0000,0x0,0x3fc00,0x0,0x7f,0x8003c000,0x781e0070,
3624+ 0x3e00f803,0xc000f03c,0x1e0,0x3c03c0,0x1e00,0x3c00f,0xf81e0007,0x80007800,0x780,0x3e0f8000,0x7800001e,0x7c0f078,0x1e1e03c0,
3625+ 0x7807ff,0xf000f000,0x1e07807f,0xfe,0xf000,0xf0003c0,0x781e003,0xc71c7800,0x3ef00000,0x78000007,0xc000003c,0x1e0,0x1e0,0x0,
3626+ 0x0,0x0,0x1ffffc01,0xe000780f,0x1e0,0x780fff,0xffe0003c,0x3c000,0xf0078007,0x80003c00,0xf000,0x7ff0000,0x1e0000f,0x3c0f01e,
3627+ 0x1e03c0,0xf00780,0x1e0f000,0x3c003c00,0x7ff80,0x3c000,0x3c003c0,0xf00f003,0xc1f07800,0x1fc0000f,0x1e00000,0xf8000ff0,0xf0,
3628+ 0xff,0xffffff,0x80000000,0x3fffc000,0xfff9fe00,0x0,0xf000000,0x0,0x18,0xc0,0x0,0x1f0000,0x1fc0,0x1c00003,0xc00f000f,0xff9fe000,
3629+ 0x7c0003ff,0xe7f81fff,0x3fc00000,0x0,0x0,0x0,0xfe000,0x1ffffc0f,0xfffffc00,0x0,0xff,0xf0000000,0x700f007f,0xff0fff9f,0xe0000f80,
3630+ 0x1e000,0x0,0x780001,0xe018001f,0xfff8001c,0xe00fff,0xffc00000,0xf800,0xf0000000,0x6380000,0xc0ffff80,0x3e078000,0x1e00,0x7ff80303,
3631+ 0x83c06000,0x0,0x78,0x0,0x0,0x0,0x3c003c0,0xe1c00,0x3f00000,0x0,0x7f,0xff00001e,0x7c1fff0,0xfff80,0x7ffc00,0x3f0000,0x7c01f00,
3632+ 0x3e00f801,0xf007c00f,0x803e007c,0x1f003e0,0xf803c07,0x8003c000,0x78000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,
3633+ 0xe0001e00,0x3c0f03c,0x3c078000,0xf03c0007,0x81e0003c,0xf0001e0,0x78000f00,0x1f8001e,0x3c03c0f0,0x3c0780,0x1e03c00,0xf01e000,
3634+ 0x78000780,0x1e001f,0xf07f80,0x3ffff80,0x1ffffc00,0xffffe007,0xffff003f,0xfff801ff,0xffc03fff,0xffc0f000,0x1fffff,0xc0fffffe,
3635+ 0x7fffff0,0x3fffff80,0x780000,0x3c00000,0x1e000000,0xf0001e00,0x7803c00,0x3c078001,0xe03c000f,0x1e00078,0xf0003c0,0x78001e07,
3636+ 0xfffffe1e,0x787803c,0x3c01e0,0x1e00f00,0xf007800,0x7800f01e,0x1e0007,0x803c0780,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3637+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x1ff,0xffff8000,0x3ff80fc0,0x7fc1e01f,
3638+ 0x7800000,0x3c00,0x1e00,0x0,0x7fffff80,0x0,0x7ff80000,0x7,0x80001e00,0x3c0001e,0xfc,0xf,0x1e00780,0x1e0,0x7c000f00,0x78000f,
3639+ 0x78007,0xff1e0000,0x0,0x3ff00,0x0,0x1ff,0x8003c000,0x781e0070,0x3c007803,0xc000f03c,0x1e0,0x3c03c0,0x1e00,0x3c000,0x781e0007,
3640+ 0x80007800,0x780,0x3c07c000,0x7800001e,0x7c0f078,0xf1e03c0,0x780780,0xf000,0x1e07801f,0x3e,0xf000,0xf0003c0,0x781e003,0xcf1c7800,
3641+ 0x3cf80000,0x7800000f,0x8000003c,0xf0,0x1e0,0x0,0x0,0x0,0x3ffffc01,0xe000780f,0x1e0,0x780fff,0xffe0003c,0x3c000,0xf0078007,
3642+ 0x80003c00,0xf000,0x7ff8000,0x1e0000f,0x3c0f01e,0x1e03c0,0xf00780,0x1e0f000,0x3c003c00,0x3fff0,0x3c000,0x3c003c0,0xf81f003,
3643+ 0xc3b87800,0xf80000f,0x1e00001,0xf0000ff0,0xf0,0xff,0xf03fff,0x80000000,0x3fff8001,0xfff1ff00,0x0,0xf000000,0x0,0x18,0xc0,
3644+ 0x0,0x380000,0x7c0,0x3c00003,0xc00f001f,0xff1ff000,0xf80007ff,0xc7fc3ffe,0x3fe00000,0x0,0x0,0x0,0x1ff000,0x7ffffe1f,0xffffff00,
3645+ 0x0,0x7f,0xfe000000,0x780f007f,0xff1fff1f,0xf0001f00,0x1e000,0x0,0x780001,0xe0180000,0xf000001c,0xe00fff,0xffc00000,0x7c00,
3646+ 0xf0000000,0x31c0001,0x80ffff80,0x3e078000,0x1e00,0x7ff80183,0x81c0c000,0x0,0x78,0x0,0x0,0x0,0x3c003c0,0xe1c00,0x3f00000,
3647+ 0x0,0x7f,0xff00001e,0x7c7ff03,0xc03ff8fe,0x1ffc0f0,0x7e0000,0x7800f00,0x3c007801,0xe003c00f,0x1e0078,0xf003c0,0x7803c07,0x8003c000,
3648+ 0x78000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0x3c0f01e,0x3c078000,0xf03c0007,0x81e0003c,
3649+ 0xf0001e0,0x78000f00,0x3fc001e,0x7803c0f0,0x3c0780,0x1e03c00,0xf01e000,0x78000780,0x1e007f,0xf03fe0,0x7ffff80,0x3ffffc01,
3650+ 0xffffe00f,0xffff007f,0xfff803ff,0xffc07fff,0xffc0f000,0x1fffff,0xc0fffffe,0x7fffff0,0x3fffff80,0x780000,0x3c00000,0x1e000000,
3651+ 0xf0001e00,0x7803c00,0x3c078001,0xe03c000f,0x1e00078,0xf0003c0,0x78001e07,0xfffffe1e,0x707803c,0x3c01e0,0x1e00f00,0xf007800,
3652+ 0x7800f01e,0x1e0007,0x803c0780,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3653+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x1ff,0xffff8000,0x30f81f00,0xffe1e00f,0x87800000,0x3c00,0x1e00,0x0,0x1e0000,0x0,0x7ff80000,
3654+ 0x7,0x80001e00,0x3c0001e,0x1f8,0x7,0x83c00780,0x1e0,0x7c000f00,0xf8001e,0x3c001,0xfc1e0000,0x0,0x7fe0,0x0,0xffc,0x3c000,0x781e0070,
3655+ 0x3ffff803,0xc000783c,0x1e0,0x3c03c0,0x1e00,0x3c000,0x781e0007,0x80007800,0x780,0x3c07c000,0x7800001e,0x380f078,0xf1e03c0,
3656+ 0x780780,0xf000,0x1e07800f,0x8000001e,0xf000,0xf0003c0,0x3c3c003,0xcf1e7800,0x7c780000,0x7800000f,0x8000003c,0xf0,0x1e0,0x0,
3657+ 0x0,0x0,0x7f003c01,0xe000780f,0x1e0,0x780fff,0xffe0003c,0x3c000,0xf0078007,0x80003c00,0xf000,0x7f7c000,0x1e0000f,0x3c0f01e,
3658+ 0x1e03c0,0xf00780,0x1e0f000,0x3c003c00,0xfff8,0x3c000,0x3c003c0,0x781e003,0xc3b87800,0x1fc00007,0x83e00003,0xe0000ff8,0xf0,
3659+ 0x1ff,0xc007fe,0x0,0x7fff8001,0xffe3ff00,0x0,0x1e000000,0x0,0x18,0xc0,0x0,0x0,0x3c0,0x7800003,0xc00f001f,0xfe3ff000,0xf80007ff,
3660+ 0x8ffc3ffc,0x7fe00000,0x0,0x0,0x0,0x1ff000,0x0,0x0,0x0,0x1f,0xff000000,0x3c0f007f,0xff1ffe3f,0xf0003e00,0x1e000,0x0,0x780001,
3661+ 0xe0180000,0xf000001e,0x1e00fff,0xffc00000,0x3f00,0xf0000000,0x31c0001,0x80ffff80,0x1f03c000,0x1e00,0x7ff80183,0x81c0c000,
3662+ 0x0,0x78,0x0,0x0,0x0,0x3c003c0,0xe1c00,0x0,0x0,0x7f,0xff00003c,0xf87f007,0xc03f83ff,0x81fc01f0,0x7c0000,0x7ffff00,0x3ffff801,
3663+ 0xffffc00f,0xfffe007f,0xfff003ff,0xff807fff,0x8003c000,0x78000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,
3664+ 0xe0001e00,0x3c0f01e,0x3c078000,0xf03c0007,0x81e0003c,0xf0001e0,0x78000f00,0x7fe001e,0xf003c0f0,0x3c0780,0x1e03c00,0xf01e000,
3665+ 0x78000780,0x1ffffe,0xf00ff0,0xfe00780,0x7f003c03,0xf801e01f,0xc00f00fe,0x7807f0,0x3c0ffff,0xffc0f000,0x1fffff,0xc0fffffe,
3666+ 0x7fffff0,0x3fffff80,0x780000,0x3c00000,0x1e000000,0xf0001e00,0x7803c00,0x3c078001,0xe03c000f,0x1e00078,0xf0003c0,0x78001e00,
3667+ 0x1e,0xf07803c,0x3c01e0,0x1e00f00,0xf007800,0x7800783e,0x1e0007,0x801e0f80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3668+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x1ff,0xffff8000,0x307c0801,0xe1f1e00f,0x87000000,
3669+ 0x3c00,0x1e00,0x0,0x1e0000,0x0,0x7ff80000,0xf,0x1e00,0x3c0001e,0x3f0,0x7,0x83fffffc,0x1e0,0x7c000f00,0xf0001e,0x3c000,0x3e0000,
3670+ 0x0,0x1ffc,0x1fffff,0xf0007ff0,0x3c000,0x781e0070,0x7ffffc03,0xc000781e,0x1e0,0x7803c0,0x1e00,0x3c000,0x781e0007,0x80007800,
3671+ 0x780,0x3c03e000,0x7800001e,0xf078,0x79e03c0,0x780780,0xf000,0x1e078007,0x8000000f,0xf000,0xf0003c0,0x3c3c001,0xee0ef000,
3672+ 0xf87c0000,0x7800001f,0x3c,0x78,0x1e0,0x0,0x0,0x0,0x7c003c01,0xe000780f,0x1e0,0x780f00,0x3c,0x3c000,0xf0078007,0x80003c00,
3673+ 0xf000,0x7e3e000,0x1e0000f,0x3c0f01e,0x1e03c0,0xf00780,0x1e0f000,0x3c003c00,0x1ffc,0x3c000,0x3c003c0,0x781e003,0xe3b8f800,
3674+ 0x1fc00007,0x83c00007,0xc00000fc,0xf0,0x3e0,0x8001f8,0x0,0x7800000,0xffc7fe00,0x0,0x1e000000,0x0,0x18,0xc0,0x0,0x0,0x1e0,
3675+ 0xf000003,0xc00f000f,0xfc7fe001,0xf00003ff,0x1ff81ff8,0xffc00000,0x0,0x0,0x0,0x1ff000,0x0,0x0,0x0,0x3,0xff800000,0x1e0f0078,
3676+ 0xffc7f,0xe0007c00,0x1e000,0x0,0x780001,0xe0180000,0xf000000e,0x1c00007,0x80000000,0x1f81,0xe0000000,0x38e0003,0x80000000,
3677+ 0xf81f000,0x1e00,0x7ff801c3,0x80e1c000,0x0,0x78,0x0,0x0,0x0,0x3c003c0,0xe1c00,0x0,0x0,0x0,0xf8,0x1f070007,0xc03803ff,0xc1c001f0,
3678+ 0xf80000,0xfffff00,0x7ffff803,0xffffc01f,0xfffe00ff,0xfff007ff,0xffc07fff,0x8001e000,0x78000,0x3c0000,0x1e00000,0xf000000,
3679+ 0xf00000,0x7800000,0x3c000001,0xe0001e00,0x780f00f,0x3c078000,0xf03c0007,0x81e0003c,0xf0001e0,0x78000f00,0xf9f001e,0xf003c0f0,
3680+ 0x3c0780,0x1e03c00,0xf01e000,0x78000780,0x1ffffc,0xf003f8,0xf800780,0x7c003c03,0xe001e01f,0xf00f8,0x7807c0,0x3c0fc1e,0xf000,
3681+ 0x1e0000,0xf00000,0x7800000,0x3c000000,0x780000,0x3c00000,0x1e000000,0xf0001e00,0x7803c00,0x3c078001,0xe03c000f,0x1e00078,
3682+ 0xf0003c0,0x78001e00,0x1e,0x1e07803c,0x3c01e0,0x1e00f00,0xf007800,0x7800783c,0x1e0007,0x801e0f00,0x0,0x0,0x0,0x0,0x0,0x0,
3683+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ff,0xffff8000,0x303c0001,
3684+ 0xc071e007,0xcf000000,0x3c00,0x1e00,0x0,0x1e0000,0x0,0x0,0xf,0xf00,0x780001e,0x7e0,0x7,0x83fffffc,0x1e0,0x7c000f00,0x1f0001e,
3685+ 0x3c000,0x3c0000,0x0,0x3ff,0x801fffff,0xf003ff80,0x3c000,0x781e0070,0x7ffffc03,0xc000781e,0x1e0,0x7803c0,0x1e00,0x1e000,0x781e0007,
3686+ 0x80007800,0x780,0x3c01f000,0x7800001e,0xf078,0x79e03c0,0xf00780,0xf000,0x3e078007,0xc000000f,0xf000,0xf0003c0,0x3c3c001,
3687+ 0xee0ef000,0xf03e0000,0x7800003e,0x3c,0x78,0x1e0,0x0,0x0,0x0,0xf8003c01,0xe000780f,0x1e0,0x780f00,0x3c,0x3c000,0xf0078007,
3688+ 0x80003c00,0xf000,0x7c3e000,0x1e0000f,0x3c0f01e,0x1e03c0,0xf00780,0x1e0f000,0x3c003c00,0xfc,0x3c000,0x3c003c0,0x3c3e001,0xe7b8f000,
3689+ 0x3fe00007,0xc7c0000f,0xc000003e,0xf0,0x7c0,0x0,0x0,0x7c00000,0x7fcffc00,0x0,0x1e000000,0x0,0x18,0xc0,0x0,0x0,0x1e0,0x1e000003,
3690+ 0xc00f0007,0xfcffc003,0xe00001ff,0x3ff00ff9,0xff800000,0x0,0x0,0x0,0x1ff000,0x0,0x0,0x0,0x0,0x1f800000,0xf0f0078,0x7fcff,
3691+ 0xc000fc00,0x1e000,0x0,0x780001,0xe0180000,0xf000000f,0x87c00007,0x80000000,0xfe3,0xe0000000,0x18780c3,0x0,0x7c0f800,0x1e00,
3692+ 0xc3,0x80e18000,0x0,0x78,0x0,0x0,0x0,0x3c003c0,0xe1c00,0x0,0x0,0x0,0x1f0,0x3e00000f,0xc0000303,0xe00003f0,0xf00000,0xfffff80,
3693+ 0x7ffffc03,0xffffe01f,0xffff00ff,0xfff807ff,0xffc07fff,0x8001e000,0x78000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,
3694+ 0x3c000001,0xe0001e00,0x780f00f,0x3c078001,0xe03c000f,0x1e00078,0xf0003c0,0x78001e00,0x1f0f801f,0xe00780f0,0x3c0780,0x1e03c00,
3695+ 0xf01e000,0x78000780,0x1ffff8,0xf000f8,0x1f000780,0xf8003c07,0xc001e03e,0xf01f0,0x780f80,0x3c1f01e,0xf000,0x1e0000,0xf00000,
3696+ 0x7800000,0x3c000000,0x780000,0x3c00000,0x1e000000,0xf0001e00,0x7803c00,0x3c078001,0xe03c000f,0x1e00078,0xf0003c0,0x78001e00,
3697+ 0x1e,0x3c07803c,0x3c01e0,0x1e00f00,0xf007800,0x78007c7c,0x1e0007,0x801f1f00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3698+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x81c00000,0x303c0003,0x8039e003,0xef000000,
3699+ 0x3c00,0x1e00,0x0,0x1e0000,0x0,0x0,0x1e,0xf00,0x780001e,0xfc0,0x7,0x83fffffc,0x1e0,0x3c000f00,0x1e0001e,0x3c000,0x3c0000,
3700+ 0x0,0x7f,0xe01fffff,0xf00ffc00,0x3c000,0x781f00f0,0x7ffffc03,0xc000781e,0x1e0,0x7803c0,0x1e00,0x1e000,0x781e0007,0x80007800,
3701+ 0x780,0x3c01f000,0x7800001e,0xf078,0x7de01e0,0xf00780,0x7800,0x3c078003,0xc000000f,0xf000,0xf0003c0,0x3e7c001,0xee0ef001,
3702+ 0xf01e0000,0x7800003e,0x3c,0x3c,0x1e0,0x0,0x0,0x0,0xf0003c01,0xe000780f,0x1e0,0x780f00,0x3c,0x3c000,0xf0078007,0x80003c00,
3703+ 0xf000,0x781f000,0x1e0000f,0x3c0f01e,0x1e03c0,0xf00780,0x1e0f000,0x3c003c00,0x3e,0x3c000,0x3c003c0,0x3c3c001,0xe71cf000,0x7df00003,
3704+ 0xc780000f,0x8000003e,0xf0,0x780,0x0,0x0,0x3c00000,0x3fcff800,0x0,0x1e000000,0x0,0x18,0xc0,0x0,0x1f00fc,0x1e0,0x1e000001,
3705+ 0xe00f0003,0xfcff8003,0xe00000ff,0x3fe007f9,0xff000000,0x0,0x0,0x0,0x1ff000,0x0,0x0,0x0,0x0,0x7c00000,0xf0f0078,0x3fcff,0x8000f800,
3706+ 0x1e000,0x0,0x780001,0xe0180000,0xf000001f,0xffe00007,0x8000003c,0x7ff,0xc0000000,0x1c3ffc7,0x0,0x3e07c00,0x1e00,0xe3,0x80738000,
3707+ 0x0,0x78,0x0,0x0,0x0,0x3c003c0,0xe1c00,0x0,0x0,0x0,0x3e0,0x7c00001d,0xc0000001,0xe0000770,0x1f00000,0xfffff80,0x7ffffc03,
3708+ 0xffffe01f,0xffff00ff,0xfff807ff,0xffc07fff,0x8001e000,0x78000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,
3709+ 0xe0001e00,0x780f00f,0x3c03c001,0xe01e000f,0xf00078,0x78003c0,0x3c001e00,0x3e07c01f,0xc00780f0,0x3c0780,0x1e03c00,0xf01e000,
3710+ 0x78000780,0x1fffc0,0xf0007c,0x1e000780,0xf0003c07,0x8001e03c,0xf01e0,0x780f00,0x3c1e01e,0xf000,0x1e0000,0xf00000,0x7800000,
3711+ 0x3c000000,0x780000,0x3c00000,0x1e000000,0xf0001e00,0x7803c00,0x3c078001,0xe03c000f,0x1e00078,0xf0003c0,0x78001e00,0x1e,0x7807803c,
3712+ 0x3c01e0,0x1e00f00,0xf007800,0x78003c78,0x1e0007,0x800f1e00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3713+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x83c00000,0x303c0003,0x8039e001,0xee000000,0x1e00,0x3c00,
3714+ 0x0,0x1e0000,0x0,0x0,0x1e,0xf00,0x780001e,0x1f80,0x7,0x83fffffc,0x1e0,0x3c000f00,0x1e0001e,0x3c000,0x3c0000,0x0,0x1f,0xfc1fffff,
3715+ 0xf07ff000,0x0,0x780f00f0,0x78003c03,0xc000781e,0x1e0,0xf803c0,0x1e00,0x1e000,0x781e0007,0x80007800,0x780,0x3c00f800,0x7800001e,
3716+ 0xf078,0x3de01e0,0xf00780,0x7800,0x3c078003,0xe000000f,0xf000,0xf0003c0,0x1e78001,0xfe0ff003,0xe01f0000,0x7800007c,0x3c,0x3c,
3717+ 0x1e0,0x0,0x0,0x0,0xf0007c01,0xe000f80f,0x800001e0,0xf80f00,0x3c,0x1e001,0xf0078007,0x80003c00,0xf000,0x780f800,0x1e0000f,
3718+ 0x3c0f01e,0x1e03c0,0x1f00780,0x3e0f000,0x7c003c00,0x1e,0x3c000,0x3c003c0,0x3c3c001,0xe71cf000,0xf8f80003,0xe780001f,0x1e,
3719+ 0xf0,0x780,0x0,0x0,0x3c00000,0x1ffff000,0x0,0x1e000000,0x0,0x18,0xc0,0x0,0x3bc1de,0x1e0,0xf000001,0xe00f0001,0xffff0007,0xc000007f,
3720+ 0xffc003ff,0xfe000000,0x0,0x0,0x0,0xfe000,0x0,0x0,0x0,0x0,0x3c00000,0x1e0f0078,0x1ffff,0x1f000,0x1e000,0x0,0x780000,0xf0180000,
3721+ 0xf000001f,0xfff00007,0x8000003c,0x1ff,0x80000000,0xe0ff0e,0x0,0x1f03e00,0x1e00,0x70,0x70000,0x0,0x78,0x0,0x0,0x0,0x3c003c0,
3722+ 0xe1c00,0x0,0x0,0x0,0x7c0,0xf8000019,0xc0000000,0xe0000670,0x1e00000,0xf000780,0x78003c03,0xc001e01e,0xf00f0,0x780780,0x3c0f807,
3723+ 0x8001e000,0x78000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0xf80f007,0xbc03c001,0xe01e000f,
3724+ 0xf00078,0x78003c0,0x3c001e00,0x7c03e00f,0x800780f0,0x3c0780,0x1e03c00,0xf01e000,0x78000780,0x1e0000,0xf0003c,0x1e000f80,
3725+ 0xf0007c07,0x8003e03c,0x1f01e0,0xf80f00,0x7c1e01e,0xf800,0x1e0000,0xf00000,0x7800000,0x3c000000,0x780000,0x3c00000,0x1e000000,
3726+ 0xf0001e00,0x7803c00,0x3c078003,0xe03c001f,0x1e000f8,0xf0007c0,0x78003e00,0x1f8001f,0xf00f803c,0x3c01e0,0x1e00f00,0xf007800,
3727+ 0x78003e78,0x1e000f,0x800f9e00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3728+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf,0x3c00000,0x303c0003,0x8039f001,0xfe000000,0x1e00,0x3c00,0x0,0x1e0000,0x0,0x0,0x3c,0xf00,
3729+ 0x780001e,0x3f00,0x7,0x80000780,0x3e0,0x3e000f00,0x3c0001e,0x3c000,0x7c0000,0x0,0x3,0xfe000000,0xff8000,0x0,0x3c0f81f0,0xf0001e03,
3730+ 0xc000780f,0x1e0,0xf003c0,0x1e00,0xf000,0x781e0007,0x80007800,0x780,0x3c007c00,0x7800001e,0xf078,0x3de01e0,0xf00780,0x7800,
3731+ 0x3c078001,0xe000000f,0xf000,0xf0003c0,0x1e78001,0xfc07f003,0xe00f0000,0x78000078,0x3c,0x1e,0x1e0,0x0,0x0,0x0,0xf0007c01,
3732+ 0xf000f007,0x800000f0,0xf80780,0x3c,0x1e001,0xf0078007,0x80003c00,0xf000,0x7807c00,0x1e0000f,0x3c0f01e,0x1e01e0,0x1e007c0,
3733+ 0x3c07800,0x7c003c00,0x1e,0x3c000,0x3c007c0,0x1e78001,0xe71df000,0xf8f80001,0xef80003e,0x1e,0xf0,0x780,0x0,0x0,0x3c00000,
3734+ 0xfffe000,0x0,0x3e000000,0x0,0x18,0x7fff,0xc0000000,0x60c306,0x1e0,0x7800001,0xe00f0000,0xfffe0007,0x8000003f,0xff8001ff,
3735+ 0xfc000000,0x0,0x0,0x0,0x7c000,0x0,0x0,0x0,0x0,0x3c00000,0x3c0f0078,0xfffe,0x3e000,0x1e000,0x0,0x780000,0xf0180000,0xf000003c,
3736+ 0xfcf80007,0x8000003c,0x7f,0x0,0x70001c,0x0,0xf81f00,0x0,0x38,0xe0000,0x0,0x0,0x0,0x0,0x0,0x3c003c0,0xe1c00,0x0,0x0,0x0,0xf81,
3737+ 0xf0000039,0xc0000000,0xe0000e70,0x1e00000,0x1e0003c0,0xf0001e07,0x8000f03c,0x781e0,0x3c0f00,0x1e0f007,0x8000f000,0x78000,
3738+ 0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0xf00f007,0xbc03c001,0xe01e000f,0xf00078,0x78003c0,
3739+ 0x3c001e00,0xf801f00f,0x800780f0,0x3c0780,0x1e03c00,0xf01e000,0x78000780,0x1e0000,0xf0003c,0x1e000f80,0xf0007c07,0x8003e03c,
3740+ 0x1f01e0,0xf80f00,0x7c1e01e,0x7800,0xf0000,0x780000,0x3c00000,0x1e000000,0x780000,0x3c00000,0x1e000000,0xf0000f00,0xf003c00,
3741+ 0x3c03c003,0xc01e001e,0xf000f0,0x7800780,0x3c003c00,0x1f8000f,0xe00f003c,0x7c01e0,0x3e00f00,0x1f007800,0xf8001ef8,0x1f000f,
3742+ 0x7be00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3743+ 0x0,0x0,0xf,0x3c00000,0x307c0003,0x8038f000,0xfc000000,0x1e00,0x3c00,0x0,0x1e0000,0xfc0000,0x0,0x7e00003c,0x780,0xf00001e,
3744+ 0x7e00,0xf,0x80000780,0x3c0,0x3e001e00,0x3c0001f,0x7c000,0x780007,0xe000003f,0x0,0xfe000000,0xfe0000,0x0,0x3c07c3f0,0xf0001e03,
3745+ 0xc000f80f,0x800001e0,0x1f003c0,0x1e00,0xf000,0x781e0007,0x80007800,0x4000f80,0x3c003c00,0x7800001e,0xf078,0x1fe01f0,0x1f00780,
3746+ 0x7c00,0x7c078001,0xf000001f,0xf000,0xf0003c0,0x1e78001,0xfc07f007,0xc00f8000,0x780000f8,0x3c,0x1e,0x1e0,0x0,0x0,0x0,0xf0007c01,
3747+ 0xf000f007,0xc00000f0,0xf80780,0x3c,0x1f003,0xf0078007,0x80003c00,0xf000,0x7807c00,0x1e0000f,0x3c0f01e,0x1e01e0,0x1e007c0,
3748+ 0x3c07800,0x7c003c00,0x1e,0x3c000,0x3c007c0,0x1e78000,0xfe0fe001,0xf07c0001,0xef00007c,0x1e,0xf0,0x780,0x0,0x0,0x1e00000,
3749+ 0x7cfc000,0xfc00000,0x3c00000f,0xc3f00000,0x18,0x7fff,0xc0000000,0x406303,0x3e0,0x3c00001,0xf00f0000,0x7cfc000f,0x8000001f,
3750+ 0x3f0000f9,0xf8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00000,0x780700f8,0x7cfc,0x7c000,0x1e000,0x0,0x780000,0xf8180000,
3751+ 0xf0000070,0x3c0007,0x8000003c,0x3f,0x80000000,0x3c0078,0x0,0x780f00,0x0,0x1e,0x3c0000,0x0,0x0,0x0,0x0,0x0,0x3e007c0,0xe1c00,
3752+ 0x0,0x0,0x0,0xf01,0xe0000071,0xc0000000,0xe0001c70,0x1e00000,0x1e0003c0,0xf0001e07,0x8000f03c,0x781e0,0x3c0f00,0x1e0f007,
3753+ 0x8000f800,0x78000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0x1f00f003,0xfc03e003,0xe01f001f,
3754+ 0xf800f8,0x7c007c0,0x3e003e01,0xf000f80f,0xf00f0,0x3c0780,0x1e03c00,0xf01e000,0x78000780,0x1e0000,0xf0003c,0x1e000f80,0xf0007c07,
3755+ 0x8003e03c,0x1f01e0,0xf80f00,0x7c1e01e,0x7c00,0xf0000,0x780000,0x3c00000,0x1e000000,0x780000,0x3c00000,0x1e000000,0xf0000f00,
3756+ 0xf003c00,0x3c03c003,0xc01e001e,0xf000f0,0x7800780,0x3c003c00,0x1f8000f,0xc00f003c,0x7c01e0,0x3e00f00,0x1f007800,0xf8001ef0,
3757+ 0x1f000f,0x7bc00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3758+ 0x0,0x0,0x0,0x0,0x780000,0xf,0x3800040,0x30780003,0x8038f800,0x78000000,0x1e00,0x3c00,0x0,0x1e0000,0xfc0000,0x0,0x7e000078,
3759+ 0x780,0x1f00001e,0xfc00,0x20001f,0x780,0x80007c0,0x1f001e00,0x7c0000f,0x78000,0xf80007,0xe000003f,0x0,0x1e000000,0xf00000,
3760+ 0x3c000,0x3c03fff0,0xf0001e03,0xc001f007,0x800101e0,0x7e003c0,0x1e00,0x7800,0x781e0007,0x80007800,0x6000f00,0x3c003e00,0x7800001e,
3761+ 0xf078,0x1fe00f0,0x1e00780,0x3c00,0x78078000,0xf020001e,0xf000,0x7800780,0xff0001,0xfc07f00f,0x8007c000,0x780001f0,0x3c,0xf,
3762+ 0x1e0,0x0,0x0,0x0,0xf800fc01,0xf801f007,0xc00100f8,0x1f807c0,0x40003c,0xf807,0xf0078007,0x80003c00,0xf000,0x7803e00,0x1f0000f,
3763+ 0x3c0f01e,0x1e01f0,0x3e007e0,0x7c07c00,0xfc003c00,0x1e,0x3e000,0x3e007c0,0x1ff8000,0xfe0fe003,0xe03e0001,0xff0000fc,0x1e,
3764+ 0xf0,0x780,0x0,0x0,0x1f00080,0x3cf8000,0xfc00000,0x3c00001f,0x83f00000,0x18,0xc0,0x0,0xc06203,0x40003c0,0x1c00000,0xf80f0000,
3765+ 0x3cf8001f,0xf,0x3e000079,0xf0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00000,0x700780fc,0x3cf8,0xfc000,0x1e000,0x0,0x780000,
3766+ 0x7c180000,0xf0000020,0x100007,0x8000003c,0xf,0x80000000,0x1f01f0,0x0,0x380700,0x0,0xf,0x80f80000,0x0,0x0,0x0,0x0,0x0,0x3e007c0,
3767+ 0xe1c00,0x0,0x0,0x0,0xe01,0xc0000071,0xc0000001,0xc0001c70,0x1e00040,0x1e0003c0,0xf0001e07,0x8000f03c,0x781e0,0x3c0f00,0x1e0f007,
3768+ 0x80007800,0x10078000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e00,0x7e00f003,0xfc01e003,0xc00f001e,
3769+ 0x7800f0,0x3c00780,0x1e003c00,0xe000700f,0x800f0078,0x7803c0,0x3c01e00,0x1e00f000,0xf0000780,0x1e0000,0xf0003c,0x1f001f80,
3770+ 0xf800fc07,0xc007e03e,0x3f01f0,0x1f80f80,0xfc1e01f,0x7c00,0x100f8000,0x807c0004,0x3e00020,0x1f000100,0x780000,0x3c00000,0x1e000000,
3771+ 0xf0000f80,0x1f003c00,0x3c03e007,0xc01f003e,0xf801f0,0x7c00f80,0x3e007c00,0x1f8000f,0x801f003e,0x7c01f0,0x3e00f80,0x1f007c00,
3772+ 0xf8001ff0,0x1f801f,0x7fc00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3773+ 0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0xf,0x7800078,0x31f80001,0xc070fc00,0xfc000000,0x1e00,0x7c00,0x0,0x1e0000,0xfc0000,0x0,0x7e000078,
3774+ 0x7c0,0x1f00001e,0x1f000,0x38003f,0x780,0xe000f80,0x1f803e00,0x780000f,0x800f8000,0x1f00007,0xe000003f,0x0,0x2000000,0x800000,
3775+ 0x3c000,0x3e01ff71,0xf0001f03,0xc007f007,0xc00301e0,0x1fc003c0,0x1e00,0x7c00,0x781e0007,0x80007800,0x7801f00,0x3c001f00,0x7800001e,
3776+ 0xf078,0xfe00f8,0x3e00780,0x3e00,0xf8078000,0xf838003e,0xf000,0x7c00f80,0xff0000,0xfc07e00f,0x8003c000,0x780001e0,0x3c,0xf,
3777+ 0x1e0,0x0,0x0,0x0,0xf801fc01,0xfc03e003,0xe003007c,0x3f803e0,0x1c0003c,0xfc0f,0xf0078007,0x80003c00,0xf000,0x7801f00,0xf8000f,
3778+ 0x3c0f01e,0x1e00f8,0x7c007f0,0xf803e01,0xfc003c00,0x8003e,0x1f000,0x1e00fc0,0xff0000,0xfe0fe007,0xc01f0000,0xfe0000f8,0x1e,
3779+ 0xf0,0x780,0x0,0x0,0xf80180,0x1cf0000,0x1f800000,0x3c00001f,0x83e00000,0x18,0xc0,0x0,0xc06203,0x70007c0,0xe00000,0x7e0f0000,
3780+ 0x1cf0001e,0x7,0x3c000039,0xe0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x100,0x7c00000,0xe00780fc,0x2001cf0,0xf8000,0x1e000,0x0,
3781+ 0x780000,0x7e182000,0xf0000000,0x7,0x8000003c,0x7,0xc0000000,0x7ffc0,0x0,0x180300,0x0,0x3,0xffe00000,0x0,0x0,0x0,0x0,0x0,
3782+ 0x3f00fc0,0xe1c00,0x0,0x0,0x0,0xc01,0x800000e1,0xc0000003,0xc0003870,0x1f001c0,0x3e0003e1,0xf0001f0f,0x8000f87c,0x7c3e0,0x3e1f00,
3783+ 0x1f1e007,0x80007c00,0x30078000,0x3c0000,0x1e00000,0xf000000,0xf00000,0x7800000,0x3c000001,0xe0001e03,0xfc00f001,0xfc01f007,
3784+ 0xc00f803e,0x7c01f0,0x3e00f80,0x1f007c00,0x4000201f,0xc01f007c,0xf803e0,0x7c01f00,0x3e00f801,0xf0000780,0x1e0000,0xf0007c,
3785+ 0x1f003f80,0xf801fc07,0xc00fe03e,0x7f01f0,0x3f80f80,0x1fc1f03f,0x803e00,0x3007c003,0x803e001c,0x1f000e0,0xf800700,0x780000,
3786+ 0x3c00000,0x1e000000,0xf00007c0,0x3e003c00,0x3c01f00f,0x800f807c,0x7c03e0,0x3e01f00,0x1f00f800,0x1f80007,0xc03e001e,0xfc00f0,
3787+ 0x7e00780,0x3f003c01,0xf8000fe0,0x1fc03e,0x3f800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3788+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x1e,0x780007f,0xfff00001,0xe0f07f03,0xfe000000,0xf00,0x7800,0x0,
3789+ 0x1e0000,0xfc0000,0x0,0x7e0000f0,0x3f0,0x7e000fff,0xfc03ffff,0xf83f00fe,0x780,0xfc03f80,0xfc0fc00,0xf800007,0xe03f0018,0x7e00007,
3790+ 0xe000003f,0x0,0x0,0x0,0x3c000,0x1e007c71,0xe0000f03,0xffffe003,0xf01f01ff,0xff8003ff,0xffe01e00,0x3f01,0xf81e0007,0x803ffff0,
3791+ 0x7e03f00,0x3c000f00,0x7ffffe1e,0xf078,0xfe007e,0xfc00780,0x1f83,0xf0078000,0x783f00fe,0xf000,0x3f03f00,0xff0000,0xfc07e01f,
3792+ 0x3e000,0x780003ff,0xfffc003c,0x7,0x800001e0,0x0,0x0,0x0,0x7e07fc01,0xfe07e001,0xf80f007e,0x7f801f8,0xfc0003c,0x7ffe,0xf0078007,
3793+ 0x807ffffe,0xf000,0x7801f00,0xfff00f,0x3c0f01e,0x1e00fc,0xfc007f8,0x1f803f03,0xfc003c00,0xf80fc,0x1fff0,0x1f83fc0,0xff0000,
3794+ 0xfc07e007,0xc01f0000,0xfe0001ff,0xffe0001e,0xf0,0x780,0x0,0x0,0xfe0780,0xfe0000,0x1f000000,0x3c00001f,0x7c00e03,0x81c00018,
3795+ 0xc0,0x0,0x406203,0x7e01fc0,0x700000,0x7fffff80,0xfe0003f,0xffffc003,0xf800001f,0xc0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f0,
3796+ 0x1f800001,0xc007c1fe,0x6000fe0,0x1ffffe,0x1e000,0x0,0x780000,0x3f98e03f,0xffff8000,0x7,0x8000003c,0x7,0xc0000000,0xfe00,
3797+ 0x0,0x80100,0x0,0x0,0x7f000000,0x0,0x1ffff,0xfe000000,0x0,0x0,0x3f83fe8,0xe1c00,0x0,0x0,0x0,0x801,0xc1,0xc0000007,0x80003070,
3798+ 0xfc0fc0,0x3c0001e1,0xe0000f0f,0x7878,0x3c3c0,0x1e1e00,0xf1e007,0xffc03f01,0xf007ffff,0xc03ffffe,0x1fffff0,0xfffff80,0x7fffe003,
3799+ 0xffff001f,0xfff800ff,0xffc01fff,0xf800f001,0xfc00fc1f,0x8007e0fc,0x3f07e0,0x1f83f00,0xfc1f800,0x1f,0xf07e003f,0x3f001f8,
3800+ 0x1f800fc0,0xfc007e07,0xe0000780,0x1e0000,0xf301f8,0xfc0ff80,0x7e07fc03,0xf03fe01f,0x81ff00fc,0xff807e0,0x7fc0f87f,0x81801f80,
3801+ 0xf003f01f,0x801f80fc,0xfc07e0,0x7e03f00,0xfffffc07,0xffffe03f,0xffff01ff,0xfff807e0,0x7e003c00,0x3c01f81f,0x800fc0fc,0x7e07e0,
3802+ 0x3f03f00,0x1f81f800,0x1f8000f,0xe07e001f,0x83fc00fc,0x1fe007e0,0xff003f07,0xf8000fe0,0x1fe07e,0x3f800,0x0,0x0,0x0,0x0,0x0,
3803+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x1e,0x780007f,
3804+ 0xffe00000,0xffe03fff,0xdf000000,0xf00,0x7800,0x0,0x0,0xfc0000,0x0,0x7e0000f0,0x1ff,0xfc000fff,0xfc03ffff,0xf83ffffc,0x780,
3805+ 0xfffff00,0x7fff800,0xf000007,0xffff001f,0xffe00007,0xe000003f,0x0,0x0,0x0,0x3c000,0x1e000001,0xe0000f03,0xffffc001,0xffff01ff,
3806+ 0xff0003ff,0xffe01e00,0x1fff,0xf81e0007,0x803ffff0,0x7fffe00,0x3c000f80,0x7ffffe1e,0xf078,0xfe003f,0xff800780,0xfff,0xf0078000,
3807+ 0x7c3ffffc,0xf000,0x3ffff00,0xff0000,0xf803e01e,0x1e000,0x780003ff,0xfffc003c,0x7,0x800001e0,0x0,0x0,0x0,0x7fffbc01,0xffffc000,
3808+ 0xffff003f,0xfff800ff,0xffc0003c,0x3ffe,0xf0078007,0x807ffffe,0xf000,0x7800f80,0x7ff00f,0x3c0f01e,0x1e007f,0xff8007ff,0xff001fff,
3809+ 0xbc003c00,0xffffc,0x1fff0,0x1fffbc0,0xff0000,0x7c07c00f,0x800f8000,0x7e0001ff,0xffe0001e,0xf0,0x780,0x0,0x0,0x7fff80,0x7c0000,
3810+ 0x1f000000,0x3c00001e,0x7c00f07,0xc1e00018,0xc0,0x0,0x60e303,0x7ffff80,0x380000,0x3fffff80,0x7c0003f,0xffffc001,0xf000000f,
3811+ 0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ff,0xff800003,0x8003ffff,0xfe0007c0,0x1ffffe,0x1e000,0x0,0x780000,0x1fffe03f,0xffff8000,
3812+ 0x7,0x8000003c,0x3,0xc0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ffff,0xfe000000,0x0,0x0,0x3fffdf8,0xe1c00,0x0,0x0,0x0,0x0,0x1c1,
3813+ 0xc000000f,0x7070,0x7fffc0,0x3c0001e1,0xe0000f0f,0x7878,0x3c3c0,0x1e1e00,0xf1e007,0xffc01fff,0xf007ffff,0xc03ffffe,0x1fffff0,
3814+ 0xfffff80,0x7fffe003,0xffff001f,0xfff800ff,0xffc01fff,0xf000f001,0xfc007fff,0x3fff8,0x1fffc0,0xfffe00,0x7fff000,0x3b,0xfffc003f,
3815+ 0xfff001ff,0xff800fff,0xfc007fff,0xe0000780,0x1e0000,0xf3fff8,0xffff780,0x7fffbc03,0xfffde01f,0xffef00ff,0xff7807ff,0xfbc0ffff,
3816+ 0xff800fff,0xf001ffff,0x800ffffc,0x7fffe0,0x3ffff00,0xfffffc07,0xffffe03f,0xffff01ff,0xfff803ff,0xfc003c00,0x3c00ffff,0x7fff8,
3817+ 0x3fffc0,0x1fffe00,0xffff000,0x1f,0xfffc001f,0xffbc00ff,0xfde007ff,0xef003fff,0x780007e0,0x1ffffc,0x1f800,0x0,0x0,0x0,0x0,
3818+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x1e,0x700003f,
3819+ 0xffc00000,0x7fc01fff,0x9f800000,0xf80,0xf800,0x0,0x0,0xfc0000,0x0,0x7e0000f0,0xff,0xf8000fff,0xfc03ffff,0xf83ffff8,0x780,
3820+ 0xffffe00,0x7fff000,0xf000003,0xfffe001f,0xffc00007,0xe000003f,0x0,0x0,0x0,0x3c000,0xf000003,0xe0000f83,0xffff0000,0xffff01ff,
3821+ 0xfc0003ff,0xffe01e00,0xfff,0xf01e0007,0x803ffff0,0x7fffc00,0x3c0007c0,0x7ffffe1e,0xf078,0x7e003f,0xff000780,0x7ff,0xe0078000,
3822+ 0x3c3ffff8,0xf000,0x1fffe00,0x7e0000,0xf803e03e,0x1f000,0x780003ff,0xfffc003c,0x7,0x800001e0,0x0,0x0,0x0,0x3fff3c01,0xefff8000,
3823+ 0x7ffe001f,0xff78007f,0xff80003c,0x1ffc,0xf0078007,0x807ffffe,0xf000,0x78007c0,0x3ff00f,0x3c0f01e,0x1e003f,0xff0007bf,0xfe000fff,
3824+ 0xbc003c00,0xffff8,0xfff0,0xfff3c0,0x7e0000,0x7c07c01f,0x7c000,0x7c0001ff,0xffe0001e,0xf0,0x780,0x0,0x0,0x3fff80,0x380000,
3825+ 0x3e000000,0x7c00003e,0x7801f07,0xc1e00018,0xc0,0x0,0x39c1ce,0x7ffff00,0x1c0000,0xfffff80,0x380003f,0xffffc000,0xe0000007,
3826+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ff,0xff000007,0x1ffcf,0xfe000380,0x1ffffe,0x1e000,0x0,0x780000,0xfffe03f,0xffff8000,0x7,
3827+ 0x8000003c,0x3,0xc0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ffff,0xfe000000,0x0,0x0,0x3dffdf8,0xe1c00,0x0,0x0,0x0,0x0,0x381,
3828+ 0xc000001e,0xe070,0x7fff80,0x7c0001f3,0xe0000f9f,0x7cf8,0x3e7c0,0x1f3e00,0xfbe007,0xffc00fff,0xf007ffff,0xc03ffffe,0x1fffff0,
3829+ 0xfffff80,0x7fffe003,0xffff001f,0xfff800ff,0xffc01fff,0xc000f000,0xfc007ffe,0x3fff0,0x1fff80,0xfffc00,0x7ffe000,0x79,0xfff8001f,
3830+ 0xffe000ff,0xff0007ff,0xf8003fff,0xc0000780,0x1e0000,0xf3fff0,0x7ffe780,0x3fff3c01,0xfff9e00f,0xffcf007f,0xfe7803ff,0xf3c07ff3,
3831+ 0xff8007ff,0xe000ffff,0x7fff8,0x3fffc0,0x1fffe00,0xfffffc07,0xffffe03f,0xffff01ff,0xfff801ff,0xf8003c00,0x3c007ffe,0x3fff0,
3832+ 0x1fff80,0xfffc00,0x7ffe000,0x1d,0xfff8000f,0xff3c007f,0xf9e003ff,0xcf001ffe,0x780007c0,0x1efff8,0x1f000,0x0,0x0,0x0,0x0,
3833+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780000,0x1e,0xf000003,
3834+ 0xfe000000,0x1f000fff,0xfc00000,0x780,0xf000,0x0,0x0,0xf80000,0x0,0x7e0001e0,0x7f,0xf0000fff,0xfc03ffff,0xf81ffff0,0x780,
3835+ 0x7fff800,0x1ffe000,0x1f000000,0xfff8001f,0xff000007,0xe000003e,0x0,0x0,0x0,0x3c000,0xf800003,0xc0000783,0xfff80000,0x3ffe01ff,
3836+ 0xe00003ff,0xffe01e00,0x7ff,0xc01e0007,0x803ffff0,0x3fff800,0x3c0003c0,0x7ffffe1e,0xf078,0x7e000f,0xfe000780,0x3ff,0xc0078000,
3837+ 0x3e1fffe0,0xf000,0x7ff800,0x7e0000,0xf803e07c,0xf800,0x780003ff,0xfffc003c,0x3,0xc00001e0,0x0,0x0,0x0,0xffe3c01,0xe7ff0000,
3838+ 0x3ffc000f,0xfe78003f,0xfe00003c,0x7f0,0xf0078007,0x807ffffe,0xf000,0x78003e0,0xff00f,0x3c0f01e,0x1e001f,0xfe00079f,0xfc0007ff,
3839+ 0x3c003c00,0x7ffe0,0x1ff0,0x7fe3c0,0x7e0000,0x7c07c03e,0x3e000,0x7c0001ff,0xffe0001e,0xf0,0x780,0x0,0x0,0xfff00,0x100000,
3840+ 0x3e000000,0x7800003c,0xf800f07,0xc1e00018,0xc0,0x0,0x1f80fc,0x3fffc00,0xc0000,0x3ffff80,0x100003f,0xffffc000,0x40000002,
3841+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xff,0xfc000006,0xff87,0xfc000100,0x1ffffe,0x1e000,0x0,0x780000,0x3ffc03f,0xffff8000,0x7,
3842+ 0x8000003c,0x3,0xc0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ffff,0xfe000000,0x0,0x0,0x3dff9f8,0xe1c00,0x0,0x0,0x0,0x0,0x3ff,
3843+ 0xf800003c,0xfffe,0x1ffe00,0x780000f3,0xc000079e,0x3cf0,0x1e780,0xf3c00,0x7bc007,0xffc003ff,0xe007ffff,0xc03ffffe,0x1fffff0,
3844+ 0xfffff80,0x7fffe003,0xffff001f,0xfff800ff,0xffc01ffc,0xf000,0xfc001ffc,0xffe0,0x7ff00,0x3ff800,0x1ffc000,0x70,0xfff00007,
3845+ 0xff80003f,0xfc0001ff,0xe0000fff,0x780,0x1e0000,0xf3ffe0,0x1ffc780,0xffe3c00,0x7ff1e003,0xff8f001f,0xfc7800ff,0xe3c03fe1,
3846+ 0xff0003ff,0xc0007ffc,0x3ffe0,0x1fff00,0xfff800,0xfffffc07,0xffffe03f,0xffff01ff,0xfff800ff,0xf0003c00,0x3c003ffc,0x1ffe0,
3847+ 0xfff00,0x7ff800,0x3ffc000,0x38,0xfff00007,0xfe3c003f,0xf1e001ff,0x8f000ffc,0x780007c0,0x1e7ff0,0x1f000,0x0,0x0,0x0,0x0,0x0,
3848+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,
3849+ 0x1fc,0x0,0x780,0xf000,0x0,0x0,0x1f80000,0x0,0x1e0,0x1f,0xc0000000,0x0,0x1ff80,0x0,0xffc000,0x7f8000,0x0,0x3fe00007,0xfc000000,
3850+ 0x7e,0x0,0x0,0x0,0x0,0x7c00000,0x0,0x0,0xff00000,0x0,0x0,0xfe,0x0,0x0,0x3fc000,0x0,0x0,0x0,0x3,0xf8000000,0xff,0xc0000000,
3851+ 0x1ff00,0x0,0x1fe000,0x0,0x0,0x0,0x0,0x3c,0x3,0xc00001e0,0x0,0x0,0x0,0x3f80000,0x1fc0000,0x7f00003,0xf8000007,0xf0000000,
3852+ 0x0,0xf0000000,0x0,0xf000,0x0,0x0,0x0,0x7,0xf8000787,0xf00001fc,0x3c000000,0x7f80,0x0,0x1f8000,0x0,0x0,0x0,0x7c000000,0x1e,
3853+ 0xf0,0x780,0x0,0x0,0x3fc00,0x0,0x3c000000,0x7800003c,0xf000601,0xc00018,0xc0,0x0,0x0,0x3fe000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3854+ 0x0,0x0,0x0,0x0,0x0,0x0,0xf,0xf0000000,0x7e03,0xf0000000,0x0,0x0,0x0,0x0,0xfe0000,0x0,0x0,0x3c,0x2007,0x80000000,0x0,0x0,
3855+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c7e0f0,0xe1c00,0x0,0x3800000,0x0,0x0,0x3ff,0xf8000078,0xfffe,0x7f800,0x0,0x0,0x0,0x0,
3856+ 0x0,0x0,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7f0,0x3f80,0x1fc00,0xfe000,0x7f0000,0x70,0x3fc00001,0xfe00000f,0xf000007f,
3857+ 0x800003fc,0x0,0x0,0xff00,0x7f0000,0x3f80000,0x1fc00000,0xfe000007,0xf000003f,0x80001f80,0xfc00007f,0xfe0,0x7f00,0x3f800,
3858+ 0x1fc000,0x0,0x0,0x0,0x3f,0xc0000000,0xff0,0x7f80,0x3fc00,0x1fe000,0xff0000,0x78,0x3fc00001,0xf800000f,0xc000007e,0x3f0,0x7c0,
3859+ 0x1e1fc0,0x1f000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3860+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x0,0x0,0x3c0,0x1e000,0x0,0x0,0x1f00000,0x0,0x3c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3861+ 0x0,0x0,0x7c,0x0,0x0,0x0,0x0,0x3e00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0xe0000000,0x0,0x0,0x0,
3862+ 0x0,0x0,0x0,0x0,0x3c,0x1,0xe00001e0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0000000,0x0,0xf000,0x0,0x0,0x0,0x0,0x780,0x0,0x3c000000,
3863+ 0x0,0x0,0x0,0x0,0x0,0x0,0x78000000,0x1e,0xf0,0x780,0x0,0x0,0x0,0x0,0x3c000000,0x78000078,0xf000000,0x18,0xc0,0x0,0x0,0x0,
3864+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180000,0x0,0x0,0x3c,0x3c0f,0x80000000,
3865+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00000,0xe1c00,0x0,0x1800000,0x0,0x0,0x3ff,0xf80000f0,0xfffe,0x0,0x0,0x0,0x0,
3866+ 0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3867+ 0x0,0x0,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x0,0x780,0x1e0000,0x1e000,0x0,0x0,0x0,
3868+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,
3869+ 0x0,0x0,0x3c0,0x1e000,0x0,0x0,0x1f00000,0x0,0x3c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7c,0x0,0x0,0x0,0x0,0x1f80000,
3870+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xf0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x1,0xe00001e0,0x0,
3871+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0xe0000000,0x0,0xf000,0x0,0x0,0x0,0x0,0x780,0x0,0x3c000000,0x0,0x0,0x0,0x0,0x0,0x0,0xf8000000,
3872+ 0x1f,0xf0,0xf80,0x0,0x0,0x0,0x0,0x78000000,0xf8000078,0x1e000000,0x8,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3873+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180000,0x0,0x0,0x3c,0x3fff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3874+ 0x0,0x3c00000,0xe1c00,0x0,0x1c00000,0x0,0x0,0x1,0xc00001e0,0x70,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3875+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3876+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf80,0x1e0000,0x3e000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3877+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x0,0x0,0x1e0,0x3c000,0x0,0x0,0x1f00000,
3878+ 0x0,0x780,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7c,0x0,0x0,0x0,0x0,0xfe0100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3879+ 0x0,0x0,0x0,0x0,0xf8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,0xf0000000,0xf0007fe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0xe0000000,
3880+ 0x0,0xf000,0x0,0x0,0x0,0x0,0x780,0x0,0x3c000000,0x0,0x0,0x0,0x0,0x0,0x0,0xf0000000,0x1f,0x800000f0,0x1f80,0x0,0x0,0x0,0x0,
3881+ 0x78000000,0xf0000070,0x1c000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3882+ 0x0,0x0,0x0,0x0,0x180000,0x0,0x0,0x3c,0x3ffe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00000,0xe1c00,0x0,0xe00000,
3883+ 0x0,0x0,0x1,0xc00003ff,0xe0000070,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3884+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3885+ 0x0,0x0,0x0,0xf00,0x1e0000,0x3c000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3886+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x0,0x0,0x1e0,0x7c000,0x0,0x0,0x1e00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3887+ 0x0,0x0,0x0,0x0,0x0,0x78,0x0,0x0,0x0,0x0,0x7fff80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x78000000,
3888+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,0xf0000000,0x7fe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4003,0xe0000000,0x0,0x1f000,0x0,0x0,
3889+ 0x0,0x0,0x780,0x0,0x3c000000,0x0,0x0,0x0,0x0,0x0,0x1,0xf0000000,0xf,0xfc0000f0,0x3ff00,0x0,0x0,0x0,0x0,0x70000001,0xf00000e0,
3890+ 0x1c000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180000,
3891+ 0x0,0x0,0x3c,0xff8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00000,0xe1c00,0x0,0xe00000,0x0,0x0,0x1,0xc00003ff,
3892+ 0xe0000070,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3893+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1f00,0x1e0000,
3894+ 0x7c000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3895+ 0x0,0x0,0x0,0x0,0x30000000,0x0,0x0,0xf0,0x78000,0x0,0x0,0x3e00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf8,0x0,
3896+ 0x0,0x0,0x0,0x1fff80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,
3897+ 0xf0000000,0x7fe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x780f,0xc0000000,0x0,0x3e000,0x0,0x0,0x0,0x0,0x780,0x0,0x3c000000,0x0,
3898+ 0x0,0x0,0x0,0x0,0x3,0xe0000000,0xf,0xfc0000f0,0x3ff00,0x0,0x0,0x0,0x0,0xf0000103,0xe0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3899+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180000,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,
3900+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00000,0x0,0x0,0x21e00000,0x0,0x0,0x1,0xc00003ff,0xe0000070,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10f,
3901+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10f,0x0,
3902+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3e00,0x1e0000,0xf8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3903+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x0,0x0,
3904+ 0xf8,0xf8000,0x0,0x0,0x3c00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x1fe00,0x0,0x0,0x0,0x0,
3905+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,0xf0000000,0x7fe0,0x0,0x0,0x0,0x0,0x0,0x0,
3906+ 0x0,0x0,0x7fff,0xc0000000,0x0,0x3ffe000,0x0,0x0,0x0,0x0,0x780,0x0,0x3c000000,0x0,0x0,0x0,0x0,0x0,0x7f,0xe0000000,0x7,0xfc0000f0,
3907+ 0x3fe00,0x0,0x0,0x0,0x0,0x600001ff,0xe0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3908+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180000,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00000,0x0,0x0,
3909+ 0x3fe00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3910+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3911+ 0x0,0x0,0x0,0x0,0x7fe00,0x1e0000,0x1ff8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3912+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3913+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3914+ 0x0,0x0,0x0,0x0,0x1fffffe0,0x0,0x0,0x0,0x0,0x0,0x0,0x7fff,0x80000000,0x0,0x3ffc000,0x0,0x0,0x0,0x0,0x780,0x0,0x3c000000,0x0,
3915+ 0x0,0x0,0x0,0x0,0x7f,0xc0000000,0x0,0xfc0000f0,0x3f000,0x0,0x0,0x0,0x0,0x1ff,0xc0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3916+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3917+ 0x0,0x0,0x0,0x0,0x0,0x3c00000,0x0,0x0,0x3fc00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fe,0x0,0x0,0x0,0x0,0x0,
3918+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fe,0x0,0x0,0x0,0x0,0x0,0x0,
3919+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7fc00,0x1e0000,0x1ff0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3920+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3921+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3922+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fffffe0,0x0,0x0,0x0,0x0,0x0,0x0,0x3ffe,0x0,0x0,0x3ff8000,0x0,0x0,0x0,
3923+ 0x0,0x780,0x0,0x3c000000,0x0,0x0,0x0,0x0,0x0,0x7f,0x80000000,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x1ff,0x80000000,0x0,0x0,0x0,0x0,
3924+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3925+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00000,0x0,0x0,0x3f800000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fc,0x0,
3926+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fc,0x0,0x0,
3927+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7f800,0x1e0000,0x1fe0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3928+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3929+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3930+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fffffe0,0x0,0x0,0x0,0x0,0x0,0x0,0x7f8,0x0,0x0,0x3fe0000,
3931+ 0x0,0x0,0x0,0x0,0x780,0x0,0x3c000000,0x0,0x0,0x0,0x0,0x0,0x7e,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,
3932+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3933+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3c00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3934+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3935+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7e000,0x1e0000,0x1f80000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3936+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3937+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3938+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1fffffe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3939+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3940+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3941+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3942+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3943+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3944+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3945+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3946+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf0,0x0,0x0,0x0,
3947+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3948+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3949+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
3950+ 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0 };
3951+
3952+ // Definition of a 40x38 'danger' color logo.
3953+ const unsigned char logo40x38[4576] = {
3954+ 177,200,200,200,3,123,123,0,36,200,200,200,1,123,123,0,2,255,255,0,1,189,189,189,1,0,0,0,34,200,200,200,
3955+ 1,123,123,0,4,255,255,0,1,189,189,189,1,0,0,0,1,123,123,123,32,200,200,200,1,123,123,0,5,255,255,0,1,0,0,
3956+ 0,2,123,123,123,30,200,200,200,1,123,123,0,6,255,255,0,1,189,189,189,1,0,0,0,2,123,123,123,29,200,200,200,
3957+ 1,123,123,0,7,255,255,0,1,0,0,0,2,123,123,123,28,200,200,200,1,123,123,0,8,255,255,0,1,189,189,189,1,0,0,0,
3958+ 2,123,123,123,27,200,200,200,1,123,123,0,9,255,255,0,1,0,0,0,2,123,123,123,26,200,200,200,1,123,123,0,10,255,
3959+ 255,0,1,189,189,189,1,0,0,0,2,123,123,123,25,200,200,200,1,123,123,0,3,255,255,0,1,189,189,189,3,0,0,0,1,189,
3960+ 189,189,3,255,255,0,1,0,0,0,2,123,123,123,24,200,200,200,1,123,123,0,4,255,255,0,5,0,0,0,3,255,255,0,1,189,
3961+ 189,189,1,0,0,0,2,123,123,123,23,200,200,200,1,123,123,0,4,255,255,0,5,0,0,0,4,255,255,0,1,0,0,0,2,123,123,123,
3962+ 22,200,200,200,1,123,123,0,5,255,255,0,5,0,0,0,4,255,255,0,1,189,189,189,1,0,0,0,2,123,123,123,21,200,200,200,
3963+ 1,123,123,0,5,255,255,0,5,0,0,0,5,255,255,0,1,0,0,0,2,123,123,123,20,200,200,200,1,123,123,0,6,255,255,0,5,0,0,
3964+ 0,5,255,255,0,1,189,189,189,1,0,0,0,2,123,123,123,19,200,200,200,1,123,123,0,6,255,255,0,1,123,123,0,3,0,0,0,1,
3965+ 123,123,0,6,255,255,0,1,0,0,0,2,123,123,123,18,200,200,200,1,123,123,0,7,255,255,0,1,189,189,189,3,0,0,0,1,189,
3966+ 189,189,6,255,255,0,1,189,189,189,1,0,0,0,2,123,123,123,17,200,200,200,1,123,123,0,8,255,255,0,3,0,0,0,8,255,255,
3967+ 0,1,0,0,0,2,123,123,123,16,200,200,200,1,123,123,0,9,255,255,0,1,123,123,0,1,0,0,0,1,123,123,0,8,255,255,0,1,189,
3968+ 189,189,1,0,0,0,2,123,123,123,15,200,200,200,1,123,123,0,9,255,255,0,1,189,189,189,1,0,0,0,1,189,189,189,9,255,255,
3969+ 0,1,0,0,0,2,123,123,123,14,200,200,200,1,123,123,0,11,255,255,0,1,0,0,0,10,255,255,0,1,189,189,189,1,0,0,0,2,123,
3970+ 123,123,13,200,200,200,1,123,123,0,23,255,255,0,1,0,0,0,2,123,123,123,12,200,200,200,1,123,123,0,11,255,255,0,1,189,
3971+ 189,189,2,0,0,0,1,189,189,189,9,255,255,0,1,189,189,189,1,0,0,0,2,123,123,123,11,200,200,200,1,123,123,0,11,255,255,
3972+ 0,4,0,0,0,10,255,255,0,1,0,0,0,2,123,123,123,10,200,200,200,1,123,123,0,12,255,255,0,4,0,0,0,10,255,255,0,1,189,189,
3973+ 189,1,0,0,0,2,123,123,123,9,200,200,200,1,123,123,0,12,255,255,0,1,189,189,189,2,0,0,0,1,189,189,189,11,255,255,0,1,
3974+ 0,0,0,2,123,123,123,9,200,200,200,1,123,123,0,27,255,255,0,1,0,0,0,3,123,123,123,8,200,200,200,1,123,123,0,26,255,
3975+ 255,0,1,189,189,189,1,0,0,0,3,123,123,123,9,200,200,200,1,123,123,0,24,255,255,0,1,189,189,189,1,0,0,0,4,123,123,
3976+ 123,10,200,200,200,1,123,123,0,24,0,0,0,5,123,123,123,12,200,200,200,27,123,123,123,14,200,200,200,25,123,123,123,86,
3977+ 200,200,200,91,49,124,118,124,71,32,124,95,49,56,114,52,82,121,0};
3978+
3979+ //! Set/get output stream for CImg library messages.
3980+ inline std::FILE* output(std::FILE *file) {
3981+ static std::FILE *res = stderr;
3982+ if (file) res = file;
3983+ return res;
3984+ }
3985+
3986+ //! Display a warning message.
3987+ /**
3988+ \param format is a C-string describing the format of the message, as in <tt>std::printf()</tt>.
3989+ **/
3990+ inline void warn(const char *const format, ...) {
3991+ if (cimg::exception_mode()>=1) {
3992+ char message[16384] = { 0 };
3993+ std::va_list ap;
3994+ va_start(ap,format);
3995+ cimg_vsnprintf(message,sizeof(message),format,ap);
3996+ va_end(ap);
3997+#ifdef cimg_strict_warnings
3998+ throw CImgWarningException(message);
3999+#else
4000+ std::fprintf(cimg::output(),"\n%s[CImg] *** Warning ***%s%s",cimg::t_red,cimg::t_normal,message);
4001+#endif
4002+ }
4003+ }
4004+
4005+ // Execute an external system command.
4006+ /**
4007+ \note This function is similar to <tt>std::system()</tt>
4008+ and is here because using the <tt>std::</tt> version on
4009+ Windows may open undesired consoles.
4010+ **/
4011+ inline int system(const char *const command, const char *const module_name=0) {
4012+#if cimg_OS==2
4013+ PROCESS_INFORMATION pi;
4014+ STARTUPINFO si;
4015+ std::memset(&pi,0,sizeof(PROCESS_INFORMATION));
4016+ std::memset(&si,0,sizeof(STARTUPINFO));
4017+ GetStartupInfo(&si);
4018+ si.cb = sizeof(si);
4019+ si.wShowWindow = SW_HIDE;
4020+ si.dwFlags |= SW_HIDE;
4021+ const BOOL res = CreateProcess((LPCTSTR)module_name,(LPTSTR)command,0,0,FALSE,0,0,0,&si,&pi);
4022+ if (res) {
4023+ WaitForSingleObject(pi.hProcess, INFINITE);
4024+ CloseHandle(pi.hThread);
4025+ CloseHandle(pi.hProcess);
4026+ return 0;
4027+ } else
4028+#endif
4029+ return std::system(command);
4030+ return module_name?0:1;
4031+ }
4032+
4033+ //! Return a reference to a temporary variable of type T.
4034+ template<typename T>
4035+ inline T& temporary(const T&) {
4036+ static T temp;
4037+ return temp;
4038+ }
4039+
4040+ //! Exchange values of variables \p a and \p b.
4041+ template<typename T>
4042+ inline void swap(T& a, T& b) { T t = a; a = b; b = t; }
4043+
4044+ //! Exchange values of variables (\p a1,\p a2) and (\p b1,\p b2).
4045+ template<typename T1, typename T2>
4046+ inline void swap(T1& a1, T1& b1, T2& a2, T2& b2) {
4047+ cimg::swap(a1,b1); cimg::swap(a2,b2);
4048+ }
4049+
4050+ //! Exchange values of variables (\p a1,\p a2,\p a3) and (\p b1,\p b2,\p b3).
4051+ template<typename T1, typename T2, typename T3>
4052+ inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3) {
4053+ cimg::swap(a1,b1,a2,b2); cimg::swap(a3,b3);
4054+ }
4055+
4056+ //! Exchange values of variables (\p a1,\p a2,...,\p a4) and (\p b1,\p b2,...,\p b4).
4057+ template<typename T1, typename T2, typename T3, typename T4>
4058+ inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4) {
4059+ cimg::swap(a1,b1,a2,b2,a3,b3); cimg::swap(a4,b4);
4060+ }
4061+
4062+ //! Exchange values of variables (\p a1,\p a2,...,\p a5) and (\p b1,\p b2,...,\p b5).
4063+ template<typename T1, typename T2, typename T3, typename T4, typename T5>
4064+ inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4, T5& a5, T5& b5) {
4065+ cimg::swap(a1,b1,a2,b2,a3,b3,a4,b4); cimg::swap(a5,b5);
4066+ }
4067+
4068+ //! Exchange values of variables (\p a1,\p a2,...,\p a6) and (\p b1,\p b2,...,\p b6).
4069+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
4070+ inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4, T5& a5, T5& b5, T6& a6, T6& b6) {
4071+ cimg::swap(a1,b1,a2,b2,a3,b3,a4,b4,a5,b5); cimg::swap(a6,b6);
4072+ }
4073+
4074+ //! Exchange values of variables (\p a1,\p a2,...,\p a7) and (\p b1,\p b2,...,\p b7).
4075+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
4076+ inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4, T5& a5, T5& b5, T6& a6, T6& b6,
4077+ T7& a7, T7& b7) {
4078+ cimg::swap(a1,b1,a2,b2,a3,b3,a4,b4,a5,b5,a6,b6); cimg::swap(a7,b7);
4079+ }
4080+
4081+ //! Exchange values of variables (\p a1,\p a2,...,\p a8) and (\p b1,\p b2,...,\p b8).
4082+ template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
4083+ inline void swap(T1& a1, T1& b1, T2& a2, T2& b2, T3& a3, T3& b3, T4& a4, T4& b4, T5& a5, T5& b5, T6& a6, T6& b6,
4084+ T7& a7, T7& b7, T8& a8, T8& b8) {
4085+ cimg::swap(a1,b1,a2,b2,a3,b3,a4,b4,a5,b5,a6,b6,a7,b7); cimg::swap(a8,b8);
4086+ }
4087+
4088+ //! Return the current endianness of the CPU.
4089+ /**
4090+ \return \c false for "Little Endian", \c true for "Big Endian".
4091+ **/
4092+ inline bool endianness() {
4093+ const int x = 1;
4094+ return ((unsigned char*)&x)[0]?false:true;
4095+ }
4096+
4097+ //! Invert endianness of a memory buffer.
4098+ template<typename T>
4099+ inline void invert_endianness(T* const buffer, const unsigned int size) {
4100+ if (size) switch (sizeof(T)) {
4101+ case 1 : break;
4102+ case 2 : { for (unsigned short *ptr = (unsigned short*)buffer+size; ptr>(unsigned short*)buffer; ) {
4103+ const unsigned short val = *(--ptr);
4104+ *ptr = (unsigned short)((val>>8)|((val<<8)));
4105+ }
4106+ } break;
4107+ case 4 : { for (unsigned int *ptr = (unsigned int*)buffer+size; ptr>(unsigned int*)buffer; ) {
4108+ const unsigned int val = *(--ptr);
4109+ *ptr = (val>>24)|((val>>8)&0xff00)|((val<<8)&0xff0000)|(val<<24);
4110+ }
4111+ } break;
4112+ default : { for (T* ptr = buffer+size; ptr>buffer; ) {
4113+ unsigned char *pb = (unsigned char*)(--ptr), *pe = pb + sizeof(T);
4114+ for (int i = 0; i<(int)sizeof(T)/2; ++i) swap(*(pb++),*(--pe));
4115+ }
4116+ }
4117+ }
4118+ }
4119+
4120+ //! Invert endianness of a single variable.
4121+ template<typename T>
4122+ inline T& invert_endianness(T& a) {
4123+ invert_endianness(&a,1);
4124+ return a;
4125+ }
4126+
4127+ // Conversion function to gain more precision in storage of unsigned ints as floats.
4128+ inline unsigned int float2uint(const float f) {
4129+ if (f>=0) return (unsigned int)f;
4130+ static unsigned int u;
4131+ std::memcpy(&u,&f,sizeof(float)); // use memcpy instead of assignment to avoid wrong optimizations with g++.
4132+ return ((u)<<1)>>1; // set sign bit to 0.
4133+ }
4134+
4135+ inline float uint2float(const unsigned int u) {
4136+ if (u<1000000U) return (float)u;
4137+ static float f;
4138+ const unsigned int v = u|(1U<<(8*sizeof(unsigned int)-1)); // set sign bit to 1.
4139+ std::memcpy(&f,&v,sizeof(float)); // use memcpy instead of simple assignment to avoir wrong optimizations with g++.
4140+ return f;
4141+ }
4142+
4143+ //! Get the value of a system timer with a millisecond precision.
4144+ inline unsigned long time() {
4145+#if cimg_OS==1
4146+ struct timeval st_time;
4147+ gettimeofday(&st_time,0);
4148+ return (unsigned long)(st_time.tv_usec/1000 + st_time.tv_sec*1000);
4149+#elif cimg_OS==2
4150+ static SYSTEMTIME st_time;
4151+ GetSystemTime(&st_time);
4152+ return (unsigned long)(st_time.wMilliseconds + 1000*(st_time.wSecond + 60*(st_time.wMinute + 60*st_time.wHour)));
4153+#else
4154+ return 0;
4155+#endif
4156+ }
4157+
4158+ // Implement a tic/toc mechanism to display elapsed time of algorithms.
4159+ inline unsigned long tictoc(const bool is_tic) {
4160+ static unsigned long t0 = 0;
4161+ const unsigned long t = cimg::time();
4162+ if (is_tic) return (t0 = t);
4163+ const unsigned long dt = t>=t0?(t - t0):cimg::type<unsigned long>::max();
4164+ const unsigned int
4165+ edays = (unsigned int)(dt/86400000.0),
4166+ ehours = (unsigned int)((dt - edays*86400000.0)/3600000.0),
4167+ emin = (unsigned int)((dt - edays*86400000.0 - ehours*3600000.0)/60000.0),
4168+ esec = (unsigned int)((dt - edays*86400000.0 - ehours*3600000.0 - emin*60000.0)/1000.0),
4169+ ems = (unsigned int)(dt - edays*86400000.0 - ehours*3600000.0 - emin*60000.0 - esec*1000.0);
4170+ if (!edays && !ehours && !emin && !esec)
4171+ std::fprintf(cimg::output(),"%s[CImg] Elapsed time : %u ms%s\n",cimg::t_red,ems,cimg::t_normal);
4172+ else {
4173+ if (!edays && !ehours && !emin)
4174+ std::fprintf(cimg::output(),"%s[CImg] Elapsed time : %u sec %u ms%s\n",cimg::t_red,esec,ems,cimg::t_normal);
4175+ else {
4176+ if (!edays && !ehours)
4177+ std::fprintf(cimg::output(),"%s[CImg] Elapsed time : %u min %u sec %u ms%s\n",cimg::t_red,emin,esec,ems,cimg::t_normal);
4178+ else{
4179+ if (!edays)
4180+ std::fprintf(cimg::output(),"%s[CImg] Elapsed time : %u hours %u min %u sec %u ms%s\n",cimg::t_red,ehours,emin,esec,ems,cimg::t_normal);
4181+ else{
4182+ std::fprintf(cimg::output(),"%s[CImg] Elapsed time : %u days %u hours %u min %u sec %u ms%s\n",cimg::t_red,edays,ehours,emin,esec,ems,cimg::t_normal);
4183+ }
4184+ }
4185+ }
4186+ }
4187+ return t;
4188+ }
4189+
4190+ inline unsigned long tic() {
4191+ return cimg::tictoc(true);
4192+ }
4193+
4194+ inline unsigned long toc() {
4195+ return cimg::tictoc(false);
4196+ }
4197+
4198+ //! Sleep for a certain numbers of milliseconds.
4199+ /**
4200+ This function frees the CPU ressources during the sleeping time.
4201+ It may be used to temporize your program properly, without wasting CPU time.
4202+ **/
4203+ inline void sleep(const unsigned int milliseconds) {
4204+#if cimg_OS==1
4205+ struct timespec tv;
4206+ tv.tv_sec = milliseconds/1000;
4207+ tv.tv_nsec = (milliseconds%1000)*1000000;
4208+ nanosleep(&tv,0);
4209+#elif cimg_OS==2
4210+ Sleep(milliseconds);
4211+#endif
4212+ }
4213+
4214+ inline unsigned int _sleep(const unsigned int milliseconds, unsigned long& timer) {
4215+ if (!timer) timer = cimg::time();
4216+ const unsigned long current_time = cimg::time();
4217+ if (current_time>=timer+milliseconds) { timer = current_time; return 0; }
4218+ const unsigned long time_diff = timer + milliseconds - current_time;
4219+ timer = current_time + time_diff;
4220+ cimg::sleep(time_diff);
4221+ return (unsigned int)time_diff;
4222+ }
4223+
4224+ //! Wait for a certain number of milliseconds since the last call.
4225+ /**
4226+ This function is equivalent to sleep() but the waiting time is computed with regard to the last call
4227+ of wait(). It may be used to temporize your program properly.
4228+ **/
4229+ inline unsigned int wait(const unsigned int milliseconds) {
4230+ static unsigned long timer = 0;
4231+ if (!timer) timer = cimg::time();
4232+ return _sleep(milliseconds,timer);
4233+ }
4234+
4235+ // Use a specific srand initialization to avoid multi-threads to have to the
4236+ // same series of random numbers (executed only once for a single program).
4237+ inline void srand() {
4238+ static bool first_time = true;
4239+ if (first_time) {
4240+ std::srand(cimg::time());
4241+ unsigned char *const rand_ptr = new unsigned char[sizeof(unsigned int)+std::rand()%2048];
4242+ std::srand((unsigned int)std::rand() + *(unsigned int*)(void*)rand_ptr);
4243+ delete[] rand_ptr;
4244+ first_time = false;
4245+ }
4246+ }
4247+
4248+ //! Return a left bitwise-rotated number.
4249+ template<typename T>
4250+ inline T rol(const T a, const unsigned int n=1) {
4251+ return n?(T)((a<<n)|(a>>((sizeof(T)<<3)-n))):a;
4252+ }
4253+
4254+ inline float rol(const float a, const unsigned int n=1) {
4255+ return (float)rol((int)a,n);
4256+ }
4257+
4258+ inline double rol(const double a, const unsigned int n=1) {
4259+ return (double)rol((long)a,n);
4260+ }
4261+
4262+ //! Return a right bitwise-rotated number.
4263+ template<typename T>
4264+ inline T ror(const T a, const unsigned int n=1) {
4265+ return n?(T)((a>>n)|(a<<((sizeof(T)<<3)-n))):a;
4266+ }
4267+
4268+ inline float ror(const float a, const unsigned int n=1) {
4269+ return (float)ror((int)a,n);
4270+ }
4271+
4272+ inline double ror(const double a, const unsigned int n=1) {
4273+ return (double)ror((long)a,n);
4274+ }
4275+
4276+ //! Return the absolute value of a number.
4277+ /**
4278+ \note This function is different from <tt>std::abs()</tt> or <tt>std::fabs()</tt>
4279+ because it is able to consider a variable of any type, without cast needed.
4280+ **/
4281+ template<typename T>
4282+ inline T abs(const T a) {
4283+ return a>=0?a:-a;
4284+ }
4285+ inline bool abs(const bool a) {
4286+ return a;
4287+ }
4288+ inline unsigned char abs(const unsigned char a) {
4289+ return a;
4290+ }
4291+ inline unsigned short abs(const unsigned short a) {
4292+ return a;
4293+ }
4294+ inline unsigned int abs(const unsigned int a) {
4295+ return a;
4296+ }
4297+ inline unsigned long abs(const unsigned long a) {
4298+ return a;
4299+ }
4300+ inline double abs(const double a) {
4301+ return std::fabs(a);
4302+ }
4303+ inline float abs(const float a) {
4304+ return (float)std::fabs((double)a);
4305+ }
4306+ inline int abs(const int a) {
4307+ return std::abs(a);
4308+ }
4309+
4310+ //! Return the square of a number.
4311+ template<typename T>
4312+ inline T sqr(const T val) {
4313+ return val*val;
4314+ }
4315+
4316+ //! Return 1 + log_10(x).
4317+ inline int xln(const int x) {
4318+ return x>0?(int)(1+std::log10((double)x)):1;
4319+ }
4320+
4321+ //! Return the minimum value between two numbers.
4322+ template<typename t1, typename t2>
4323+ inline typename cimg::superset<t1,t2>::type min(const t1& a, const t2& b) {
4324+ typedef typename cimg::superset<t1,t2>::type t1t2;
4325+ return (t1t2)(a<=b?a:b);
4326+ }
4327+
4328+ //! Return the minimum value between three numbers.
4329+ template<typename t1, typename t2, typename t3>
4330+ inline typename cimg::superset2<t1,t2,t3>::type min(const t1& a, const t2& b, const t3& c) {
4331+ typedef typename cimg::superset2<t1,t2,t3>::type t1t2t3;
4332+ return (t1t2t3)cimg::min(cimg::min(a,b),c);
4333+ }
4334+
4335+ //! Return the minimum value between four numbers.
4336+ template<typename t1, typename t2, typename t3, typename t4>
4337+ inline typename cimg::superset3<t1,t2,t3,t4>::type min(const t1& a, const t2& b, const t3& c, const t4& d) {
4338+ typedef typename cimg::superset3<t1,t2,t3,t4>::type t1t2t3t4;
4339+ return (t1t2t3t4)cimg::min(cimg::min(a,b,c),d);
4340+ }
4341+
4342+ //! Return the maximum value between two numbers.
4343+ template<typename t1, typename t2>
4344+ inline typename cimg::superset<t1,t2>::type max(const t1& a, const t2& b) {
4345+ typedef typename cimg::superset<t1,t2>::type t1t2;
4346+ return (t1t2)(a>=b?a:b);
4347+ }
4348+
4349+ //! Return the maximum value between three numbers.
4350+ template<typename t1, typename t2, typename t3>
4351+ inline typename cimg::superset2<t1,t2,t3>::type max(const t1& a, const t2& b, const t3& c) {
4352+ typedef typename cimg::superset2<t1,t2,t3>::type t1t2t3;
4353+ return (t1t2t3)cimg::max(cimg::max(a,b),c);
4354+ }
4355+
4356+ //! Return the maximum value between four numbers.
4357+ template<typename t1, typename t2, typename t3, typename t4>
4358+ inline typename cimg::superset3<t1,t2,t3,t4>::type max(const t1& a, const t2& b, const t3& c, const t4& d) {
4359+ typedef typename cimg::superset3<t1,t2,t3,t4>::type t1t2t3t4;
4360+ return (t1t2t3t4)cimg::max(cimg::max(a,b,c),d);
4361+ }
4362+
4363+ //! Return the sign of a number.
4364+ template<typename T>
4365+ inline T sign(const T x) {
4366+ return (x<0)?(T)(-1):(x==0?(T)0:(T)1);
4367+ }
4368+
4369+ //! Return the nearest power of 2 higher than a given number.
4370+ template<typename T>
4371+ inline unsigned int nearest_pow2(const T x) {
4372+ unsigned int i = 1;
4373+ while (x>i) i<<=1;
4374+ return i;
4375+ }
4376+
4377+ //! Return the sinc() of a given number.
4378+ inline double sinc(const double x) {
4379+ return x?std::sin(x)/x:1;
4380+ }
4381+
4382+ //! Return the modulo of a number.
4383+ /**
4384+ \note This modulo function accepts negative and floating-points modulo numbers, as well as
4385+ variable of any type.
4386+ **/
4387+ template<typename T>
4388+ inline T mod(const T& x, const T& m) {
4389+ const double dx = (double)x, dm = (double)m;
4390+ if (x<0) { return (T)(dm+dx+dm*std::floor(-dx/dm)); }
4391+ return (T)(dx-dm*std::floor(dx/dm));
4392+ }
4393+ inline int mod(const bool x, const bool m) {
4394+ return m?(x?1:0):0;
4395+ }
4396+ inline int mod(const char x, const char m) {
4397+ return x>=0?x%m:(x%m?m+x%m:0);
4398+ }
4399+ inline int mod(const short x, const short m) {
4400+ return x>=0?x%m:(x%m?m+x%m:0);
4401+ }
4402+ inline int mod(const int x, const int m) {
4403+ return x>=0?x%m:(x%m?m+x%m:0);
4404+ }
4405+ inline int mod(const long x, const long m) {
4406+ return x>=0?x%m:(x%m?m+x%m:0);
4407+ }
4408+ inline int mod(const unsigned char x, const unsigned char m) {
4409+ return x%m;
4410+ }
4411+ inline int mod(const unsigned short x, const unsigned short m) {
4412+ return x%m;
4413+ }
4414+ inline int mod(const unsigned int x, const unsigned int m) {
4415+ return x%m;
4416+ }
4417+ inline int mod(const unsigned long x, const unsigned long m) {
4418+ return x%m;
4419+ }
4420+
4421+ //! Return the minmod of two numbers.
4422+ /**
4423+ <i>minmod(\p a,\p b)</i> is defined to be :
4424+ - <i>minmod(\p a,\p b) = min(\p a,\p b)</i>, if \p a and \p b have the same sign.
4425+ - <i>minmod(\p a,\p b) = 0</i>, if \p a and \p b have different signs.
4426+ **/
4427+ template<typename T>
4428+ inline T minmod(const T a, const T b) {
4429+ return a*b<=0?0:(a>0?(a<b?a:b):(a<b?b:a));
4430+ }
4431+
4432+ //! Return a random variable between [0,1] with respect to an uniform distribution.
4433+ inline double rand() {
4434+ cimg::srand();
4435+ return (double)std::rand()/RAND_MAX;
4436+ }
4437+
4438+ //! Return a random variable between [-1,1] with respect to an uniform distribution.
4439+ inline double crand() {
4440+ return 1-2*cimg::rand();
4441+ }
4442+
4443+ //! Return a random variable following a gaussian distribution and a standard deviation of 1.
4444+ inline double grand() {
4445+ double x1, w;
4446+ do {
4447+ const double x2 = 2*cimg::rand() - 1.0;
4448+ x1 = 2*cimg::rand()-1.0;
4449+ w = x1*x1 + x2*x2;
4450+ } while (w<=0 || w>=1.0);
4451+ return x1*std::sqrt((-2*std::log(w))/w);
4452+ }
4453+
4454+ //! Return a random variable following a Poisson distribution of parameter z.
4455+ inline unsigned int prand(const double z) {
4456+ if (z<=1.0e-10) return 0;
4457+ if (z>100) return (unsigned int)((std::sqrt(z) * cimg::grand()) + z);
4458+ unsigned int k = 0;
4459+ const double y = std::exp(-z);
4460+ for (double s = 1.0; s>=y; ++k) s*=cimg::rand();
4461+ return k-1;
4462+ }
4463+
4464+ //! Return a rounded number.
4465+ /**
4466+ \param x is the number to be rounded.
4467+ \param y is the rounding precision.
4468+ \param rounding_type defines the type of rounding (0=nearest, -1=backward, 1=forward).
4469+ \return the rounded value, with the same type as parameter x.
4470+ **/
4471+ template<typename T>
4472+ inline T round(const T x, const double y=1, const int rounding_type=0) {
4473+ if (y<=0) return x;
4474+ const double delta = cimg::mod((double)x,y);
4475+ if (delta==0.0) return x;
4476+ if (delta==0.5*y) return (T)(x>=0?x+delta:x-delta);
4477+ const double
4478+ backward = x - delta,
4479+ forward = backward + y;
4480+ return (T)(rounding_type<0?backward:(rounding_type>0?forward:(2*delta<y?backward:forward)));
4481+ }
4482+
4483+ inline double _pythagore(double a, double b) {
4484+ const double absa = cimg::abs(a), absb = cimg::abs(b);
4485+ if (absa>absb) { const double tmp = absb/absa; return absa*std::sqrt(1.0+tmp*tmp); }
4486+ else { const double tmp = absa/absb; return (absb==0?0:absb*std::sqrt(1.0+tmp*tmp)); }
4487+ }
4488+
4489+ //! Remove the 'case' of an ASCII character.
4490+ inline char uncase(const char x) {
4491+ return (char)((x<'A'||x>'Z')?x:x-'A'+'a');
4492+ }
4493+
4494+ //! Remove the 'case' of a C string.
4495+ /**
4496+ Acts in-place.
4497+ **/
4498+ inline void uncase(char *const string) {
4499+ if (string) for (char *ptr = string; *ptr; ++ptr) *ptr = uncase(*ptr);
4500+ }
4501+
4502+ //! Read a double number from a C-string.
4503+ /**
4504+ \note This function is quite similar to <tt>std::atof()</tt>,
4505+ but that it allows the retrieval of fractions as in "1/2".
4506+ **/
4507+ inline double atof(const char *const str) {
4508+ double x = 0, y = 1;
4509+ if (!str) return 0; else { std::sscanf(str,"%lf/%lf",&x,&y); return x/y; }
4510+ }
4511+
4512+ //! Compare the first \p n characters of two C-strings, ignoring the case.
4513+ /**
4514+ \note This function is defined since it is not provided by all compilers
4515+ (not an ANSI function).
4516+ **/
4517+ inline int strncasecmp(const char *const s1, const char *const s2, const int l) {
4518+ if (!l) return 0;
4519+ if (!s1) return s2?-1:0;
4520+ const char *ns1 = s1, *ns2 = s2;
4521+ int k, diff = 0; for (k = 0; k<l && !(diff = uncase(*ns1)-uncase(*ns2)); ++k) { ++ns1; ++ns2; }
4522+ return k!=l?diff:0;
4523+ }
4524+
4525+ //! Compare two C-strings, ignoring the case.
4526+ /**
4527+ \note This function is defined since it is not provided by all compilers
4528+ (not an ANSI function).
4529+ **/
4530+ inline int strcasecmp(const char *const s1, const char *const s2) {
4531+ if (!s1) return s2?-1:0;
4532+ const unsigned int l1 = std::strlen(s1), l2 = std::strlen(s2);
4533+ return cimg::strncasecmp(s1,s2,1+(l1<l2?l1:l2));
4534+ }
4535+
4536+ //! Remove useless delimiters on the borders of a C-string
4537+ inline bool strpare(char *const s, const char delimiter=' ', const bool symmetric=false, const bool is_iterative=false) {
4538+ if (!s) return false;
4539+ const int l = (int)std::strlen(s);
4540+ int p, q;
4541+ if (symmetric) for (p = 0, q = l-1; p<q && s[p]==delimiter && s[q]==delimiter; ) { --q; ++p; if (!is_iterative) break; }
4542+ else {
4543+ for (p = 0; p<l && s[p]==delimiter; ) { ++p; if (!is_iterative) break; }
4544+ for (q = l-1; q>p && s[q]==delimiter; ) { --q; if (!is_iterative) break; }
4545+ }
4546+ const int n = q - p + 1;
4547+ if (n!=l) { std::memmove(s,s+p,n); s[n] = 0; return true; }
4548+ return false;
4549+ }
4550+
4551+ //! Replace explicit escape sequences '\x' in C-strings.
4552+ inline void strescape(char *const s) {
4553+#define cimg_strescape(ci,co) case ci: *nd = co; ++ns; break;
4554+ static unsigned int val = 0;
4555+ for (char *ns = s, *nd = s; *ns || (bool)(*nd=0); ++nd) if (*ns=='\\') switch (*(++ns)) {
4556+ cimg_strescape('n','\n');
4557+ cimg_strescape('t','\t');
4558+ cimg_strescape('v','\v');
4559+ cimg_strescape('b','\b');
4560+ cimg_strescape('r','\r');
4561+ cimg_strescape('f','\f');
4562+ cimg_strescape('a','\a');
4563+ cimg_strescape('\\','\\');
4564+ cimg_strescape('\?','\?');
4565+ cimg_strescape('\'','\'');
4566+ cimg_strescape('\"','\"');
4567+ case 0 : *nd = 0; break;
4568+ case '0' : case '1' : case '2' : case '3' : case '4' : case '5' : case '6' : case '7' :
4569+ std::sscanf(ns,"%o",&val); while (*ns>='0' && *ns<='7') ++ns;
4570+ *nd = val; break;
4571+ case 'x':
4572+ std::sscanf(++ns,"%x",&val); while ((*ns>='0' && *ns<='7') || (*ns>='a' && *ns<='f') || (*ns>='A' && *ns<='F')) ++ns;
4573+ *nd = val; break;
4574+ default : *nd = *(ns++);
4575+ } else *nd = *(ns++);
4576+ }
4577+
4578+ // Return a temporary string describing the size of a buffer.
4579+ inline const char *strbuffersize(const unsigned long size) {
4580+ static char res[256] = { 0 };
4581+ if (size<1024LU) cimg_snprintf(res,sizeof(res),"%lu byte%s",size,size>1?"s":"");
4582+ else if (size<1024*1024LU) { const float nsize = size/1024.0f; cimg_snprintf(res,sizeof(res),"%.1f Kb",nsize); }
4583+ else if (size<1024*1024*1024LU) { const float nsize = size/(1024*1024.0f); cimg_snprintf(res,sizeof(res),"%.1f Mb",nsize); }
4584+ else { const float nsize = size/(1024*1024*1024.0f); cimg_snprintf(res,sizeof(res),"%.1f Gb",nsize); }
4585+ return res;
4586+ }
4587+
4588+ //! Compute the basename of a filename.
4589+ inline const char* basename(const char *const s) {
4590+ const char *p = 0;
4591+ for (const char *np = s; np>=s && (p=np); np = std::strchr(np,cimg_file_separator)+1) {}
4592+ return p;
4593+ }
4594+
4595+ // Generate a random filename.
4596+ inline const char* filenamerand() {
4597+ static char randomid[9] = { 0,0,0,0,0,0,0,0,0 };
4598+ cimg::srand();
4599+ for (unsigned int k = 0; k<8; ++k) {
4600+ const int v = (int)std::rand()%3;
4601+ randomid[k] = (char)(v==0?('0'+(std::rand()%10)):(v==1?('a'+(std::rand()%26)):('A'+(std::rand()%26))));
4602+ }
4603+ return randomid;
4604+ }
4605+
4606+ // Convert filename into a Windows-style filename.
4607+ inline void winformat_string(char *const s) {
4608+ if (s && *s) {
4609+#if cimg_OS==2
4610+ char *const ns = new char[MAX_PATH];
4611+ if (GetShortPathNameA(s,ns,MAX_PATH)) std::strcpy(s,ns);
4612+#endif
4613+ }
4614+ }
4615+
4616+ //! Open a file, and check for possible errors.
4617+ inline std::FILE *fopen(const char *const path, const char *const mode) {
4618+ if (!path)
4619+ throw CImgArgumentException("cimg::fopen() : Specified file path is (null).");
4620+ if (!mode)
4621+ throw CImgArgumentException("cimg::fopen() : File '%s', specified mode is (null).",
4622+ path);
4623+ std::FILE *res = 0;
4624+ if (*path=='-' && path[1]=='.') {
4625+ res = (*mode=='r')?stdin:stdout;
4626+#if cimg_OS==2
4627+ if (*mode && mode[1]=='b') { // Force stdin/stdout to be in binary mode.
4628+ //if (_setmode(_fileno(res),0x8000)==-1) res = 0;
4629+ }
4630+#endif
4631+ } else res = std::fopen(path,mode);
4632+ if (!res)
4633+ throw CImgIOException("cimg::fopen() : Failed to open file '%s' with mode '%s'.",
4634+ path,mode);
4635+ return res;
4636+ }
4637+
4638+ //! Close a file, and check for possible errors.
4639+ inline int fclose(std::FILE *file) {
4640+ if (!file) warn("cimg::fclose() : Specified file is (null).");
4641+ if (!file || file==stdin || file==stdout) return 0;
4642+ const int errn = std::fclose(file);
4643+ if (errn!=0) warn("cimg::fclose() : Error code %d returned during file closing.",
4644+ errn);
4645+ return errn;
4646+ }
4647+
4648+ //! Return or set path to store temporary files.
4649+ inline const char* temporary_path(const char *const user_path=0, const bool reinit_path=false) {
4650+#define _cimg_test_temporary_path(p) \
4651+ if (!path_found) { \
4652+ cimg_snprintf(st_path,1024,"%s",p); \
4653+ cimg_snprintf(tmp,sizeof(tmp),"%s%c%s",st_path,cimg_file_separator,filetmp); \
4654+ if ((file=std::fopen(tmp,"wb"))!=0) { cimg::fclose(file); std::remove(tmp); path_found = true; } \
4655+ }
4656+ static char *st_path = 0;
4657+ if (reinit_path) { delete[] st_path; st_path = 0; }
4658+ if (user_path) {
4659+ if (!st_path) st_path = new char[1024];
4660+ std::memset(st_path,0,1024);
4661+ std::strncpy(st_path,user_path,1023);
4662+ } else if (!st_path) {
4663+ st_path = new char[1024];
4664+ std::memset(st_path,0,1024);
4665+ bool path_found = false;
4666+ char tmp[1024] = { 0 }, filetmp[512] = { 0 };
4667+ std::FILE *file = 0;
4668+ cimg_snprintf(filetmp,sizeof(filetmp),"%s.tmp",cimg::filenamerand());
4669+ char *tmpPath = std::getenv("TMP");
4670+ if (!tmpPath) { tmpPath = std::getenv("TEMP"); winformat_string(tmpPath); }
4671+ if (tmpPath) _cimg_test_temporary_path(tmpPath);
4672+#if cimg_OS==2
4673+ _cimg_test_temporary_path("C:\\WINNT\\Temp");
4674+ _cimg_test_temporary_path("C:\\WINDOWS\\Temp");
4675+ _cimg_test_temporary_path("C:\\Temp");
4676+ _cimg_test_temporary_path("C:");
4677+ _cimg_test_temporary_path("D:\\WINNT\\Temp");
4678+ _cimg_test_temporary_path("D:\\WINDOWS\\Temp");
4679+ _cimg_test_temporary_path("D:\\Temp");
4680+ _cimg_test_temporary_path("D:");
4681+#else
4682+ _cimg_test_temporary_path("/tmp");
4683+ _cimg_test_temporary_path("/var/tmp");
4684+#endif
4685+ if (!path_found) {
4686+ *st_path = 0;
4687+ std::strncpy(tmp,filetmp,sizeof(tmp)-1);
4688+ if ((file=std::fopen(tmp,"wb"))!=0) { cimg::fclose(file); std::remove(tmp); path_found = true; }
4689+ }
4690+ if (!path_found)
4691+ throw CImgIOException("cimg::temporary_path() : Failed to locate path for writing temporary files.\n");
4692+ }
4693+ return st_path;
4694+ }
4695+
4696+ // Return or set path to the "Program files/" directory (windows only).
4697+#if cimg_OS==2
4698+ inline const char* programfiles_path(const char *const user_path=0, const bool reinit_path=false) {
4699+ static char *st_path = 0;
4700+ if (reinit_path) { delete[] st_path; st_path = 0; }
4701+ if (user_path) {
4702+ if (!st_path) st_path = new char[1024];
4703+ std::memset(st_path,0,1024);
4704+ std::strncpy(st_path,user_path,1023);
4705+ } else if (!st_path) {
4706+ st_path = new char[MAX_PATH];
4707+ std::memset(st_path,0,MAX_PATH);
4708+ // Note : in the following line, 0x26 = CSIDL_PROGRAM_FILES (not defined on every compiler).
4709+#if !defined(__INTEL_COMPILER)
4710+ if (!SHGetSpecialFolderPathA(0,st_path,0x0026,false)) {
4711+ const char *const pfPath = std::getenv("PROGRAMFILES");
4712+ if (pfPath) std::strncpy(st_path,pfPath,MAX_PATH-1);
4713+ else std::strcpy(st_path,"C:\\PROGRA~1");
4714+ }
4715+#else
4716+ std::strcpy(st_path,"C:\\PROGRA~1");
4717+#endif
4718+ }
4719+ return st_path;
4720+ }
4721+#endif
4722+
4723+ //! Return or set path to the ImageMagick's \c convert tool.
4724+ inline const char* imagemagick_path(const char *const user_path=0, const bool reinit_path=false) {
4725+ static char *st_path = 0;
4726+ if (reinit_path) { delete[] st_path; st_path = 0; }
4727+ if (user_path) {
4728+ if (!st_path) st_path = new char[1024];
4729+ std::memset(st_path,0,1024);
4730+ std::strncpy(st_path,user_path,1023);
4731+ } else if (!st_path) {
4732+ st_path = new char[1024];
4733+ std::memset(st_path,0,1024);
4734+ bool path_found = false;
4735+ std::FILE *file = 0;
4736+#if cimg_OS==2
4737+ const char *const pf_path = programfiles_path();
4738+ if (!path_found) {
4739+ std::strcpy(st_path,".\\convert.exe");
4740+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4741+ }
4742+ for (int k = 32; k>=10 && !path_found; --k) {
4743+ cimg_snprintf(st_path,sizeof(st_path),"%s\\IMAGEM~1.%.2d-\\convert.exe",pf_path,k);
4744+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4745+ }
4746+ for (int k = 9; k>=0 && !path_found; --k) {
4747+ cimg_snprintf(st_path,sizeof(st_path),"%s\\IMAGEM~1.%d-Q\\convert.exe",pf_path,k);
4748+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4749+ }
4750+ for (int k = 32; k>=0 && !path_found; --k) {
4751+ cimg_snprintf(st_path,sizeof(st_path),"%s\\IMAGEM~1.%d\\convert.exe",pf_path,k);
4752+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4753+ }
4754+ for (int k = 32; k>=10 && !path_found; --k) {
4755+ cimg_snprintf(st_path,sizeof(st_path),"%s\\IMAGEM~1.%.2d-\\VISUA~1\\BIN\\convert.exe",pf_path,k);
4756+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4757+ }
4758+ for (int k = 9; k>=0 && !path_found; --k) {
4759+ cimg_snprintf(st_path,sizeof(st_path),"%s\\IMAGEM~1.%d-Q\\VISUA~1\\BIN\\convert.exe",pf_path,k);
4760+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4761+ }
4762+ for (int k = 32; k>=0 && !path_found; --k) {
4763+ cimg_snprintf(st_path,sizeof(st_path),"%s\\IMAGEM~1.%d\\VISUA~1\\BIN\\convert.exe",pf_path,k);
4764+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4765+ }
4766+ for (int k = 32; k>=10 && !path_found; --k) {
4767+ cimg_snprintf(st_path,sizeof(st_path),"C:\\IMAGEM~1.%.2d-\\convert.exe",k);
4768+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4769+ }
4770+ for (int k = 9; k>=0 && !path_found; --k) {
4771+ cimg_snprintf(st_path,sizeof(st_path),"C:\\IMAGEM~1.%d-Q\\convert.exe",k);
4772+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4773+ }
4774+ for (int k = 32; k>=0 && !path_found; --k) {
4775+ cimg_snprintf(st_path,sizeof(st_path),"C:\\IMAGEM~1.%d\\convert.exe",k);
4776+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4777+ }
4778+ for (int k = 32; k>=10 && !path_found; --k) {
4779+ cimg_snprintf(st_path,sizeof(st_path),"C:\\IMAGEM~1.%.2d-\\VISUA~1\\BIN\\convert.exe",k);
4780+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4781+ }
4782+ for (int k = 9; k>=0 && !path_found; --k) {
4783+ cimg_snprintf(st_path,sizeof(st_path),"C:\\IMAGEM~1.%d-Q\\VISUA~1\\BIN\\convert.exe",k);
4784+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4785+ }
4786+ for (int k = 32; k>=0 && !path_found; --k) {
4787+ cimg_snprintf(st_path,sizeof(st_path),"C:\\IMAGEM~1.%d\\VISUA~1\\BIN\\convert.exe",k);
4788+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4789+ }
4790+ for (int k = 32; k>=10 && !path_found; --k) {
4791+ cimg_snprintf(st_path,sizeof(st_path),"D:\\IMAGEM~1.%.2d-\\convert.exe",k);
4792+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4793+ }
4794+ for (int k = 9; k>=0 && !path_found; --k) {
4795+ cimg_snprintf(st_path,sizeof(st_path),"D:\\IMAGEM~1.%d-Q\\convert.exe",k);
4796+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4797+ }
4798+ for (int k = 32; k>=0 && !path_found; --k) {
4799+ cimg_snprintf(st_path,sizeof(st_path),"D:\\IMAGEM~1.%d\\convert.exe",k);
4800+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4801+ }
4802+ for (int k = 32; k>=10 && !path_found; --k) {
4803+ cimg_snprintf(st_path,sizeof(st_path),"D:\\IMAGEM~1.%.2d-\\VISUA~1\\BIN\\convert.exe",k);
4804+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4805+ }
4806+ for (int k = 9; k>=0 && !path_found; --k) {
4807+ cimg_snprintf(st_path,sizeof(st_path),"D:\\IMAGEM~1.%d-Q\\VISUA~1\\BIN\\convert.exe",k);
4808+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4809+ }
4810+ for (int k = 32; k>=0 && !path_found; --k) {
4811+ cimg_snprintf(st_path,sizeof(st_path),"D:\\IMAGEM~1.%d\\VISUA~1\\BIN\\convert.exe",k);
4812+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4813+ }
4814+ if (!path_found) std::strcpy(st_path,"convert.exe");
4815+#else
4816+ if (!path_found) {
4817+ std::strcpy(st_path,"./convert");
4818+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4819+ }
4820+ if (!path_found) std::strcpy(st_path,"convert");
4821+#endif
4822+ winformat_string(st_path);
4823+ }
4824+ return st_path;
4825+ }
4826+
4827+ //! Return path of the GraphicsMagick's \c gm tool.
4828+ inline const char* graphicsmagick_path(const char *const user_path=0, const bool reinit_path=false) {
4829+ static char *st_path = 0;
4830+ if (reinit_path) { delete[] st_path; st_path = 0; }
4831+ if (user_path) {
4832+ if (!st_path) st_path = new char[1024];
4833+ std::memset(st_path,0,1024);
4834+ std::strncpy(st_path,user_path,1023);
4835+ } else if (!st_path) {
4836+ st_path = new char[1024];
4837+ std::memset(st_path,0,1024);
4838+ bool path_found = false;
4839+ std::FILE *file = 0;
4840+#if cimg_OS==2
4841+ const char *const pf_path = programfiles_path();
4842+ if (!path_found) {
4843+ std::strcpy(st_path,".\\gm.exe");
4844+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4845+ }
4846+ for (int k = 32; k>=10 && !path_found; --k) {
4847+ cimg_snprintf(st_path,sizeof(st_path),"%s\\GRAPHI~1.%.2d-\\gm.exe",pf_path,k);
4848+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4849+ }
4850+ for (int k = 9; k>=0 && !path_found; --k) {
4851+ cimg_snprintf(st_path,sizeof(st_path),"%s\\GRAPHI~1.%d-Q\\gm.exe",pf_path,k);
4852+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4853+ }
4854+ for (int k = 32; k>=0 && !path_found; --k) {
4855+ cimg_snprintf(st_path,sizeof(st_path),"%s\\GRAPHI~1.%d\\gm.exe",pf_path,k);
4856+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4857+ }
4858+ for (int k = 32; k>=10 && !path_found; --k) {
4859+ cimg_snprintf(st_path,sizeof(st_path),"%s\\GRAPHI~1.%.2d-\\VISUA~1\\BIN\\gm.exe",pf_path,k);
4860+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4861+ }
4862+ for (int k = 9; k>=0 && !path_found; --k) {
4863+ cimg_snprintf(st_path,sizeof(st_path),"%s\\GRAPHI~1.%d-Q\\VISUA~1\\BIN\\gm.exe",pf_path,k);
4864+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4865+ }
4866+ for (int k = 32; k>=0 && !path_found; --k) {
4867+ cimg_snprintf(st_path,sizeof(st_path),"%s\\GRAPHI~1.%d\\VISUA~1\\BIN\\gm.exe",pf_path,k);
4868+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4869+ }
4870+ for (int k = 32; k>=10 && !path_found; --k) {
4871+ cimg_snprintf(st_path,sizeof(st_path),"C:\\GRAPHI~1.%.2d-\\gm.exe",k);
4872+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4873+ }
4874+ for (int k = 9; k>=0 && !path_found; --k) {
4875+ cimg_snprintf(st_path,sizeof(st_path),"C:\\GRAPHI~1.%d-Q\\gm.exe",k);
4876+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4877+ }
4878+ for (int k = 32; k>=0 && !path_found; --k) {
4879+ cimg_snprintf(st_path,sizeof(st_path),"C:\\GRAPHI~1.%d\\gm.exe",k);
4880+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4881+ }
4882+ for (int k = 32; k>=10 && !path_found; --k) {
4883+ cimg_snprintf(st_path,sizeof(st_path),"C:\\GRAPHI~1.%.2d-\\VISUA~1\\BIN\\gm.exe",k);
4884+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4885+ }
4886+ for (int k = 9; k>=0 && !path_found; --k) {
4887+ cimg_snprintf(st_path,sizeof(st_path),"C:\\GRAPHI~1.%d-Q\\VISUA~1\\BIN\\gm.exe",k);
4888+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4889+ }
4890+ for (int k = 32; k>=0 && !path_found; --k) {
4891+ cimg_snprintf(st_path,sizeof(st_path),"C:\\GRAPHI~1.%d\\VISUA~1\\BIN\\gm.exe",k);
4892+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4893+ }
4894+ for (int k = 32; k>=10 && !path_found; --k) {
4895+ cimg_snprintf(st_path,sizeof(st_path),"D:\\GRAPHI~1.%.2d-\\gm.exe",k);
4896+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4897+ }
4898+ for (int k = 9; k>=0 && !path_found; --k) {
4899+ cimg_snprintf(st_path,sizeof(st_path),"D:\\GRAPHI~1.%d-Q\\gm.exe",k);
4900+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4901+ }
4902+ for (int k = 32; k>=0 && !path_found; --k) {
4903+ cimg_snprintf(st_path,sizeof(st_path),"D:\\GRAPHI~1.%d\\gm.exe",k);
4904+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4905+ }
4906+ for (int k = 32; k>=10 && !path_found; --k) {
4907+ cimg_snprintf(st_path,sizeof(st_path),"D:\\GRAPHI~1.%.2d-\\VISUA~1\\BIN\\gm.exe",k);
4908+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4909+ }
4910+ for (int k = 9; k>=0 && !path_found; --k) {
4911+ cimg_snprintf(st_path,sizeof(st_path),"D:\\GRAPHI~1.%d-Q\\VISUA~1\\BIN\\gm.exe",k);
4912+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4913+ }
4914+ for (int k = 32; k>=0 && !path_found; --k) {
4915+ cimg_snprintf(st_path,sizeof(st_path),"D:\\GRAPHI~1.%d\\VISUA~1\\BIN\\gm.exe",k);
4916+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4917+ }
4918+ if (!path_found) std::strcpy(st_path,"gm.exe");
4919+#else
4920+ if (!path_found) {
4921+ std::strcpy(st_path,"./gm");
4922+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4923+ }
4924+ if (!path_found) std::strcpy(st_path,"gm");
4925+#endif
4926+ winformat_string(st_path);
4927+ }
4928+ return st_path;
4929+ }
4930+
4931+ //! Return or set path of the \c XMedcon tool.
4932+ inline const char* medcon_path(const char *const user_path=0, const bool reinit_path=false) {
4933+ static char *st_path = 0;
4934+ if (reinit_path) { delete[] st_path; st_path = 0; }
4935+ if (user_path) {
4936+ if (!st_path) st_path = new char[1024];
4937+ std::memset(st_path,0,1024);
4938+ std::strncpy(st_path,user_path,1023);
4939+ } else if (!st_path) {
4940+ st_path = new char[1024];
4941+ std::memset(st_path,0,1024);
4942+ bool path_found = false;
4943+ std::FILE *file = 0;
4944+#if cimg_OS==2
4945+ const char *const pf_path = programfiles_path();
4946+ if (!path_found) {
4947+ std::strcpy(st_path,".\\medcon.exe");
4948+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4949+ }
4950+ if (!path_found) {
4951+ cimg_snprintf(st_path,sizeof(st_path),"%s\\XMedCon\\bin\\medcon.bat",pf_path);
4952+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4953+ }
4954+ if (!path_found) {
4955+ cimg_snprintf(st_path,sizeof(st_path),"%s\\XMedCon\\bin\\medcon.exe",pf_path);
4956+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4957+ }
4958+ if (!path_found) std::strcpy(st_path,"medcon.exe");
4959+#else
4960+ if (!path_found) {
4961+ std::strcpy(st_path,"./medcon");
4962+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4963+ }
4964+ if (!path_found) std::strcpy(st_path,"medcon");
4965+#endif
4966+ winformat_string(st_path);
4967+ }
4968+ return st_path;
4969+ }
4970+
4971+ //! Return or set path to the 'ffmpeg' command.
4972+ inline const char *ffmpeg_path(const char *const user_path=0, const bool reinit_path=false) {
4973+ static char *st_path = 0;
4974+ if (reinit_path) { delete[] st_path; st_path = 0; }
4975+ if (user_path) {
4976+ if (!st_path) st_path = new char[1024];
4977+ std::memset(st_path,0,1024);
4978+ std::strncpy(st_path,user_path,1023);
4979+ } else if (!st_path) {
4980+ st_path = new char[1024];
4981+ std::memset(st_path,0,1024);
4982+ bool path_found = false;
4983+ std::FILE *file = 0;
4984+#if cimg_OS==2
4985+ if (!path_found) {
4986+ std::strcpy(st_path,".\\ffmpeg.exe");
4987+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4988+ }
4989+ if (!path_found) std::strcpy(st_path,"ffmpeg.exe");
4990+#else
4991+ if (!path_found) {
4992+ std::strcpy(st_path,"./ffmpeg");
4993+ if ((file=std::fopen(st_path,"r"))!=0) { cimg::fclose(file); path_found = true; }
4994+ }
4995+ if (!path_found) std::strcpy(st_path,"ffmpeg");
4996+#endif
4997+ winformat_string(st_path);
4998+ }
4999+ return st_path;
5000+ }
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches